Index: runtime/bin/vmservice/client/tests/class_parser_test.dart |
diff --git a/runtime/bin/vmservice/client/tests/class_parser_test.dart b/runtime/bin/vmservice/client/tests/class_parser_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2428d30f8d7fdfdefa074dcf03ded7f553874e66 |
--- /dev/null |
+++ b/runtime/bin/vmservice/client/tests/class_parser_test.dart |
@@ -0,0 +1,142 @@ |
+// Copyright (c) 2014, 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. |
+ |
+part of observatory_test; |
+ |
+_prepareSource(String rawSource) { |
+ List<ScriptLine> source = []; |
+ List parts = rawSource.split('\n'); |
+ for (var i = 0; i < parts.length; i++) { |
+ source.add(new ScriptLine(i + 1, parts[i])); |
+ } |
+ return source; |
+} |
+ |
+runClassParserTest() { |
+ group('ClassParser', () { |
+ test('Empty', () { |
+ String rawSource = r""" |
+class EmptyClass {}"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [1, 19]); |
+ }); |
+ |
+ test('Simple', () { |
+ String rawSource = r""" |
+class TestClass { |
+ Simple(); |
+}"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [3, 1]); |
+ }); |
+ |
+ test('WithSingleQuotedString', () { |
+ String rawSource = r""" |
+class TestClass { |
+ String a = '}'; |
+ }"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [3, 2]); |
+ }); |
+ |
+ test('WithDoubleQuotedString', () { |
+ String rawSource = r""" |
+class TestClass { |
+ String a = "}"; |
+ }"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [3, 3]); |
+ }); |
+ |
+ test('WithSingleQuotedMultilineString', () { |
+ String rawSource = r""" |
+class TestClass { |
+ String a = ''' |
+}{}'''; |
+}"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [4, 1]); |
+ }); |
+ |
+ test('WithDoubleQuotedMultilineString', () { |
+ String rawSource = r''' |
+class TestClass { |
+ String a = """ |
+}{}"""; |
+}'''; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [4, 1]); |
+ }); |
+ |
+ test('WithSingleQuotedEscape', () { |
+ String rawSource = r''' |
+class TestClass { |
+ String a = '\'}'; |
+ |
+ }'''; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [4, 2]); |
+ }); |
+ |
+ test('WithDoubleQuotedEscape', () { |
+ String rawSource = r""" |
+class TestClass { |
+ String a = "\"}"; |
+}"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [3, 1]); |
+ }); |
+ |
+ test('WithSinglelineComments', () { |
+ String rawSource = r""" |
+class TestClass { |
+ // } |
+ // -- } // } |
+ // } |
+}"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [5, 1]); |
+ }); |
+ |
+ test('WithMultilineComments', () { |
+ String rawSource = r""" |
+class TestClass { |
+ /* |
+ /* } */ |
+ // |
+ */ |
+ }"""; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [6, 2]); |
+ }); |
+ |
+ test('LittleBitOfEverything', () { |
+ String rawSource = r''' |
+class TestClass { |
+ /** |
+ * } |
+ */ |
+ var a = """ |
+\'\"\"\"} |
+"""; |
+ // foo |
+ bar() { return "'\'}"; } |
+ /* /* */ /* } */ */ |
+}'''; |
+ List<ScriptLine> source = _prepareSource(rawSource); |
+ ClassParser clsp = new ClassParser(source); |
+ expect(clsp.findEndPos(), [11, 1]); |
+ }); |
+ }); |
+} |