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

Side by Side Diff: pkg/smoke/test/codegen/generator_test.dart

Issue 194813007: Add codegen support in smoke (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2014, 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 smoke.test.codegen.generator_test;
6
7 import 'package:smoke/codegen/generator.dart';
8 import 'package:unittest/unittest.dart';
9
10 main() {
11 test('getters', () {
12 var generator = new SmokeCodeGenerator();
13 generator.addGetter('i');
14 _checkResults(generator, initCall:
15 'useGeneratedCode(new StaticConfiguration(\n'
16 ' checkedMode: false,\n'
17 ' getters: {\n'
18 ' #i: (o) => o.i,\n'
19 ' }));\n');
20
21 generator.addGetter('foo');
22 _checkResults(generator, initCall:
23 'useGeneratedCode(new StaticConfiguration(\n'
24 ' checkedMode: false,\n'
25 ' getters: {\n'
26 ' #foo: (o) => o.foo,\n'
27 ' #i: (o) => o.i,\n'
28 ' }));\n');
29 });
30
31 test('setters', () {
32 var generator = new SmokeCodeGenerator();
33 generator.addSetter('i');
34 _checkResults(generator, initCall:
35 'useGeneratedCode(new StaticConfiguration(\n'
36 ' checkedMode: false,\n'
37 ' setters: {\n'
38 ' #i: (o, v) { o.i = v; },\n'
39 ' }));\n');
40
41 generator.addSetter('foo');
42 _checkResults(generator, initCall:
43 'useGeneratedCode(new StaticConfiguration(\n'
44 ' checkedMode: false,\n'
45 ' setters: {\n'
46 ' #foo: (o, v) { o.foo = v; },\n'
47 ' #i: (o, v) { o.i = v; },\n'
48 ' }));\n');
49 });
50
51 test('names/symbols', () {
52 var generator = new SmokeCodeGenerator();
53 generator.addSymbol('i');
54 generator.addSymbol('foo');
55 _checkResults(generator, initCall:
56 'useGeneratedCode(new StaticConfiguration(\n'
57 ' checkedMode: false,\n'
58 ' names: {\n'
59 ' #foo: \'foo\',\n'
60 ' #i: \'i\',\n'
61 ' }));\n');
62 });
63
64 test('getters, setters, and names', () {
65 var generator = new SmokeCodeGenerator();
66 generator.addGetter('i');
67 generator.addSetter('i');
68 generator.addSetter('foo');
69 generator.addSymbol('foo');
70 _checkResults(generator, initCall:
71 'useGeneratedCode(new StaticConfiguration(\n'
72 ' checkedMode: false,\n'
73 ' getters: {\n'
74 ' #i: (o) => o.i,\n'
75 ' },\n'
76 ' setters: {\n'
77 ' #foo: (o, v) { o.foo = v; },\n'
78 ' #i: (o, v) { o.i = v; },\n'
79 ' },\n'
80 ' names: {\n'
81 ' #foo: \'foo\',\n'
82 ' }));\n');
83 });
84
85 test('parents', () {
86 var generator = new SmokeCodeGenerator();
87 generator.addParent(new TypeIdentifier('a.dart', 'A'),
88 new TypeIdentifier('b.dart', 'B'));
89 generator.addParent(new TypeIdentifier('a.dart', 'C'),
90 new TypeIdentifier('a.dart', 'A'));
91 _checkResults(generator,
92 imports: [
93 "import 'a.dart' as smoke_0;",
94 "import 'b.dart' as smoke_1;"
95 ],
96 initCall:
97 'useGeneratedCode(new StaticConfiguration(\n'
98 ' checkedMode: false,\n'
99 ' parents: {\n'
100 ' smoke_0.A: smoke_1.B,\n'
101 ' smoke_0.C: smoke_0.A,\n'
102 ' }));\n');
103 });
104
105 test('declarations', () {
106 var generator = new SmokeCodeGenerator();
107 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
108 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
109 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'bar',
110 new TypeIdentifier('dart:core', 'Function'), isMethod: true,
111 annotations: [new ConstExpression.constructor(null, 'Annotation',
112 [new ConstExpression.string("hi")], const {})]);
113 _checkResults(generator,
114 imports: ["import 'a.dart' as smoke_0;"],
115 initCall:
116 'useGeneratedCode(new StaticConfiguration(\n'
117 ' checkedMode: false,\n'
118 ' declarations: {\n'
119 ' smoke_0.A: {\n'
120 ' #bar: const Declaration(#bar, Function, kind: METHOD, '
121 'annotations: const [const Annotation(\'hi\')]),\n'
122 ' #foo: const Declaration(#foo, int, isFinal: true),\n'
123 ' },\n'
124 ' }));\n');
125 });
126 }
127
128 _checkResults(SmokeCodeGenerator generator, {List<String> imports: const [],
129 String topLevel: '', String initCall}) {
130 var allImports = []..addAll(DEFAULT_IMPORTS)..addAll(imports);
131 expect(generator.generateImports(), allImports);
132 expect(generator.generateTopLevelDeclarations(), topLevel);
133 var indentedCode = initCall.replaceAll("\n", "\n ").trim();
134 expect(generator.generateInitCall(), ' $indentedCode\n');
135 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698