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

Side by Side Diff: pkg/analysis_server/test/integration/analysis/overrides_test.dart

Issue 631553002: Change integration test notifications to use structured objects. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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
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.integration.analysis.overrides; 5 library test.integration.analysis.overrides;
6 6
7 import 'package:analysis_server/src/protocol.dart'; 7 import 'package:analysis_server/src/protocol.dart';
8 import 'package:unittest/unittest.dart'; 8 import 'package:unittest/unittest.dart';
9 9
10 import '../../reflective_tests.dart'; 10 import '../../reflective_tests.dart';
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 method5() {} 46 method5() {}
47 method6() {} 47 method6() {}
48 method7() {} 48 method7() {}
49 } 49 }
50 '''; 50 ''';
51 writeFile(pathname, text); 51 writeFile(pathname, text);
52 standardAnalysisSetup(); 52 standardAnalysisSetup();
53 sendAnalysisSetSubscriptions({ 53 sendAnalysisSetSubscriptions({
54 AnalysisService.OVERRIDES: [pathname] 54 AnalysisService.OVERRIDES: [pathname]
55 }); 55 });
56 List overrides; 56 List<Override> overrides;
57 onAnalysisOverrides.listen((params) { 57 onAnalysisOverrides.listen((AnalysisOverridesParams params) {
58 expect(params['file'], equals(pathname)); 58 expect(params.file, equals(pathname));
59 overrides = params['overrides']; 59 overrides = params.overrides;
60 }); 60 });
61 return analysisFinished.then((_) { 61 return analysisFinished.then((_) {
62 int targetOffset = text.indexOf('Target'); 62 int targetOffset = text.indexOf('Target');
63 Map findOverride(String methodName) { 63 Override findOverride(String methodName) {
64 int methodOffset = text.indexOf(methodName, targetOffset); 64 int methodOffset = text.indexOf(methodName, targetOffset);
65 for (Map override in overrides) { 65 for (Override override in overrides) {
66 if (override['offset'] == methodOffset) { 66 if (override.offset == methodOffset) {
67 return override; 67 return override;
68 } 68 }
69 } 69 }
70 return null; 70 return null;
71 } 71 }
72 void checkOverrides(String methodName, bool 72 void checkOverrides(String methodName, bool
73 expectedOverridesBase, List<String> expectedOverridesInterfaces) { 73 expectedOverridesBase, List<String> expectedOverridesInterfaces) {
74 Map override = findOverride(methodName); 74 Override override = findOverride(methodName);
75 if (!expectedOverridesBase && expectedOverridesInterfaces.isEmpty) { 75 if (!expectedOverridesBase && expectedOverridesInterfaces.isEmpty) {
76 // This method overrides nothing, so it should not appear in the 76 // This method overrides nothing, so it should not appear in the
77 // overrides list. 77 // overrides list.
78 expect(override, isNull); 78 expect(override, isNull);
79 return; 79 return;
80 } else { 80 } else {
81 expect(override, isNotNull); 81 expect(override, isNotNull);
82 } 82 }
83 expect(override['length'], equals(methodName.length)); 83 expect(override.length, equals(methodName.length));
84 Map superclassMember = override['superclassMember']; 84 OverriddenMember superclassMember = override.superclassMember;
85 if (expectedOverridesBase) { 85 if (expectedOverridesBase) {
86 expect(superclassMember['element']['name'], equals(methodName)); 86 expect(superclassMember.element.name, equals(methodName));
87 expect(superclassMember['className'], equals('Base')); 87 expect(superclassMember.className, equals('Base'));
88 } else { 88 } else {
89 expect(superclassMember, isNull); 89 expect(superclassMember, isNull);
90 } 90 }
91 List interfaceMembers = override['interfaceMembers']; 91 List<OverriddenMember> interfaceMembers = override.interfaceMembers;
92 if (expectedOverridesInterfaces.isNotEmpty) { 92 if (expectedOverridesInterfaces.isNotEmpty) {
93 expect(interfaceMembers, isNotNull); 93 expect(interfaceMembers, isNotNull);
94 Set<String> actualOverridesInterfaces = new Set<String>(); 94 Set<String> actualOverridesInterfaces = new Set<String>();
95 for (Map overriddenMember in interfaceMembers) { 95 for (OverriddenMember overriddenMember in interfaceMembers) {
96 expect(overriddenMember['element']['name'], equals(methodName)); 96 expect(overriddenMember.element.name, equals(methodName));
97 String className = overriddenMember['className']; 97 String className = overriddenMember.className;
98 bool wasAdded = actualOverridesInterfaces.add(className); 98 bool wasAdded = actualOverridesInterfaces.add(className);
99 expect(wasAdded, isTrue); 99 expect(wasAdded, isTrue);
100 } 100 }
101 expect(actualOverridesInterfaces, equals( 101 expect(actualOverridesInterfaces, equals(
102 expectedOverridesInterfaces.toSet())); 102 expectedOverridesInterfaces.toSet()));
103 } else { 103 } else {
104 expect(interfaceMembers, isNull); 104 // TODO(paulberry): As a result of bug 21230, an Override with a
105 // missing interfaceMembers field is misinterpreted as having an
106 // interfaceMembers field which is an empty list. Once bug 21230 is
107 // fixed this should be an "isNull" check.
108 expect(interfaceMembers, isEmpty);
105 } 109 }
106 } 110 }
107 checkOverrides('method0', true, ['Interface1', 'Interface2']); 111 checkOverrides('method0', true, ['Interface1', 'Interface2']);
108 checkOverrides('method1', false, ['Interface1', 'Interface2']); 112 checkOverrides('method1', false, ['Interface1', 'Interface2']);
109 checkOverrides('method2', true, ['Interface1']); 113 checkOverrides('method2', true, ['Interface1']);
110 checkOverrides('method3', false, ['Interface1']); 114 checkOverrides('method3', false, ['Interface1']);
111 checkOverrides('method4', true, ['Interface2']); 115 checkOverrides('method4', true, ['Interface2']);
112 checkOverrides('method5', false, ['Interface2']); 116 checkOverrides('method5', false, ['Interface2']);
113 checkOverrides('method6', true, []); 117 checkOverrides('method6', true, []);
114 checkOverrides('method7', false, []); 118 checkOverrides('method7', false, []);
115 }); 119 });
116 } 120 }
117 } 121 }
118 122
119 main() { 123 main() {
120 runReflectiveTests(Test); 124 runReflectiveTests(Test);
121 } 125 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698