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

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

Issue 802703004: remove smoke from the repo (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years 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
« no previous file with comments | « pkg/smoke/test/codegen/end_to_end_test.dart ('k') | pkg/smoke/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
(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 import 'common.dart' show checkResults;
11
12 main() {
13 test('getters', () {
14 var generator = new SmokeCodeGenerator();
15 generator.addGetter('i');
16 checkResults(generator, initCall:
17 '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, initCall:
25 '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, initCall:
37 '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, initCall:
45 '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, initCall:
62 '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(() => generator.writeStaticConfiguration(sb),
82 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(() => generator.writeStaticConfiguration(sb),
90 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, initCall:
101 '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(new TypeIdentifier('a.dart', 'A'),
118 new TypeIdentifier('b.dart', 'B'));
119 generator.addParent(new TypeIdentifier('a.dart', 'C'),
120 new TypeIdentifier('a.dart', 'A'));
121 checkResults(generator,
122 imports: [
123 "import 'a.dart' as smoke_0;",
124 "import 'b.dart' as smoke_1;"
125 ],
126 initCall:
127 'useGeneratedCode(new StaticConfiguration(\n'
128 ' checkedMode: false,\n'
129 ' parents: {\n'
130 ' smoke_0.A: smoke_1.B,\n'
131 ' smoke_0.C: smoke_0.A,\n'
132 ' }));\n');
133 });
134
135 test('declarations', () {
136 var generator = new SmokeCodeGenerator();
137 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
138 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
139 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'bar',
140 new TypeIdentifier('dart:core', 'Function'), isMethod: true,
141 annotations: [new ConstExpression.constructor(null, 'Annotation',
142 [new ConstExpression.string("hi")], const {})]);
143 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), '[]',
144 new TypeIdentifier('dart:core', 'Function'), isMethod: true);
145 var symbol = "const Symbol('[]')";
146 var details = "$symbol, Function, kind: METHOD";
147 checkResults(generator,
148 imports: ["import 'a.dart' as smoke_0;"],
149 initCall:
150 'useGeneratedCode(new StaticConfiguration(\n'
151 ' checkedMode: false,\n'
152 ' declarations: {\n'
153 ' smoke_0.A: {\n'
154 ' $symbol: const Declaration($details),\n'
155 ' #bar: const Declaration(#bar, Function, kind: METHOD, '
156 'annotations: const [const Annotation(\'hi\')]),\n'
157 ' #foo: const Declaration(#foo, int, isFinal: true),\n'
158 ' },\n'
159 ' }));\n');
160 });
161
162 test('staticMethod', () {
163 var generator = new SmokeCodeGenerator();
164 generator.addStaticMethod(new TypeIdentifier('a.dart', 'A'), 'm1');
165 checkResults(generator,
166 imports: ["import 'a.dart' as smoke_0;"],
167 initCall:
168 'useGeneratedCode(new StaticConfiguration(\n'
169 ' checkedMode: false,\n'
170 ' staticMethods: {\n'
171 ' smoke_0.A: {\n'
172 ' #m1: smoke_0.A.m1,\n'
173 ' },\n'
174 ' }));\n');
175 });
176
177 test('repeated entries appear only once', () {
178 var generator = new SmokeCodeGenerator();
179 generator.addGetter('a');
180 generator.addGetter('a');
181 generator.addSetter('b');
182 generator.addSetter('b');
183 generator.addSymbol('d');
184 generator.addSymbol('d');
185 generator.addSymbol('c');
186 generator.addSymbol('c');
187 generator.addSymbol('c');
188
189 generator.addParent(new TypeIdentifier('a.dart', 'C'),
190 new TypeIdentifier('a.dart', 'A'));
191 generator.addParent(new TypeIdentifier('a.dart', 'C'),
192 new TypeIdentifier('a.dart', 'A'));
193 generator.addParent(new TypeIdentifier('a.dart', 'C'),
194 new TypeIdentifier('a.dart', 'A'));
195
196 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
197 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
198 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
199 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
200 generator.addDeclaration(new TypeIdentifier('a.dart', 'A'), 'foo',
201 new TypeIdentifier('dart:core', 'int'), isField: true, isFinal: true);
202
203 checkResults(generator,
204 imports: [
205 "import 'a.dart' as smoke_0;",
206 ],
207 initCall:
208 'useGeneratedCode(new StaticConfiguration(\n'
209 ' checkedMode: false,\n'
210 ' getters: {\n'
211 ' #a: (o) => o.a,\n'
212 ' },\n'
213 ' setters: {\n'
214 ' #b: (o, v) { o.b = v; },\n'
215 ' },\n'
216 ' parents: {\n'
217 ' smoke_0.C: smoke_0.A,\n'
218 ' },\n'
219 ' declarations: {\n'
220 ' smoke_0.A: {\n'
221 ' #foo: const Declaration(#foo, int, isFinal: true),\n'
222 ' },\n'
223 ' },\n'
224 ' names: {\n'
225 ' #c: r\'c\',\n'
226 ' #d: r\'d\',\n'
227 ' }));\n');
228 });
229 }
OLDNEW
« no previous file with comments | « pkg/smoke/test/codegen/end_to_end_test.dart ('k') | pkg/smoke/test/codegen/recorder_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698