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

Unified Diff: pkg/front_end/test/src/incremental/file_state_test.dart

Issue 2926883003: Compute API signatures of files. (Closed)
Patch Set: Created 3 years, 6 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/front_end/test/src/incremental/file_state_test.dart
diff --git a/pkg/front_end/test/src/incremental/file_state_test.dart b/pkg/front_end/test/src/incremental/file_state_test.dart
index affeb0e2aa4f717aa13b8a45b353b0ec68fca3cf..2a4b6546954d61702341ef497598a502364650ba 100644
--- a/pkg/front_end/test/src/incremental/file_state_test.dart
+++ b/pkg/front_end/test/src/incremental/file_state_test.dart
@@ -2,6 +2,8 @@
// 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.
+import 'dart:async';
+
import 'package:front_end/memory_file_system.dart';
import 'package:front_end/src/fasta/translate_uri.dart';
import 'package:front_end/src/incremental/file_state.dart';
@@ -29,7 +31,110 @@ class FileSystemStateTest {
uriTranslator.dartLibraries.addAll(dartLibraries);
_coreUri = Uri.parse('dart:core');
expect(_coreUri, isNotNull);
- fsState = new FileSystemState(fileSystem, uriTranslator);
+ fsState = new FileSystemState(fileSystem, uriTranslator, <int>[]);
+ }
+
+ test_apiSignature() async {
+ var path = '/a.dart';
+ var uri = writeFile(path, '');
+ FileState file = await fsState.getFile(uri);
+
+ List<int> lastSignature = file.apiSignature;
+
+ /// Assert that the given [newCode] has the same API signature as
+ /// the last computed.
+ Future<Null> assertSameSignature(String newCode) async {
+ writeFile(path, newCode);
+ await file.refresh();
+ List<int> newSignature = file.apiSignature;
+ expect(newSignature, lastSignature);
+ }
+
+ /// Assert that the given [newCode] does not have the same API signature as
+ /// the last computed, and update the last signature to the new one.
+ Future<Null> assertNotSameSignature(String newCode) async {
+ writeFile(path, newCode);
+ await file.refresh();
+ List<int> newSignature = file.apiSignature;
+ expect(newSignature, isNot(lastSignature));
+ lastSignature = newSignature;
+ }
+
+ await assertNotSameSignature('''
+var v = 1;
+foo() {
+ print(2);
+}
+bar() {
+ print(3);
+}
+baz() => 4;
+''');
+
+ // [S] Add comments.
+ await assertSameSignature('''
+var v = 1; // comment
+/// comment 1
+/// comment 2
+foo() {
+ print(2);
+}
+bar() {
+ print(3);
+}
+/**
+ * Comment
+ */
+baz() => 4;
+''');
+
+ // [S] Remove comments.
+ await assertSameSignature('''
+var v = 1;
+foo() {
+ print(2);
+}
+bar() {
+ print(3);
+}
+baz() => 4;
+''');
+
+ // [NS] Change the top-level variable initializer.
+ await assertNotSameSignature('''
+var v = 11;
+foo() {
+ print(2);
+}
+bar() {
+ print(3);
+}
+baz() => 4;
+''');
+
+ // [S] Change in a block function body.
+ await assertSameSignature('''
+var v = 11;
+foo() {
+ print(22);
+}
+bar() {
+ print(33);
+}
+baz() => 4;
+''');
+
+ // [NS] Change in an expression function body.
+ await assertNotSameSignature('''
+var v = 11;
+foo() {
+ print(22);
+}
+bar() {
+ print(33);
+}
+baz() => 44;
+''');
}
test_getFile() async {

Powered by Google App Engine
This is Rietveld 408576698