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

Side by Side Diff: pkg/analysis_server/test/computer/element_test.dart

Issue 356563006: Element.fromEngine() constructor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Tweaks for review comments. Created 6 years, 6 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 test.computer.element;
6
7 import 'package:analysis_server/src/computer/element.dart';
8 import 'package:analysis_server/src/constants.dart';
9 import 'package:analyzer/src/generated/element.dart' as engine;
10 import 'package:analyzer/src/generated/utilities_dart.dart' as engine;
11 import 'package:typed_mock/typed_mock.dart';
12 import 'package:unittest/unittest.dart';
13
14 import '../index/store/typed_mocks.dart';
15 import '../reflective_tests.dart';
16
17
18 main() {
19 groupSep = ' | ';
20 group('Element', () {
21 runReflectiveTests(_ElementTest);
22 });
23 group('ElementKind', () {
24 test('toString', test_ElementKind_toString);
25 test('valueOf', test_ElementKind_valueOf);
26 test('valueOfEngine', test_ElementKind_valueOfEngine);
27 });
28 }
29
30
31 void test_ElementKind_toString() {
32 expect(ElementKind.CLASS.toString(), 'CLASS');
33 expect(ElementKind.COMPILATION_UNIT.toString(), 'COMPILATION_UNIT');
34 }
35
36
37 void test_ElementKind_valueOf() {
38 expect(ElementKind.valueOf(ElementKind.CLASS.name), ElementKind.CLASS);
39 expect(ElementKind.valueOf(ElementKind.CLASS_TYPE_ALIAS.name),
40 ElementKind.CLASS_TYPE_ALIAS);
41 expect(ElementKind.valueOf(ElementKind.COMPILATION_UNIT.name),
42 ElementKind.COMPILATION_UNIT);
43 expect(ElementKind.valueOf(ElementKind.CONSTRUCTOR.name),
44 ElementKind.CONSTRUCTOR);
45 expect(ElementKind.valueOf(ElementKind.FIELD.name), ElementKind.FIELD);
46 expect(ElementKind.valueOf(ElementKind.FUNCTION.name), ElementKind.FUNCTION);
47 expect(ElementKind.valueOf(ElementKind.FUNCTION_TYPE_ALIAS.name),
48 ElementKind.FUNCTION_TYPE_ALIAS);
49 expect(ElementKind.valueOf(ElementKind.GETTER.name), ElementKind.GETTER);
50 expect(ElementKind.valueOf(ElementKind.LIBRARY.name), ElementKind.LIBRARY);
51 expect(ElementKind.valueOf(ElementKind.METHOD.name), ElementKind.METHOD);
52 expect(ElementKind.valueOf(ElementKind.SETTER.name), ElementKind.SETTER);
53 expect(ElementKind.valueOf(ElementKind.TOP_LEVEL_VARIABLE.name),
54 ElementKind.TOP_LEVEL_VARIABLE);
55 expect(ElementKind.valueOf(ElementKind.UNIT_TEST_CASE.name),
56 ElementKind.UNIT_TEST_CASE);
57 expect(ElementKind.valueOf(ElementKind.UNIT_TEST_GROUP.name),
58 ElementKind.UNIT_TEST_GROUP);
59 expect(ElementKind.valueOf(ElementKind.UNKNOWN.name), ElementKind.UNKNOWN);
60 expect(() {
61 ElementKind.valueOf('no-such-kind');
62 }, throws);
63 }
64
65
66 void test_ElementKind_valueOfEngine() {
67 expect(ElementKind.valueOfEngine(engine.ElementKind.CLASS),
68 ElementKind.CLASS);
69 expect(ElementKind.valueOfEngine(engine.ElementKind.COMPILATION_UNIT),
70 ElementKind.COMPILATION_UNIT);
71 expect(ElementKind.valueOfEngine(engine.ElementKind.CONSTRUCTOR),
72 ElementKind.CONSTRUCTOR);
73 expect(ElementKind.valueOfEngine(engine.ElementKind.FIELD),
74 ElementKind.FIELD);
75 expect(ElementKind.valueOfEngine(engine.ElementKind.FUNCTION),
76 ElementKind.FUNCTION);
77 expect(ElementKind.valueOfEngine(engine.ElementKind.FUNCTION_TYPE_ALIAS),
78 ElementKind.FUNCTION_TYPE_ALIAS);
79 expect(ElementKind.valueOfEngine(engine.ElementKind.GETTER),
80 ElementKind.GETTER);
81 expect(ElementKind.valueOfEngine(engine.ElementKind.LIBRARY),
82 ElementKind.LIBRARY);
83 expect(ElementKind.valueOfEngine(engine.ElementKind.METHOD),
84 ElementKind.METHOD);
85 expect(ElementKind.valueOfEngine(engine.ElementKind.SETTER),
86 ElementKind.SETTER);
87 expect(ElementKind.valueOfEngine(engine.ElementKind.TOP_LEVEL_VARIABLE),
88 ElementKind.TOP_LEVEL_VARIABLE);
89 expect(ElementKind.valueOfEngine(engine.ElementKind.ANGULAR_COMPONENT),
90 ElementKind.UNKNOWN);
91 }
92
93
94 @ReflectiveTestCase()
95 class _ElementTest {
96 void test_fromElement_CLASS() {
97 engine.ClassElement engineElement = new MockClassElement();
98 when(engineElement.kind).thenReturn(engine.ElementKind.CLASS);
99 when(engineElement.nameOffset).thenReturn(1);
100 when(engineElement.displayName).thenReturn('MyClass');
101 when(engineElement.isAbstract).thenReturn(true);
102 when(engineElement.isDeprecated).thenReturn(true);
103 when(engineElement.isPrivate).thenReturn(true);
104 // create notification Element
105 Element element = new Element.fromEngine(engineElement);
106 expect(element.kind, ElementKind.CLASS);
107 expect(element.name, 'MyClass');
108 expect(element.offset, 1);
109 expect(element.length, 'MyClass'.length);
110 expect(element.flags, Element.FLAG_ABSTRACT | Element.FLAG_DEPRECATED |
111 Element.FLAG_PRIVATE);
112 }
113
114 void test_fromElement_CONSTRUCTOR() {
115 engine.ConstructorElement engineElement = new MockConstructorElement();
116 when(engineElement.kind).thenReturn(engine.ElementKind.CONSTRUCTOR);
117 when(engineElement.nameOffset).thenReturn(1);
118 when(engineElement.displayName).thenReturn('myConstructor');
119 when(engineElement.isConst).thenReturn(true);
120 when(engineElement.isDeprecated).thenReturn(false);
121 when(engineElement.isPrivate).thenReturn(false);
122 when(engineElement.isStatic).thenReturn(false);
123 when(engineElement.parameters).thenReturn([]);
124 {
125 engine.ParameterElement a = new MockParameterElement('int a');
126 engine.ParameterElement b = new MockParameterElement('String b');
127 when(b.kind).thenReturn(engine.ParameterKind.POSITIONAL);
128 when(engineElement.parameters).thenReturn([a, b]);
129 }
130 {
131 engine.DartType returnType = new MockDartType('Map<int, String>');
132 when(engineElement.returnType).thenReturn(returnType);
133 }
134 // create notification Element
135 Element element = new Element.fromEngine(engineElement);
136 expect(element.kind, ElementKind.CONSTRUCTOR);
137 expect(element.name, 'myConstructor');
138 expect(element.offset, 1);
139 expect(element.length, 'myConstructor'.length);
140 expect(element.parameters, '(int a, [String b])');
141 expect(element.returnType, 'Map<int, String>');
142 expect(element.flags, Element.FLAG_CONST);
143 }
144
145 void test_fromElement_FIELD() {
146 engine.FieldElement engineElement = new MockFieldElement();
147 when(engineElement.kind).thenReturn(engine.ElementKind.FIELD);
148 when(engineElement.nameOffset).thenReturn(1);
149 when(engineElement.displayName).thenReturn('myField');
150 when(engineElement.isConst).thenReturn(true);
151 when(engineElement.isFinal).thenReturn(true);
152 when(engineElement.isDeprecated).thenReturn(false);
153 when(engineElement.isPrivate).thenReturn(false);
154 when(engineElement.isStatic).thenReturn(true);
155 // create notification Element
156 Element element = new Element.fromEngine(engineElement);
157 expect(element.kind, ElementKind.FIELD);
158 expect(element.name, 'myField');
159 expect(element.offset, 1);
160 expect(element.length, 'myField'.length);
161 expect(element.parameters, isNull);
162 expect(element.returnType, isNull);
163 expect(element.flags, Element.FLAG_CONST | Element.FLAG_FINAL |
164 Element.FLAG_STATIC);
165 }
166
167 void test_fromElement_GETTER() {
168 engine.PropertyAccessorElement engineElement =
169 new MockPropertyAccessorElement();
170 when(engineElement.kind).thenReturn(engine.ElementKind.GETTER);
171 when(engineElement.nameOffset).thenReturn(1);
172 when(engineElement.displayName).thenReturn('myGetter');
173 when(engineElement.isAbstract).thenReturn(false);
174 when(engineElement.isDeprecated).thenReturn(true);
175 when(engineElement.isPrivate).thenReturn(false);
176 when(engineElement.isStatic).thenReturn(false);
177 when(engineElement.parameters).thenReturn([]);
178 {
179 engine.DartType returnType = new MockDartType('String');
180 when(engineElement.returnType).thenReturn(returnType);
181 }
182 // create notification Element
183 Element element = new Element.fromEngine(engineElement);
184 expect(element.kind, ElementKind.GETTER);
185 expect(element.name, 'myGetter');
186 expect(element.offset, 1);
187 expect(element.length, 'myGetter'.length);
188 expect(element.parameters, '()');
189 expect(element.returnType, 'String');
190 expect(element.flags, Element.FLAG_DEPRECATED);
191 }
192
193 void test_fromElement_METHOD() {
194 engine.MethodElement engineElement = new MockMethodElement();
195 when(engineElement.kind).thenReturn(engine.ElementKind.METHOD);
196 when(engineElement.nameOffset).thenReturn(1);
197 when(engineElement.displayName).thenReturn('myMethod');
198 when(engineElement.isAbstract).thenReturn(false);
199 when(engineElement.isDeprecated).thenReturn(false);
200 when(engineElement.isPrivate).thenReturn(false);
201 when(engineElement.isStatic).thenReturn(true);
202 {
203 engine.ParameterElement a = new MockParameterElement('int a');
204 engine.ParameterElement b = new MockParameterElement('String b');
205 when(b.kind).thenReturn(engine.ParameterKind.NAMED);
206 when(engineElement.parameters).thenReturn([a, b]);
207 }
208 {
209 engine.DartType returnType = new MockDartType('List<String>');
210 when(engineElement.returnType).thenReturn(returnType);
211 }
212 // create notification Element
213 Element element = new Element.fromEngine(engineElement);
214 expect(element.kind, ElementKind.METHOD);
215 expect(element.name, 'myMethod');
216 expect(element.offset, 1);
217 expect(element.length, 'myMethod'.length);
218 expect(element.parameters, '(int a, {String b})');
219 expect(element.returnType, 'List<String>');
220 expect(element.flags, Element.FLAG_STATIC);
221 }
222
223 void test_fromJson() {
224 var flags = Element.FLAG_DEPRECATED | Element.FLAG_PRIVATE |
225 Element.FLAG_STATIC;
226 var json = {
227 KIND: 'METHOD',
228 NAME: 'my name',
229 OFFSET: 1,
230 LENGTH: 2,
231 FLAGS: flags,
232 PARAMETERS: '(int a, String b)',
233 RETURN_TYPE: 'List<String>'
234 };
235 Element element = new Element.fromJson(json);
236 expect(element.kind, ElementKind.METHOD);
237 expect(element.name, 'my name');
238 expect(element.offset, 1);
239 expect(element.length, 2);
240 expect(element.flags, flags);
241 expect(element.isAbstract, isFalse);
242 expect(element.isConst, isFalse);
243 expect(element.isDeprecated, isTrue);
244 expect(element.isFinal, isFalse);
245 expect(element.isPrivate, isTrue);
246 expect(element.isStatic, isTrue);
247 }
248
249 void test_toJson() {
250 var json = {
251 KIND: 'METHOD',
252 NAME: 'my name',
253 OFFSET: 1,
254 LENGTH: 2,
255 FLAGS: Element.FLAG_DEPRECATED | Element.FLAG_PRIVATE |
256 Element.FLAG_STATIC,
257 PARAMETERS: '(int a, String b)',
258 RETURN_TYPE: 'List<String>'
259 };
260 Element element = new Element.fromJson(json);
261 expect(element.toJson(), equals(json));
262 }
263 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/computer/element.dart ('k') | pkg/analysis_server/test/computer/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698