OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 library test.services.dependencies.import_collector; |
| 6 |
| 7 import 'package:analysis_server/src/services/dependencies/reachable_source_colle
ctor.dart'; |
| 8 import 'package:analyzer/src/generated/ast.dart'; |
| 9 import 'package:analyzer/src/generated/source.dart'; |
| 10 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 11 import 'package:unittest/unittest.dart'; |
| 12 |
| 13 import '../../abstract_context.dart'; |
| 14 import '../../utils.dart'; |
| 15 |
| 16 main() { |
| 17 initializeTestEnvironment(); |
| 18 defineReflectiveTests(ReachableSourceCollectorTest); |
| 19 } |
| 20 |
| 21 @reflectiveTest |
| 22 class ReachableSourceCollectorTest extends AbstractContextTest { |
| 23 CompilationUnit addLibrary(String path, String contents) => |
| 24 resolveLibraryUnit(addSource(path, contents)); |
| 25 |
| 26 Map<String, List<String>> importsFor(Source source) => |
| 27 new ReachableSourceCollector(source, context).collectSources(); |
| 28 |
| 29 test_null_context() { |
| 30 Source lib = addSource('/lib.dart', ''); |
| 31 expect(() => new ReachableSourceCollector(lib, null), |
| 32 throwsA(new isInstanceOf<ArgumentError>())); |
| 33 } |
| 34 |
| 35 test_null_source() { |
| 36 expect(() => new ReachableSourceCollector(null, context), |
| 37 throwsA(new isInstanceOf<ArgumentError>())); |
| 38 } |
| 39 |
| 40 test_sources() { |
| 41 Source lib1 = addSource( |
| 42 '/lib1.dart', |
| 43 ''' |
| 44 import "lib2.dart"; |
| 45 import "dart:html";'''); |
| 46 Source lib2 = addSource('/lib2.dart', 'import "lib1.dart";'); |
| 47 |
| 48 Source lib3 = addSource('/lib3.dart', 'import "lib4.dart";'); |
| 49 addSource('/lib4.dart', 'import "lib3.dart";'); |
| 50 |
| 51 Map<String, List<String>> imports = importsFor(lib1); |
| 52 |
| 53 // Verify keys. |
| 54 expect( |
| 55 imports.keys, |
| 56 unorderedEquals([ |
| 57 'dart:_internal', |
| 58 'dart:async', |
| 59 'dart:core', |
| 60 'dart:html', |
| 61 'dart:math', |
| 62 'file:///lib1.dart', |
| 63 'file:///lib2.dart', |
| 64 ])); |
| 65 // Values. |
| 66 expect(imports['file:///lib1.dart'], |
| 67 unorderedEquals(['dart:core', 'dart:html', 'file:///lib2.dart'])); |
| 68 |
| 69 // Check transitivity. |
| 70 expect(importsFor(lib2).keys, contains('dart:html')); |
| 71 |
| 72 // Cycles should be OK. |
| 73 expect( |
| 74 importsFor(lib3).keys, |
| 75 unorderedEquals([ |
| 76 'dart:_internal', |
| 77 'dart:async', |
| 78 'dart:core', |
| 79 'dart:math', |
| 80 'file:///lib3.dart', |
| 81 'file:///lib4.dart' |
| 82 ])); |
| 83 } |
| 84 } |
OLD | NEW |