| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'dart:async'; | 5 import 'dart:async'; |
| 6 | 6 |
| 7 import 'package:front_end/memory_file_system.dart'; | 7 import 'package:front_end/memory_file_system.dart'; |
| 8 import 'package:front_end/src/fasta/translate_uri.dart'; | 8 import 'package:front_end/src/fasta/translate_uri.dart'; |
| 9 import 'package:front_end/src/incremental/file_state.dart'; | 9 import 'package:front_end/src/incremental/file_state.dart'; |
| 10 import 'package:test/test.dart'; | 10 import 'package:test/test.dart'; |
| 11 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 11 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 12 | 12 |
| 13 import 'mock_sdk.dart'; | 13 import 'mock_sdk.dart'; |
| 14 | 14 |
| 15 main() { | 15 main() { |
| 16 defineReflectiveSuite(() { | 16 defineReflectiveSuite(() { |
| 17 defineReflectiveTests(FileSystemStateTest); | 17 defineReflectiveTests(FileSystemStateTest); |
| 18 }); | 18 }); |
| 19 } | 19 } |
| 20 | 20 |
| 21 @reflectiveTest | 21 @reflectiveTest |
| 22 class FileSystemStateTest { | 22 class FileSystemStateTest { |
| 23 final fileSystem = new MemoryFileSystem(Uri.parse('file:///')); | 23 final fileSystem = new MemoryFileSystem(Uri.parse('file:///')); |
| 24 final TranslateUri uriTranslator = new TranslateUri({}, {}, {}); | 24 final TranslateUri uriTranslator = new TranslateUri({}, {}, {}); |
| 25 FileSystemState fsState; | 25 FileSystemState fsState; |
| 26 | 26 |
| 27 Uri _coreUri; | 27 Uri _coreUri; |
| 28 List<Uri> _newFileUris = <Uri>[]; |
| 28 | 29 |
| 29 void setUp() { | 30 void setUp() { |
| 30 Map<String, Uri> dartLibraries = createSdkFiles(fileSystem); | 31 Map<String, Uri> dartLibraries = createSdkFiles(fileSystem); |
| 31 uriTranslator.dartLibraries.addAll(dartLibraries); | 32 uriTranslator.dartLibraries.addAll(dartLibraries); |
| 32 _coreUri = Uri.parse('dart:core'); | 33 _coreUri = Uri.parse('dart:core'); |
| 33 expect(_coreUri, isNotNull); | 34 expect(_coreUri, isNotNull); |
| 34 fsState = new FileSystemState(fileSystem, uriTranslator, <int>[]); | 35 fsState = new FileSystemState(fileSystem, uriTranslator, <int>[], (uri) { |
| 36 _newFileUris.add(uri); |
| 37 return new Future.value(); |
| 38 }); |
| 35 } | 39 } |
| 36 | 40 |
| 37 test_apiSignature() async { | 41 test_apiSignature() async { |
| 38 var path = '/a.dart'; | 42 var path = '/a.dart'; |
| 39 var uri = writeFile(path, ''); | 43 var uri = writeFile(path, ''); |
| 40 FileState file = await fsState.getFile(uri); | 44 FileState file = await fsState.getFile(uri); |
| 41 | 45 |
| 42 List<int> lastSignature = file.apiSignature; | 46 List<int> lastSignature = file.apiSignature; |
| 43 | 47 |
| 44 /// Assert that the given [newCode] has the same API signature as | 48 /// Assert that the given [newCode] has the same API signature as |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 expect(export_.combinators[1].names, unorderedEquals(['C'])); | 229 expect(export_.combinators[1].names, unorderedEquals(['C'])); |
| 226 expect(export_.combinators[2].isShow, isTrue); | 230 expect(export_.combinators[2].isShow, isTrue); |
| 227 expect(export_.combinators[2].names, unorderedEquals(['A', 'D'])); | 231 expect(export_.combinators[2].names, unorderedEquals(['A', 'D'])); |
| 228 expect(export_.isExposed('A'), isTrue); | 232 expect(export_.isExposed('A'), isTrue); |
| 229 expect(export_.isExposed('B'), isFalse); | 233 expect(export_.isExposed('B'), isFalse); |
| 230 expect(export_.isExposed('C'), isFalse); | 234 expect(export_.isExposed('C'), isFalse); |
| 231 expect(export_.isExposed('D'), isTrue); | 235 expect(export_.isExposed('D'), isTrue); |
| 232 } | 236 } |
| 233 } | 237 } |
| 234 | 238 |
| 239 test_newFileListener() async { |
| 240 var a = writeFile('/a.dart', ''); |
| 241 var b = writeFile('/b.dart', ''); |
| 242 var c = writeFile( |
| 243 '/c.dart', |
| 244 r''' |
| 245 import 'a.dart'; |
| 246 '''); |
| 247 |
| 248 FileState cFile = await fsState.getFile(c); |
| 249 |
| 250 // c.dart uses c.dart and a.dart, but not b.dart yet. |
| 251 expect(_newFileUris, contains(c)); |
| 252 expect(_newFileUris, contains(a)); |
| 253 expect(_newFileUris, isNot(contains(b))); |
| 254 _newFileUris.clear(); |
| 255 |
| 256 // Update c.dart to use b.dart too. |
| 257 writeFile( |
| 258 '/c.dart', |
| 259 r''' |
| 260 import 'a.dart'; |
| 261 import 'b.dart'; |
| 262 '''); |
| 263 await cFile.refresh(); |
| 264 |
| 265 // b.dart is the only new file. |
| 266 expect(_newFileUris, [b]); |
| 267 } |
| 268 |
| 235 test_topologicalOrder_cycleBeforeTarget() async { | 269 test_topologicalOrder_cycleBeforeTarget() async { |
| 236 var aUri = _writeFileDirectives('/a.dart'); | 270 var aUri = _writeFileDirectives('/a.dart'); |
| 237 var bUri = _writeFileDirectives('/b.dart', imports: ['c.dart']); | 271 var bUri = _writeFileDirectives('/b.dart', imports: ['c.dart']); |
| 238 var cUri = _writeFileDirectives('/c.dart', imports: ['b.dart']); | 272 var cUri = _writeFileDirectives('/c.dart', imports: ['b.dart']); |
| 239 var dUri = _writeFileDirectives('/d.dart', imports: ['a.dart', 'b.dart']); | 273 var dUri = _writeFileDirectives('/d.dart', imports: ['a.dart', 'b.dart']); |
| 240 | 274 |
| 241 FileState core = await fsState.getFile(_coreUri); | 275 FileState core = await fsState.getFile(_coreUri); |
| 242 FileState a = await fsState.getFile(aUri); | 276 FileState a = await fsState.getFile(aUri); |
| 243 FileState b = await fsState.getFile(bUri); | 277 FileState b = await fsState.getFile(bUri); |
| 244 FileState c = await fsState.getFile(cUri); | 278 FileState c = await fsState.getFile(cUri); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 Uri _writeFileDirectives(String path, | 343 Uri _writeFileDirectives(String path, |
| 310 {List<String> imports: const [], List<String> exports: const []}) { | 344 {List<String> imports: const [], List<String> exports: const []}) { |
| 311 return writeFile( | 345 return writeFile( |
| 312 path, | 346 path, |
| 313 ''' | 347 ''' |
| 314 ${imports.map((uri) => 'import "$uri";').join('\n')} | 348 ${imports.map((uri) => 'import "$uri";').join('\n')} |
| 315 ${exports.map((uri) => 'export "$uri";').join('\n')} | 349 ${exports.map((uri) => 'export "$uri";').join('\n')} |
| 316 '''); | 350 '''); |
| 317 } | 351 } |
| 318 } | 352 } |
| OLD | NEW |