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

Unified Diff: pkg/analyzer_experimental/test/services/formatter_test.dart

Issue 45573002: Rename analyzer_experimental to analyzer. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Tweaks before publishing. Created 7 years, 2 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_experimental/test/services/formatter_test.dart
diff --git a/pkg/analyzer_experimental/test/services/formatter_test.dart b/pkg/analyzer_experimental/test/services/formatter_test.dart
deleted file mode 100644
index 28c328fdff8b04d2e61f88e4cacae10a5f835535..0000000000000000000000000000000000000000
--- a/pkg/analyzer_experimental/test/services/formatter_test.dart
+++ /dev/null
@@ -1,1076 +0,0 @@
-// Copyright (c) 2013, 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.
-
-import 'package:unittest/unittest.dart';
-
-import 'package:analyzer_experimental/src/generated/java_core.dart' show CharSequence;
-import 'package:analyzer_experimental/src/generated/scanner.dart';
-import 'package:analyzer_experimental/src/services/formatter_impl.dart';
-import 'package:analyzer_experimental/src/services/writer.dart';
-
-main() {
-
- /// Formatter tests
- group('formatter', () {
-
- test('failed parse', () {
- var formatter = new CodeFormatter();
- expect(() => formatter.format(CodeKind.COMPILATION_UNIT, '~'),
- throwsA(new isInstanceOf<FormatterException>()));
- });
-
- test('CU (1)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' var z;\n'
- ' inc(int x) => ++x;\n'
- '}\n',
- 'class A {\n'
- ' var z;\n'
- ' inc(int x) => ++x;\n'
- '}\n'
- );
- });
-
- test('CU (2)', () {
- expectCUFormatsTo(
- 'class A { \n'
- '}\n',
- 'class A {\n'
- '}\n'
- );
- });
-
- test('CU (3)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' }',
- 'class A {\n'
- '}\n'
- );
- });
-
- test('CU (4)', () {
- expectCUFormatsTo(
- ' class A {\n'
- '}\n',
- 'class A {\n'
- '}\n'
- );
- });
-
- test('CU (5)', () {
- expectCUFormatsTo(
- 'class A { int meaningOfLife() => 42; }',
- 'class A {\n'
- ' int meaningOfLife() => 42;\n'
- '}\n'
- );
- });
-
- test('CU - EOL comments', () {
- expectCUFormatsTo(
- '//comment one\n\n'
- '//comment two\n\n',
- '//comment one\n\n'
- '//comment two\n\n'
- );
- expectCUFormatsTo(
- 'var x; //x\n',
- 'var x; //x\n'
- );
- expectCUFormatsTo(
- 'library foo;\n'
- '\n'
- '//comment one\n'
- '\n'
- 'class C {\n'
- '}\n',
- 'library foo;\n'
- '\n'
- '//comment one\n'
- '\n'
- 'class C {\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'library foo;\n'
- '\n'
- '//comment one\n'
- '\n'
- '//comment two\n'
- '\n'
- 'class C {\n'
- '}\n',
- 'library foo;\n'
- '\n'
- '//comment one\n'
- '\n'
- '//comment two\n'
- '\n'
- 'class C {\n'
- '}\n'
- );
- });
-
- test('CU - nested functions', () {
- expectCUFormatsTo(
- 'x() {\n'
- ' y() {\n'
- ' }\n'
- '}\n',
- 'x() {\n'
- ' y() {\n'
- ' }\n'
- '}\n'
- );
- });
-
- test('CU - top level', () {
- expectCUFormatsTo(
- '\n\n'
- 'foo() {\n'
- '}\n'
- 'bar() {\n'
- '}\n',
- '\n\n'
- 'foo() {\n'
- '}\n'
- 'bar() {\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'const A = 42;\n'
- 'final foo = 32;\n',
- 'const A = 42;\n'
- 'final foo = 32;\n'
- );
- });
-
- test('CU - imports', () {
- expectCUFormatsTo(
- 'import "dart:io";\n\n'
- 'import "package:unittest/unittest.dart";\n'
- 'foo() {\n'
- '}\n',
- 'import "dart:io";\n\n'
- 'import "package:unittest/unittest.dart";\n'
- 'foo() {\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'library a; class B { }',
- 'library a;\n'
- 'class B {\n'
- '}\n'
- );
- });
-
- test('CU - method invocations', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' foo() {\n'
- ' bar();\n'
- ' for (int i = 0; i < 42; i++) {\n'
- ' baz();\n'
- ' }\n'
- ' }\n'
- '}\n',
- 'class A {\n'
- ' foo() {\n'
- ' bar();\n'
- ' for (int i = 0; i < 42; i++) {\n'
- ' baz();\n'
- ' }\n'
- ' }\n'
- '}\n'
- );
- });
-
- test('CU w/class decl comment', () {
- expectCUFormatsTo(
- 'import "foo";\n\n'
- '//Killer class\n'
- 'class A {\n'
- '}',
- 'import "foo";\n\n'
- '//Killer class\n'
- 'class A {\n'
- '}\n'
- );
- });
-
- test('CU (method body)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' foo(path) {\n'
- ' var buffer = new StringBuffer();\n'
- ' var file = new File(path);\n'
- ' return file;\n'
- ' }\n'
- '}\n',
- 'class A {\n'
- ' foo(path) {\n'
- ' var buffer = new StringBuffer();\n'
- ' var file = new File(path);\n'
- ' return file;\n'
- ' }\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'class A {\n'
- ' foo(files) {\n'
- ' for (var file in files) {\n'
- ' print(file);\n'
- ' }\n'
- ' }\n'
- '}\n',
- 'class A {\n'
- ' foo(files) {\n'
- ' for (var file in files) {\n'
- ' print(file);\n'
- ' }\n'
- ' }\n'
- '}\n'
- );
- });
-
- test('CU (method indent)', () {
- expectCUFormatsTo(
- 'class A {\n'
- 'void x(){\n'
- '}\n'
- '}\n',
- 'class A {\n'
- ' void x() {\n'
- ' }\n'
- '}\n'
- );
- });
-
- test('CU (method indent - 2)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' static bool x(){\n'
- 'return true; }\n'
- ' }\n',
- 'class A {\n'
- ' static bool x() {\n'
- ' return true;\n'
- ' }\n'
- '}\n'
- );
- });
-
- test('CU (method indent - 3)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' int x() => 42 + 3 ; \n'
- ' }\n',
- 'class A {\n'
- ' int x() => 42 + 3;\n'
- '}\n'
- );
- });
-
- test('CU (method indent - 4)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' int x() { \n'
- 'if (true) {\n'
- 'return 42;\n'
- '} else {\n'
- 'return 13;\n }\n'
- ' }'
- '}\n',
- 'class A {\n'
- ' int x() {\n'
- ' if (true) {\n'
- ' return 42;\n'
- ' } else {\n'
- ' return 13;\n'
- ' }\n'
- ' }\n'
- '}\n'
- );
- });
-
- test('CU (multiple members)', () {
- expectCUFormatsTo(
- 'class A {\n'
- '}\n'
- 'class B {\n'
- '}\n',
- 'class A {\n'
- '}\n'
- 'class B {\n'
- '}\n'
- );
- });
-
- test('CU (multiple members w/blanks)', () {
- expectCUFormatsTo(
- 'class A {\n'
- '}\n\n'
- 'class B {\n\n\n'
- ' int b() => 42;\n\n'
- ' int c() => b();\n\n'
- '}\n',
- 'class A {\n'
- '}\n\n'
- 'class B {\n\n\n'
- ' int b() => 42;\n\n'
- ' int c() => b();\n\n'
- '}\n'
- );
- });
-
- test('CU - Block comments', () {
- expectCUFormatsTo(
- '/** Old school class comment */\n'
- 'class C {\n'
- ' /** Foo! */ int foo() => 42;\n'
- '}\n',
- '/** Old school class comment */\n'
- 'class C {\n'
- ' /** Foo! */\n'
- ' int foo() => 42;\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'library foo;\n'
- 'class C /* is cool */ {\n'
- ' /* int */ foo() => 42;\n'
- '}\n',
- 'library foo;\n'
- 'class C /* is cool */ {\n'
- ' /* int */ foo() => 42;\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'library foo;\n'
- '/* A long\n'
- ' * Comment\n'
- '*/\n'
- 'class C /* is cool */ {\n'
- ' /* int */ foo() => 42;\n'
- '}\n',
- 'library foo;\n'
- '/* A long\n'
- ' * Comment\n'
- '*/\n'
- 'class C /* is cool */ {\n'
- ' /* int */ foo() => 42;\n'
- '}\n'
- );
- expectCUFormatsTo(
- 'library foo;\n'
- '/* A long\n'
- ' * Comment\n'
- '*/\n'
- '\n'
- '/* And\n'
- ' * another...\n'
- '*/\n'
- '\n'
- '// Mixing it up\n'
- '\n'
- 'class C /* is cool */ {\n'
- ' /* int */ foo() => 42;\n'
- '}\n',
- 'library foo;\n'
- '/* A long\n'
- ' * Comment\n'
- '*/\n'
- '\n'
- '/* And\n'
- ' * another...\n'
- '*/\n'
- '\n'
- '// Mixing it up\n'
- '\n'
- 'class C /* is cool */ {\n'
- ' /* int */ foo() => 42;\n'
- '}\n'
- );
- expectCUFormatsTo(
- '/// Copyright info\n'
- '\n'
- 'library foo;\n'
- '/// Class comment\n'
- '//TODO: implement\n'
- 'class C {\n'
- '}\n',
- '/// Copyright info\n'
- '\n'
- 'library foo;\n'
- '/// Class comment\n'
- '//TODO: implement\n'
- 'class C {\n'
- '}\n'
- );
- });
-
- test('CU - mixed comments', () {
- expectCUFormatsTo(
- 'library foo;\n'
- '\n'
- '\n'
- '/* Comment 1 */\n'
- '\n'
- '// Comment 2\n'
- '\n'
- '/* Comment 3 */',
- 'library foo;\n'
- '\n'
- '\n'
- '/* Comment 1 */\n'
- '\n'
- '// Comment 2\n'
- '\n'
- '/* Comment 3 */\n'
- );
- });
-
- test('CU - comments (EOF)', () {
- expectCUFormatsTo(
- 'library foo; //zamm',
- 'library foo; //zamm\n' //<-- note extra NEWLINE
- );
- });
-
- test('CU - comments (0)', () {
- expectCUFormatsTo(
- 'library foo; //zamm\n'
- '\n'
- 'class A {\n'
- '}\n',
- 'library foo; //zamm\n'
- '\n'
- 'class A {\n'
- '}\n'
- );
- });
-
- test('CU - comments (1)', () {
- expectCUFormatsTo(
- '/* foo */ /* bar */\n',
- '/* foo */ /* bar */\n'
- );
- });
-
- test('CU - comments (2)', () {
- expectCUFormatsTo(
- '/** foo */ /** bar */\n',
- '/** foo */\n'
- '/** bar */\n'
- );
- });
-
- test('CU - comments (3)', () {
- expectCUFormatsTo(
- 'var x; //x\n',
- 'var x; //x\n'
- );
- });
-
- test('CU - comments (4)', () {
- expectCUFormatsTo(
- 'class X { //X!\n'
- '}',
- 'class X { //X!\n'
- '}\n'
- );
- });
-
- test('CU - comments (5)', () {
- expectCUFormatsTo(
- '//comment one\n\n'
- '//comment two\n\n',
- '//comment one\n\n'
- '//comment two\n\n'
- );
- });
-
- test('CU - comments (6)', () {
- expectCUFormatsTo(
- 'var x; //x\n',
- 'var x; //x\n'
- );
- });
-
- test('CU - comments (6)', () {
- expectCUFormatsTo(
- 'var /* int */ x; //x\n',
- 'var /* int */ x; //x\n'
- );
- });
-
- test('CU - comments (7)', () {
- expectCUFormatsTo(
- 'library foo;\n'
- '\n'
- '/// Docs\n'
- '/// spanning\n'
- '/// lines.\n'
- 'class A {\n'
- '}\n'
- '\n'
- '/// ... and\n'
- '\n'
- '/// Dangling ones too\n'
- 'int x;\n',
- 'library foo;\n'
- '\n'
- '/// Docs\n'
- '/// spanning\n'
- '/// lines.\n'
- 'class A {\n'
- '}\n'
- '\n'
- '/// ... and\n'
- '\n'
- '/// Dangling ones too\n'
- 'int x;\n'
- );
- });
-
- test('CU - EOF nl', () {
- expectCUFormatsTo(
- 'var x = 1;',
- 'var x = 1;\n'
- );
- });
-
- test('CU - constructor', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' const _a;\n'
- ' A();\n'
- ' int a() => _a;\n'
- '}\n',
- 'class A {\n'
- ' const _a;\n'
- ' A();\n'
- ' int a() => _a;\n'
- '}\n'
- );
- });
-
- test('CU - method decl w/ named params', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' int a(var x, {optional: null}) => null;\n'
- '}\n',
- 'class A {\n'
- ' int a(var x, {optional: null}) => null;\n'
- '}\n'
- );
- });
-
- test('CU - method decl w/ optional params', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' int a(var x, [optional = null]) => null;\n'
- '}\n',
- 'class A {\n'
- ' int a(var x, [optional = null]) => null;\n'
- '}\n'
- );
- });
-
- test('CU - factory constructor redirects', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' const factory A() = B;\n'
- '}\n',
- 'class A {\n'
- ' const factory A() = B;\n'
- '}\n'
- );
- });
-
- test('CU - constructor initializers', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' int _a;\n'
- ' A(a) : _a = a;\n'
- '}\n',
- 'class A {\n'
- ' int _a;\n'
- ' A(a)\n'
- ' : _a = a;\n'
- '}\n'
- );
- });
-
- test('CU - constructor auto field inits', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' int _a;\n'
- ' A(this._a);\n'
- '}\n',
- 'class A {\n'
- ' int _a;\n'
- ' A(this._a);\n'
- '}\n'
- );
- });
-
- test('CU - parts', () {
- expectCUFormatsTo(
- 'part of foo;',
- 'part of foo;\n'
- );
- });
-
- test('CU (cons inits)', () {
- expectCUFormatsTo('class X {\n'
- ' var x, y;\n'
- ' X() : x = 1, y = 2;\n'
- '}\n',
- 'class X {\n'
- ' var x, y;\n'
- ' X()\n'
- ' : x = 1,\n'
- ' y = 2;\n'
- '}\n'
- );
- });
-
- test('CU (empty cons bodies)', () {
- expectCUFormatsTo(
- 'class A {\n'
- ' A() {\n'
- ' }\n'
- '}\n',
- 'class A {\n'
- ' A();\n'
- '}\n',
- transforms: true
- );
- expectCUFormatsTo(
- 'class A {\n'
- ' A() {\n'
- ' }\n'
- '}\n',
- 'class A {\n'
- ' A() {\n'
- ' }\n'
- '}\n',
- transforms: false
- );
- });
-
- test('stmt', () {
- expectStmtFormatsTo(
- 'if (true){\n'
- 'if (true){\n'
- 'if (true){\n'
- 'return true;\n'
- '} else{\n'
- 'return false;\n'
- '}\n'
- '}\n'
- '}else{\n'
- 'return false;\n'
- '}',
- 'if (true) {\n'
- ' if (true) {\n'
- ' if (true) {\n'
- ' return true;\n'
- ' } else {\n'
- ' return false;\n'
- ' }\n'
- ' }\n'
- '} else {\n'
- ' return false;\n'
- '}'
- );
- });
-
- test('stmt (switch)', () {
- expectStmtFormatsTo(
- 'switch (fruit) {\n'
- 'case "apple":\n'
- 'print("delish");\n'
- 'break;\n'
- 'case "fig":\n'
- 'print("bleh");\n'
- 'break;\n'
- '}',
- 'switch (fruit) {\n'
- ' case "apple":\n'
- ' print("delish");\n'
- ' break;\n'
- ' case "fig":\n'
- ' print("bleh");\n'
- ' break;\n'
- '}'
- );
- });
-
- test('stmt (cascades)', () {
- expectStmtFormatsTo(
- '"foo"\n'
- '..toString()\n'
- '..toString();',
- '"foo"\n'
- ' ..toString()\n'
- ' ..toString();'
- );
- });
-
- test('stmt (generics)', () {
- expectStmtFormatsTo(
- 'var numbers = <int>[1, 2, (3 + 4)];',
- 'var numbers = <int>[1, 2, (3 + 4)];'
- );
- });
-
- test('stmt (lists)', () {
- expectStmtFormatsTo(
- 'var l = [1,2,3,4];',
- 'var l = [1, 2, 3, 4];'
- );
- //Dangling ','
- expectStmtFormatsTo(
- 'var l = [1,];',
- 'var l = [1,];'
- );
- });
-
- test('stmt (maps)', () {
- expectStmtFormatsTo(
- 'var map = const {"foo": "bar", "fuz": null};',
- 'var map = const {"foo": "bar", "fuz": null};'
- );
-
- //Dangling ','
- expectStmtFormatsTo(
- 'var map = {"foo": "bar",};',
- 'var map = {"foo": "bar",};'
- );
- });
-
- test('stmt (try/catch)', () {
- expectStmtFormatsTo(
- 'try {\n'
- 'doSomething();\n'
- '} catch (e) {\n'
- 'print(e);\n'
- '}',
- 'try {\n'
- ' doSomething();\n'
- '} catch (e) {\n'
- ' print(e);\n'
- '}'
- );
- });
-
- test('stmt (binary/ternary ops)', () {
- expectStmtFormatsTo(
- 'var a = 1 + 2 / (3 * -b);',
- 'var a = 1 + 2 / (3 * -b);'
- );
- expectStmtFormatsTo(
- 'var c = !condition == a > b;',
- 'var c = !condition == a > b;'
- );
- expectStmtFormatsTo(
- 'var d = condition ? b : object.method(a, b, c);',
- 'var d = condition ? b : object.method(a, b, c);'
- );
- expectStmtFormatsTo(
- 'var d = obj is! SomeType;',
- 'var d = obj is! SomeType;'
- );
- });
-
- test('stmt (for in)', () {
- expectStmtFormatsTo(
- 'for (Foo foo in bar.foos) {\n'
- ' print(foo);\n'
- '}',
- 'for (Foo foo in bar.foos) {\n'
- ' print(foo);\n'
- '}'
- );
- expectStmtFormatsTo(
- 'for (final Foo foo in bar.foos) {\n'
- ' print(foo);\n'
- '}',
- 'for (final Foo foo in bar.foos) {\n'
- ' print(foo);\n'
- '}'
- );
- expectStmtFormatsTo(
- 'for (final foo in bar.foos) {\n'
- ' print(foo);\n'
- '}',
- 'for (final foo in bar.foos) {\n'
- ' print(foo);\n'
- '}'
- );
- });
-
- test('Statement (if)', () {
- expectStmtFormatsTo('if (true) print("true!");',
- 'if (true) print("true!");');
- expectStmtFormatsTo('if (true) { print("true!"); }',
- 'if (true) {\n'
- ' print("true!");\n'
- '}');
- expectStmtFormatsTo('if (true) print("true!"); else print("false!");',
- 'if (true) {\n'
- ' print("true!");\n'
- '} else {\n'
- ' print("false!");\n'
- '}');
- expectStmtFormatsTo('if (true) print("true!"); else print("false!");',
- 'if (true) print("true!"); else print("false!");',
- transforms: false);
- });
-
- test('initialIndent', () {
- var formatter = new CodeFormatter(
- new FormatterOptions(initialIndentationLevel: 2));
- var formattedSource =
- formatter.format(CodeKind.STATEMENT, 'var x;').source;
- expect(formattedSource, startsWith(' '));
- });
-
- test('selections', () {
- expectSelectedPostFormat('class X {}', '}');
- expectSelectedPostFormat('class X{}', '{');
- expectSelectedPostFormat('class X{int y;}', ';');
- expectSelectedPostFormat('class X{int y;}', '}');
- expectSelectedPostFormat('class X {}', ' {');
- });
-
- });
-
-
- /// Token streams
- group('token streams', () {
-
- test('string tokens', () {
- expectTokenizedEqual('class A{}', 'class A{ }');
- expectTokenizedEqual('class A{}', 'class A{\n }\n');
- expectTokenizedEqual('class A {}', 'class A{ }');
- expectTokenizedEqual(' class A {}', 'class A{ }');
- });
-
- test('string tokens - w/ comments', () {
- expectTokenizedEqual('//foo\nint bar;', '//foo\nint bar;');
- expectTokenizedNotEqual('int bar;', '//foo\nint bar;');
- expectTokenizedNotEqual('//foo\nint bar;', 'int bar;');
- });
-
- test('INDEX', () {
- /// '[' ']' => '[]'
- var t1 = openSqBracket()..setNext(closeSqBracket()..setNext(eof()));
- var t2 = index()..setNext(eof());
- expectStreamsEqual(t1, t2);
- });
-
- test('GT_GT', () {
- /// '>' '>' => '>>'
- var t1 = gt()..setNext(gt()..setNext(eof()));
- var t2 = gt_gt()..setNext(eof());
- expectStreamsEqual(t1, t2);
- });
-
- test('t1 < t2', () {
- var t1 = string('foo')..setNext(eof());
- var t2 = string('foo')..setNext(string('bar')..setNext(eof()));
- expectStreamsNotEqual(t1, t2);
- });
-
- test('t1 > t2', () {
- var t1 = string('foo')..setNext(string('bar')..setNext(eof()));
- var t2 = string('foo')..setNext(eof());
- expectStreamsNotEqual(t1, t2);
- });
-
- });
-
-
- /// Line tests
- group('line', () {
-
- test('space', () {
- var line = new Line(indent: 0);
- line.addSpaces(2);
- expect(line.toString(), equals(' '));
- });
-
- test('initial indent', () {
- var line = new Line(indent: 2);
- expect(line.toString(), equals(' '));
- });
-
- test('initial indent (tabbed)', () {
- var line = new Line(indent:1, useTabs: true);
- expect(line.toString(), equals('\t'));
- });
-
- test('addToken', () {
- var line = new Line();
- line.addToken(new LineToken('foo'));
- expect(line.toString(), equals('foo'));
- });
-
- test('addToken (2)', () {
- var line = new Line(indent: 1);
- line.addToken(new LineToken('foo'));
- expect(line.toString(), equals(' foo'));
- });
-
- test('isWhitespace', () {
- var line = new Line(indent: 1);
- expect(line.isWhitespace(), isTrue);
- });
-
- });
-
-
- /// Writer tests
- group('writer', () {
-
- test('basic print', () {
- var writer = new SourceWriter();
- writer.print('foo');
- writer.print(' ');
- writer.print('bar');
- expect(writer.toString(), equals('foo bar'));
- });
-
- test('newline', () {
- var writer = new SourceWriter();
- writer.print('foo');
- writer.newline();
- expect(writer.toString(), equals('foo\n'));
- });
-
- test('newline trims whitespace', () {
- var writer = new SourceWriter(indentCount:2);
- writer.newline();
- expect(writer.toString(), equals('\n'));
- });
-
- test('basic print (with indents)', () {
- var writer = new SourceWriter();
- writer.print('foo');
- writer.indent();
- writer.newline();
- writer.print('bar');
- writer.unindent();
- writer.newline();
- writer.print('baz');
- expect(writer.toString(), equals('foo\n bar\nbaz'));
- });
-
- });
-
-
- /// Helper method tests
- group('helpers', () {
-
- test('indentString', () {
- expect(getIndentString(0), '');
- expect(getIndentString(1), ' ');
- expect(getIndentString(4), ' ');
- });
-
- test('indentString (tabbed)', () {
- expect(getIndentString(0, useTabs: true), '');
- expect(getIndentString(1, useTabs: true), '\t');
- expect(getIndentString(3, useTabs: true), '\t\t\t');
- });
-
- test('repeat', () {
- expect(repeat('x', 0), '');
- expect(repeat('x', 1), 'x');
- expect(repeat('x', 4), 'xxxx');
- });
-
- });
-
-}
-
-Token closeSqBracket() => new Token(TokenType.CLOSE_SQUARE_BRACKET, 0);
-
-Token eof() => new Token(TokenType.EOF, 0);
-
-Token gt() => new Token(TokenType.GT, 0);
-
-Token gt_gt() => new Token(TokenType.GT_GT, 0);
-
-Token index() => new Token(TokenType.INDEX, 0);
-
-Token openSqBracket() => new BeginToken(TokenType.OPEN_SQUARE_BRACKET, 0);
-
-Token string(String lexeme) => new StringToken(TokenType.STRING, lexeme, 0);
-
-Token classKeyword(int offset) => new KeywordToken(Keyword.CLASS, offset);
-
-Token identifier(String value, int offset) =>
- new StringToken(TokenType.IDENTIFIER, value, offset);
-
-Token openParen(int offset) =>
- new StringToken(TokenType.OPEN_PAREN, '{', offset);
-
-Token closeParen(int offset) =>
- new StringToken(TokenType.CLOSE_PAREN, '}', offset);
-
-Token chain(List<Token> tokens) {
- for (var i = 0; i < tokens.length - 1; ++i) {
- tokens[i].setNext(tokens[i + 1]);
- }
- return tokens[0];
-}
-
-FormattedSource formatCU(src, {options: const FormatterOptions(), selection}) =>
- new CodeFormatter(options).format(
- CodeKind.COMPILATION_UNIT, src, selection: selection);
-
-String formatStatement(src, {options: const FormatterOptions()}) =>
- new CodeFormatter(options).format(CodeKind.STATEMENT, src).source;
-
-Token tokenize(String str) {
- var reader = new CharSequenceReader(new CharSequence(str));
- return new Scanner(null, reader, null).tokenize();
-}
-
-expectSelectedPostFormat(src, token) {
- var preOffset = src.indexOf(token);
- var length = token.length;
- var formatted = formatCU(src, selection: new Selection(preOffset, length));
- var postOffset = formatted.selection.offset;
- expect(formatted.source.substring(postOffset, postOffset + length),
- equals(src.substring(preOffset, preOffset + length)));
-}
-
-expectTokenizedEqual(String s1, String s2) =>
- expectStreamsEqual(tokenize(s1), tokenize(s2));
-
-expectTokenizedNotEqual(String s1, String s2) =>
- expect(()=> expectStreamsEqual(tokenize(s1), tokenize(s2)),
- throwsA(new isInstanceOf<FormatterException>()));
-
-expectStreamsEqual(Token t1, Token t2) =>
- new TokenStreamComparator(null, t1, t2).verifyEquals();
-
-expectStreamsNotEqual(Token t1, Token t2) =>
- expect(() => new TokenStreamComparator(null, t1, t2).verifyEquals(),
- throwsA(new isInstanceOf<FormatterException>()));
-
-expectCUFormatsTo(src, expected, {transforms: true}) =>
- expect(formatCU(src, options: new FormatterOptions(
- codeTransforms: transforms)).source, equals(expected));
-
-expectStmtFormatsTo(src, expected, {transforms: true}) =>
- expect(formatStatement(src, options:
- new FormatterOptions(codeTransforms: transforms)), equals(expected));

Powered by Google App Engine
This is Rietveld 408576698