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

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

Issue 1016913002: pkg/smoke: support latest analyzer version and formatted code (Closed) Base URL: https://github.com/dart-lang/smoke@master
Patch Set: updates Created 5 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
« no previous file with comments | « test/codegen/end_to_end_test.dart ('k') | test/codegen/recorder_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 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 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 library smoke.test.codegen.generator_test; 5 library smoke.test.codegen.generator_test;
6 6
7 import 'package:smoke/codegen/generator.dart'; 7 import 'package:smoke/codegen/generator.dart';
8 import 'package:unittest/unittest.dart'; 8 import 'package:unittest/unittest.dart';
9 9
10 import 'common.dart' show checkResults; 10 import 'common.dart' show checkResults;
11 11
12 main() { 12 main() {
13 test('getters', () { 13 test('getters', () {
14 var generator = new SmokeCodeGenerator(); 14 var generator = new SmokeCodeGenerator();
15 generator.addGetter('i'); 15 generator.addGetter('i');
16 checkResults(generator, initCall: 16 checkResults(generator,
17 'useGeneratedCode(new StaticConfiguration(\n' 17 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
18 ' checkedMode: false,\n' 18 ' checkedMode: false,\n'
19 ' getters: {\n' 19 ' getters: {\n'
20 ' #i: (o) => o.i,\n' 20 ' #i: (o) => o.i,\n'
21 ' }));\n'); 21 ' }));\n');
22 22
23 generator.addGetter('foo'); 23 generator.addGetter('foo');
24 checkResults(generator, initCall: 24 checkResults(generator,
25 'useGeneratedCode(new StaticConfiguration(\n' 25 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
26 ' checkedMode: false,\n' 26 ' checkedMode: false,\n'
27 ' getters: {\n' 27 ' getters: {\n'
28 ' #foo: (o) => o.foo,\n' 28 ' #foo: (o) => o.foo,\n'
29 ' #i: (o) => o.i,\n' 29 ' #i: (o) => o.i,\n'
30 ' }));\n'); 30 ' }));\n');
31 }); 31 });
32 32
33 test('setters', () { 33 test('setters', () {
34 var generator = new SmokeCodeGenerator(); 34 var generator = new SmokeCodeGenerator();
35 generator.addSetter('i'); 35 generator.addSetter('i');
36 checkResults(generator, initCall: 36 checkResults(generator,
37 'useGeneratedCode(new StaticConfiguration(\n' 37 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
38 ' checkedMode: false,\n' 38 ' checkedMode: false,\n'
39 ' setters: {\n' 39 ' setters: {\n'
40 ' #i: (o, v) { o.i = v; },\n' 40 ' #i: (o, v) { o.i = v; },\n'
41 ' }));\n'); 41 ' }));\n');
42 42
43 generator.addSetter('foo'); 43 generator.addSetter('foo');
44 checkResults(generator, initCall: 44 checkResults(generator,
45 'useGeneratedCode(new StaticConfiguration(\n' 45 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
46 ' checkedMode: false,\n' 46 ' checkedMode: false,\n'
47 ' setters: {\n' 47 ' setters: {\n'
48 ' #foo: (o, v) { o.foo = v; },\n' 48 ' #foo: (o, v) { o.foo = v; },\n'
49 ' #i: (o, v) { o.i = v; },\n' 49 ' #i: (o, v) { o.i = v; },\n'
50 ' }));\n'); 50 ' }));\n');
51 }); 51 });
52 52
53 test('names/symbols', () { 53 test('names/symbols', () {
54 var generator = new SmokeCodeGenerator(); 54 var generator = new SmokeCodeGenerator();
55 generator.addSymbol('i'); 55 generator.addSymbol('i');
56 generator.addSymbol('foo'); 56 generator.addSymbol('foo');
57 generator.addSymbol('a.b.c'); 57 generator.addSymbol('a.b.c');
58 generator.addSymbol('a.b.[]'); 58 generator.addSymbol('a.b.[]');
59 generator.addSymbol('[]'); 59 generator.addSymbol('[]');
60 generator.addSymbol('+'); 60 generator.addSymbol('+');
61 checkResults(generator, initCall: 61 checkResults(generator,
62 'useGeneratedCode(new StaticConfiguration(\n' 62 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
63 ' checkedMode: false,\n' 63 ' checkedMode: false,\n'
64 ' names: {\n' 64 ' names: {\n'
65 ' const Symbol(\'+\'): r\'+\',\n' 65 ' const Symbol(\'+\'): r\'+\',\n'
66 ' const Symbol(\'[]\'): r\'[]\',\n' 66 ' const Symbol(\'[]\'): r\'[]\',\n'
67 ' const Symbol(\'a.b.[]\'): r\'a.b.[]\',\n' 67 ' const Symbol(\'a.b.[]\'): r\'a.b.[]\',\n'
68 ' #a.b.c: r\'a.b.c\',\n' 68 ' #a.b.c: r\'a.b.c\',\n'
69 ' #foo: r\'foo\',\n' 69 ' #foo: r\'foo\',\n'
70 ' #i: r\'i\',\n' 70 ' #i: r\'i\',\n'
71 ' }));\n'); 71 ' }));\n');
72 }); 72 });
73 73
74 group('invalid symbols', () { 74 group('invalid symbols', () {
75 var invalidError = 75 var invalidError =
76 predicate((e) => e is StateError && '$e'.contains("invalid symbol")); 76 predicate((e) => e is StateError && '$e'.contains("invalid symbol"));
77 test('traling period', () { 77 test('traling period', () {
78 var generator = new SmokeCodeGenerator(); 78 var generator = new SmokeCodeGenerator();
79 generator.addSymbol('a.'); 79 generator.addSymbol('a.');
80 var sb = new StringBuffer(); 80 var sb = new StringBuffer();
81 expect(() => generator.writeStaticConfiguration(sb), 81 expect(
82 throwsA(invalidError)); 82 () => generator.writeStaticConfiguration(sb), throwsA(invalidError));
83 }); 83 });
84 84
85 test('operator in the middle', () { 85 test('operator in the middle', () {
86 var generator = new SmokeCodeGenerator(); 86 var generator = new SmokeCodeGenerator();
87 generator.addSymbol('a.[].b'); 87 generator.addSymbol('a.[].b');
88 var sb = new StringBuffer(); 88 var sb = new StringBuffer();
89 expect(() => generator.writeStaticConfiguration(sb), 89 expect(
90 throwsA(invalidError)); 90 () => generator.writeStaticConfiguration(sb), throwsA(invalidError));
91 }); 91 });
92 }); 92 });
93 93
94 test('getters, setters, and names', () { 94 test('getters, setters, and names', () {
95 var generator = new SmokeCodeGenerator(); 95 var generator = new SmokeCodeGenerator();
96 generator.addGetter('i'); 96 generator.addGetter('i');
97 generator.addSetter('i'); 97 generator.addSetter('i');
98 generator.addSetter('foo'); 98 generator.addSetter('foo');
99 generator.addSymbol('foo'); 99 generator.addSymbol('foo');
100 checkResults(generator, initCall: 100 checkResults(generator,
101 'useGeneratedCode(new StaticConfiguration(\n' 101 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
102 ' checkedMode: false,\n' 102 ' checkedMode: false,\n'
103 ' getters: {\n' 103 ' getters: {\n'
104 ' #i: (o) => o.i,\n' 104 ' #i: (o) => o.i,\n'
105 ' },\n' 105 ' },\n'
106 ' setters: {\n' 106 ' setters: {\n'
107 ' #foo: (o, v) { o.foo = v; },\n' 107 ' #foo: (o, v) { o.foo = v; },\n'
108 ' #i: (o, v) { o.i = v; },\n' 108 ' #i: (o, v) { o.i = v; },\n'
109 ' },\n' 109 ' },\n'
110 ' names: {\n' 110 ' names: {\n'
111 ' #foo: r\'foo\',\n' 111 ' #foo: r\'foo\',\n'
112 ' }));\n'); 112 ' }));\n');
113 }); 113 });
114 114
115 test('parents', () { 115 test('parents', () {
116 var generator = new SmokeCodeGenerator(); 116 var generator = new SmokeCodeGenerator();
117 generator.addParent(new TypeIdentifier('a.dart', 'A'), 117 generator.addParent(
118 new TypeIdentifier('b.dart', 'B')); 118 new TypeIdentifier('a.dart', 'A'), new TypeIdentifier('b.dart', 'B'));
119 generator.addParent(new TypeIdentifier('a.dart', 'C'), 119 generator.addParent(
120 new TypeIdentifier('a.dart', 'A')); 120 new TypeIdentifier('a.dart', 'C'), new TypeIdentifier('a.dart', 'A'));
121 checkResults(generator, 121 checkResults(generator,
122 imports: [ 122 imports: ["import 'a.dart' as smoke_0;", "import 'b.dart' as smoke_1;"],
123 "import 'a.dart' as smoke_0;", 123 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
124 "import 'b.dart' as smoke_1;" 124 ' checkedMode: false,\n'
125 ], 125 ' parents: {\n'
126 initCall: 126 ' smoke_0.A: smoke_1.B,\n'
127 'useGeneratedCode(new StaticConfiguration(\n' 127 ' smoke_0.C: smoke_0.A,\n'
128 ' checkedMode: false,\n' 128 ' }));\n');
129 ' parents: {\n'
130 ' smoke_0.A: smoke_1.B,\n'
131 ' smoke_0.C: smoke_0.A,\n'
132 ' }));\n');
133 }); 129 });
134 130
135 test('declarations', () { 131 test('declarations', () {
136 var generator = new SmokeCodeGenerator(); 132 var generator = new SmokeCodeGenerator();
137 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo', 133 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
138 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true); 134 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
139 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'bar', 135 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'bar',
140 new TypeIdentifier('dart:core', 'Function'), isMethod: true, 136 new TypeIdentifier('dart:core', 'Function'),
141 annotations: [new ConstExpression.constructor(null, 'Annotation', 137 isMethod: true,
142 [new ConstExpression.string("hi")], const {})]); 138 annotations: [
139 new ConstExpression.constructor(
140 null, 'Annotation', [new ConstExpression.string("hi")], const {})
141 ]);
143 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), '[]', 142 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), '[]',
144 new TypeIdentifier('dart:core', 'Function'), isMethod: true); 143 new TypeIdentifier('dart:core', 'Function'), isMethod: true);
145 var symbol = "const Symbol('[]')"; 144 var symbol = "const Symbol('[]')";
146 var details = "$symbol, Function, kind: METHOD"; 145 var details = "$symbol, Function, kind: METHOD";
147 checkResults(generator, 146 checkResults(generator,
148 imports: ["import 'a.dart' as smoke_0;"], 147 imports: ["import 'a.dart' as smoke_0;"],
149 initCall: 148 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
150 'useGeneratedCode(new StaticConfiguration(\n' 149 ' checkedMode: false,\n'
151 ' checkedMode: false,\n' 150 ' declarations: {\n'
152 ' declarations: {\n' 151 ' smoke_0.A: {\n'
153 ' smoke_0.A: {\n' 152 ' $symbol: const Declaration($details),\n'
154 ' $symbol: const Declaration($details),\n' 153 ' #bar: const Declaration(#bar, Function, kind: METHOD, '
155 ' #bar: const Declaration(#bar, Function, kind: METHOD, ' 154 'annotations: const [const Annotation(\'hi\')]),\n'
156 'annotations: const [const Annotation(\'hi\')]),\n' 155 ' #foo: const Declaration(#foo, int, isFinal: true),\n'
157 ' #foo: const Declaration(#foo, int, isFinal: true),\n' 156 ' },\n'
158 ' },\n' 157 ' }));\n');
159 ' }));\n');
160 }); 158 });
161 159
162 test('staticMethod', () { 160 test('staticMethod', () {
163 var generator = new SmokeCodeGenerator(); 161 var generator = new SmokeCodeGenerator();
164 generator.addStaticMethod(new TypeIdentifier('a.dart', 'A'), 'm1'); 162 generator.addStaticMethod(new TypeIdentifier('a.dart', 'A'), 'm1');
165 checkResults(generator, 163 checkResults(generator,
166 imports: ["import 'a.dart' as smoke_0;"], 164 imports: ["import 'a.dart' as smoke_0;"],
167 initCall: 165 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
168 'useGeneratedCode(new StaticConfiguration(\n' 166 ' checkedMode: false,\n'
169 ' checkedMode: false,\n' 167 ' staticMethods: {\n'
170 ' staticMethods: {\n' 168 ' smoke_0.A: {\n'
171 ' smoke_0.A: {\n' 169 ' #m1: smoke_0.A.m1,\n'
172 ' #m1: smoke_0.A.m1,\n' 170 ' },\n'
173 ' },\n' 171 ' }));\n');
174 ' }));\n');
175 }); 172 });
176 173
177 test('repeated entries appear only once', () { 174 test('repeated entries appear only once', () {
178 var generator = new SmokeCodeGenerator(); 175 var generator = new SmokeCodeGenerator();
179 generator.addGetter('a'); 176 generator.addGetter('a');
180 generator.addGetter('a'); 177 generator.addGetter('a');
181 generator.addSetter('b'); 178 generator.addSetter('b');
182 generator.addSetter('b'); 179 generator.addSetter('b');
183 generator.addSymbol('d'); 180 generator.addSymbol('d');
184 generator.addSymbol('d'); 181 generator.addSymbol('d');
185 generator.addSymbol('c'); 182 generator.addSymbol('c');
186 generator.addSymbol('c'); 183 generator.addSymbol('c');
187 generator.addSymbol('c'); 184 generator.addSymbol('c');
188 185
189 generator.addParent(new TypeIdentifier('a.dart', 'C'), 186 generator.addParent(
190 new TypeIdentifier('a.dart', 'A')); 187 new TypeIdentifier('a.dart', 'C'), new TypeIdentifier('a.dart', 'A'));
191 generator.addParent(new TypeIdentifier('a.dart', 'C'), 188 generator.addParent(
192 new TypeIdentifier('a.dart', 'A')); 189 new TypeIdentifier('a.dart', 'C'), new TypeIdentifier('a.dart', 'A'));
193 generator.addParent(new TypeIdentifier('a.dart', 'C'), 190 generator.addParent(
194 new TypeIdentifier('a.dart', 'A')); 191 new TypeIdentifier('a.dart', 'C'), new TypeIdentifier('a.dart', 'A'));
195 192
196 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo', 193 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
197 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true); 194 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
198 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo', 195 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
199 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true); 196 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
200 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo', 197 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
201 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true); 198 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
202 199
203 checkResults(generator, 200 checkResults(generator,
204 imports: [ 201 imports: ["import 'a.dart' as smoke_0;",],
205 "import 'a.dart' as smoke_0;", 202 initCall: 'useGeneratedCode(new StaticConfiguration(\n'
206 ], 203 ' checkedMode: false,\n'
207 initCall: 204 ' getters: {\n'
208 'useGeneratedCode(new StaticConfiguration(\n' 205 ' #a: (o) => o.a,\n'
209 ' checkedMode: false,\n' 206 ' },\n'
210 ' getters: {\n' 207 ' setters: {\n'
211 ' #a: (o) => o.a,\n' 208 ' #b: (o, v) { o.b = v; },\n'
212 ' },\n' 209 ' },\n'
213 ' setters: {\n' 210 ' parents: {\n'
214 ' #b: (o, v) { o.b = v; },\n' 211 ' smoke_0.C: smoke_0.A,\n'
215 ' },\n' 212 ' },\n'
216 ' parents: {\n' 213 ' declarations: {\n'
217 ' smoke_0.C: smoke_0.A,\n' 214 ' smoke_0.A: {\n'
218 ' },\n' 215 ' #foo: const Declaration(#foo, int, isFinal: true),\n'
219 ' declarations: {\n' 216 ' },\n'
220 ' smoke_0.A: {\n' 217 ' },\n'
221 ' #foo: const Declaration(#foo, int, isFinal: true),\n' 218 ' names: {\n'
222 ' },\n' 219 ' #c: r\'c\',\n'
223 ' },\n' 220 ' #d: r\'d\',\n'
224 ' names: {\n' 221 ' }));\n');
225 ' #c: r\'c\',\n'
226 ' #d: r\'d\',\n'
227 ' }));\n');
228 }); 222 });
229 } 223 }
OLDNEW
« no previous file with comments | « test/codegen/end_to_end_test.dart ('k') | test/codegen/recorder_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698