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

Side by Side Diff: pkg/analysis_server/test/protocol_server_test.dart

Issue 725143004: Format and sort analyzer and analysis_server packages. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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
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 test.computer.element; 5 library test.computer.element;
6 6
7 import 'dart:mirrors'; 7 import 'dart:mirrors';
8 8
9 import 'package:analysis_server/src/constants.dart'; 9 import 'package:analysis_server/src/constants.dart';
10 import 'package:analysis_server/src/protocol_server.dart'; 10 import 'package:analysis_server/src/protocol_server.dart';
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 expect(location.offset, 20); 267 expect(location.offset, 20);
268 expect(location.length, 'myConstructor'.length); 268 expect(location.length, 'myConstructor'.length);
269 expect(location.startLine, 2); 269 expect(location.startLine, 2);
270 expect(location.startColumn, 11); 270 expect(location.startColumn, 11);
271 } 271 }
272 expect(element.parameters, '(int a, [String b])'); 272 expect(element.parameters, '(int a, [String b])');
273 expect(element.returnType, 'A'); 273 expect(element.returnType, 'A');
274 expect(element.flags, Element.FLAG_CONST); 274 expect(element.flags, Element.FLAG_CONST);
275 } 275 }
276 276
277 void test_fromElement_dynamic() {
278 var engineElement = engine.DynamicElementImpl.instance;
279 // create notification Element
280 Element element = newElement_fromEngine(engineElement);
281 expect(element.kind, ElementKind.UNKNOWN);
282 expect(element.name, 'dynamic');
283 expect(element.location, isNull);
284 expect(element.parameters, isNull);
285 expect(element.returnType, isNull);
286 expect(element.flags, 0);
287 }
288
277 void test_fromElement_FIELD() { 289 void test_fromElement_FIELD() {
278 engine.Source source = addSource('/test.dart', ''' 290 engine.Source source = addSource('/test.dart', '''
279 class A { 291 class A {
280 static const myField = 42; 292 static const myField = 42;
281 }'''); 293 }''');
282 engine.CompilationUnit unit = resolveLibraryUnit(source); 294 engine.CompilationUnit unit = resolveLibraryUnit(source);
283 engine.FieldElement engineElement = findElementInUnit(unit, 'myField'); 295 engine.FieldElement engineElement = findElementInUnit(unit, 'myField');
284 // create notification Element 296 // create notification Element
285 Element element = newElement_fromEngine(engineElement); 297 Element element = newElement_fromEngine(engineElement);
286 expect(element.kind, ElementKind.FIELD); 298 expect(element.kind, ElementKind.FIELD);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 expect(location.file, '/test.dart'); 406 expect(location.file, '/test.dart');
395 expect(location.offset, 16); 407 expect(location.offset, 16);
396 expect(location.length, 'mySetter'.length); 408 expect(location.length, 'mySetter'.length);
397 expect(location.startLine, 2); 409 expect(location.startLine, 2);
398 expect(location.startColumn, 7); 410 expect(location.startColumn, 7);
399 } 411 }
400 expect(element.parameters, '(String x)'); 412 expect(element.parameters, '(String x)');
401 expect(element.returnType, isNull); 413 expect(element.returnType, isNull);
402 expect(element.flags, 0); 414 expect(element.flags, 0);
403 } 415 }
404
405 void test_fromElement_dynamic() {
406 var engineElement = engine.DynamicElementImpl.instance;
407 // create notification Element
408 Element element = newElement_fromEngine(engineElement);
409 expect(element.kind, ElementKind.UNKNOWN);
410 expect(element.name, 'dynamic');
411 expect(element.location, isNull);
412 expect(element.parameters, isNull);
413 expect(element.returnType, isNull);
414 expect(element.flags, 0);
415 }
416 } 416 }
417 417
418 /**
419 * Helper class for testing the correspondence between an analysis engine enum
420 * and an analysis server API enum.
421 */
422 class EnumTester<EngineEnum, ApiEnum extends Enum> {
423 /**
424 * Test that the function [convert] properly converts all possible values of
425 * [EngineEnum] to an [ApiEnum] with the same name, with the exceptions noted
426 * in [exceptions]. For each key in [exceptions], if the corresponding value
427 * is null, then we check that converting the given key results in an error.
428 * If the corresponding value is an [ApiEnum], then we check that converting
429 * the given key results in the given value.
430 */
431 void run(ApiEnum convert(EngineEnum value), {Map<EngineEnum,
432 ApiEnum> exceptions: const {}}) {
433 ClassMirror engineClass = reflectClass(EngineEnum);
434 engineClass.staticMembers.forEach((Symbol symbol, MethodMirror method) {
435 if (symbol == #values) {
436 return;
437 }
438 if (!method.isGetter) {
439 return;
440 }
441 String enumName = MirrorSystem.getName(symbol);
442 EngineEnum engineValue = engineClass.getField(symbol).reflectee;
443 expect(engineValue, new isInstanceOf<EngineEnum>());
444 if (exceptions.containsKey(engineValue)) {
445 ApiEnum expectedResult = exceptions[engineValue];
446 if (expectedResult == null) {
447 expect(() {
448 convert(engineValue);
449 }, throws);
450 } else {
451 ApiEnum apiValue = convert(engineValue);
452 expect(apiValue, equals(expectedResult));
453 }
454 } else {
455 ApiEnum apiValue = convert(engineValue);
456 expect(apiValue.name, equals(enumName));
457 }
458 });
459 }
460 }
461
462
463 @ReflectiveTestCase() 418 @ReflectiveTestCase()
464 class EnumTest { 419 class EnumTest {
465 void test_AnalysisErrorSeverity() { 420 void test_AnalysisErrorSeverity() {
466 new EnumTester<engine.ErrorSeverity, AnalysisErrorSeverity>().run( 421 new EnumTester<engine.ErrorSeverity, AnalysisErrorSeverity>().run(
467 (engine.ErrorSeverity engineErrorSeverity) => 422 (engine.ErrorSeverity engineErrorSeverity) =>
468 new AnalysisErrorSeverity(engineErrorSeverity.name), 423 new AnalysisErrorSeverity(engineErrorSeverity.name),
469 exceptions: { 424 exceptions: {
470 engine.ErrorSeverity.NONE: null 425 engine.ErrorSeverity.NONE: null
471 }); 426 });
472 } 427 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 engine.ElementKind.UNIVERSE: ElementKind.UNKNOWN 459 engine.ElementKind.UNIVERSE: ElementKind.UNKNOWN
505 }); 460 });
506 } 461 }
507 462
508 void test_SearchResultKind() { 463 void test_SearchResultKind() {
509 // TODO(paulberry): why does the MatchKind class exist at all? Can't we 464 // TODO(paulberry): why does the MatchKind class exist at all? Can't we
510 // use SearchResultKind inside the analysis server? 465 // use SearchResultKind inside the analysis server?
511 new EnumTester<MatchKind, SearchResultKind>().run( 466 new EnumTester<MatchKind, SearchResultKind>().run(
512 newSearchResultKind_fromEngine, 467 newSearchResultKind_fromEngine,
513 exceptions: { 468 exceptions: {
514 // TODO(paulberry): do any of the exceptions below constitute bugs? 469 // TODO(paulberry): do any of the exceptions below constitute bugs?
515 MatchKind.ANGULAR_REFERENCE: SearchResultKind.UNKNOWN, 470 MatchKind.ANGULAR_REFERENCE: SearchResultKind.UNKNOWN,
516 MatchKind.ANGULAR_CLOSING_TAG_REFERENCE: SearchResultKind.UNKNOWN 471 MatchKind.ANGULAR_CLOSING_TAG_REFERENCE: SearchResultKind.UNKNOWN
517 }); 472 });
518 } 473 }
519 } 474 }
475
476
477 /**
478 * Helper class for testing the correspondence between an analysis engine enum
479 * and an analysis server API enum.
480 */
481 class EnumTester<EngineEnum, ApiEnum extends Enum> {
482 /**
483 * Test that the function [convert] properly converts all possible values of
484 * [EngineEnum] to an [ApiEnum] with the same name, with the exceptions noted
485 * in [exceptions]. For each key in [exceptions], if the corresponding value
486 * is null, then we check that converting the given key results in an error.
487 * If the corresponding value is an [ApiEnum], then we check that converting
488 * the given key results in the given value.
489 */
490 void run(ApiEnum convert(EngineEnum value), {Map<EngineEnum,
491 ApiEnum> exceptions: const {}}) {
492 ClassMirror engineClass = reflectClass(EngineEnum);
493 engineClass.staticMembers.forEach((Symbol symbol, MethodMirror method) {
494 if (symbol == #values) {
495 return;
496 }
497 if (!method.isGetter) {
498 return;
499 }
500 String enumName = MirrorSystem.getName(symbol);
501 EngineEnum engineValue = engineClass.getField(symbol).reflectee;
502 expect(engineValue, new isInstanceOf<EngineEnum>());
503 if (exceptions.containsKey(engineValue)) {
504 ApiEnum expectedResult = exceptions[engineValue];
505 if (expectedResult == null) {
506 expect(() {
507 convert(engineValue);
508 }, throws);
509 } else {
510 ApiEnum apiValue = convert(engineValue);
511 expect(apiValue, equals(expectedResult));
512 }
513 } else {
514 ApiEnum apiValue = convert(engineValue);
515 expect(apiValue.name, equals(enumName));
516 }
517 });
518 }
519 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/operation/test_all.dart ('k') | pkg/analysis_server/test/protocol_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698