Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2130)

Unified Diff: pkg/analyzer/test/src/summary/summarize_elements_test.dart

Issue 1606123003: Split summary_test into multiple files. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/test/src/summary/summarize_elements_test.dart
diff --git a/pkg/analyzer/test/src/summary/summarize_elements_test.dart b/pkg/analyzer/test/src/summary/summarize_elements_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..7101f50ceed4c5f506b3f7e075f95d8e87135ffc
--- /dev/null
+++ b/pkg/analyzer/test/src/summary/summarize_elements_test.dart
@@ -0,0 +1,147 @@
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library analyzer.test.src.summary.summarize_elements_test;
+
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/source_io.dart';
+import 'package:analyzer/src/summary/format.dart';
+import 'package:analyzer/src/summary/public_namespace_computer.dart'
+ as public_namespace;
+import 'package:analyzer/src/summary/summarize_elements.dart'
+ as summarize_elements;
+import 'package:unittest/unittest.dart';
+
+import '../../generated/resolver_test.dart';
+import '../../reflective_tests.dart';
+import 'summary_common.dart';
+
+main() {
+ groupSep = ' | ';
+ runReflectiveTests(SummarizeElementsTest);
+}
+
+/**
+ * Override of [SummaryTest] which creates summaries from the element model.
+ */
+@reflectiveTest
+class SummarizeElementsTest extends ResolverTestCase with SummaryTest {
+ /**
+ * The list of absolute unit URIs corresponding to the compilation units in
+ * [unlinkedUnits].
+ */
+ List<String> unitUris;
+
+ /**
+ * Map containing all source files in this test, and their corresponding file
+ * contents.
+ */
+ final Map<Source, String> _fileContents = <Source, String>{};
+
+ @override
+ LinkedLibrary linked;
+
+ @override
+ List<UnlinkedUnit> unlinkedUnits;
+
+ @override
+ bool get checkAstDerivedData => false;
+
+ @override
+ bool get expectAbsoluteUrisInDependencies => true;
+
+ @override
+ bool get skipFullyLinkedData => false;
+
+ @override
+ Source addNamedSource(String filePath, String contents) {
+ Source source = super.addNamedSource(filePath, contents);
+ _fileContents[source] = contents;
+ return source;
+ }
+
+ /**
+ * Serialize the library containing the given class [element], then
+ * deserialize it and return the summary of the class.
+ */
+ UnlinkedClass serializeClassElement(ClassElement element) {
+ serializeLibraryElement(element.library);
+ return findClass(element.name, failIfAbsent: true);
+ }
+
+ /**
+ * Serialize the given [library] element, then deserialize it and store the
+ * resulting summary in [linked] and [unlinkedUnits].
+ */
+ void serializeLibraryElement(LibraryElement library) {
+ summarize_elements.LibrarySerializationResult serializedLib =
+ summarize_elements.serializeLibrary(library, typeProvider);
+ {
+ List<int> buffer = serializedLib.linked.toBuffer();
+ linked = new LinkedLibrary.fromBuffer(buffer);
+ }
+ unlinkedUnits = serializedLib.unlinkedUnits.map((UnlinkedUnitBuilder b) {
+ List<int> buffer = b.toBuffer();
+ return new UnlinkedUnit.fromBuffer(buffer);
+ }).toList();
+ unitUris = serializedLib.unitUris;
+ }
+
+ @override
+ void serializeLibraryText(String text, {bool allowErrors: false}) {
+ Source source = addSource(text);
+ _fileContents[source] = text;
+ LibraryElement library = resolve2(source);
+ if (!allowErrors) {
+ assertNoErrors(source);
+ }
+ serializeLibraryElement(library);
+ expect(unlinkedUnits[0].imports.length, linked.importDependencies.length);
+ expect(linked.units.length, unlinkedUnits.length);
+ for (int i = 0; i < linked.units.length; i++) {
+ expect(unlinkedUnits[i].references.length,
+ lessThanOrEqualTo(linked.units[i].references.length));
+ }
+ verifyPublicNamespace();
+ }
+
+ @override
+ void setUp() {
+ super.setUp();
+ AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+ options.enableGenericMethods = true;
+ resetWithOptions(options);
+ }
+
+ test_class_no_superclass() {
+ UnlinkedClass cls = serializeClassElement(typeProvider.objectType.element);
+ expect(cls.supertype, isNull);
+ expect(cls.hasNoSupertype, isTrue);
+ }
+
+ /**
+ * Verify that [public_namespace.computePublicNamespace] produces data that's
+ * equivalent to that produced by [summarize_elements.serializeLibrary].
+ */
+ void verifyPublicNamespace() {
+ for (int i = 0; i < unlinkedUnits.length; i++) {
+ Source source = analysisContext.sourceFactory.forUri(unitUris[i]);
+ String text = _fileContents[source];
+ if (text == null) {
+ if (!allowMissingFiles) {
+ fail('Could not find file while verifying public namespace: '
+ '${unitUris[i]}');
+ }
+ } else {
+ UnlinkedPublicNamespace namespace =
+ computePublicNamespaceFromText(text, source);
+ expect(canonicalize(namespace),
+ canonicalize(unlinkedUnits[i].publicNamespace),
+ reason: 'publicNamespace(${unitUris[i]})');
+ }
+ }
+ }
+}
« no previous file with comments | « pkg/analyzer/test/src/summary/summarize_ast_test.dart ('k') | pkg/analyzer/test/src/summary/summary_common.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698