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

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

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

Powered by Google App Engine
This is Rietveld 408576698