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

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

Issue 476163002: Add an integration test for analysis.overrides. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix long lines. Created 6 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 | 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.integration.analysis.overrides;
6
7 import 'package:analysis_testing/reflective_tests.dart';
8 import 'package:unittest/unittest.dart';
9
10 import '../integration_tests.dart';
11
12 @ReflectiveTestCase()
13 class Test extends AbstractAnalysisServerIntegrationTest {
14 test_overrides() {
15 String pathname = sourcePath('test.dart');
16 String text =
17 r'''
18 abstract class Interface1 {
19 method0();
20 method1();
21 method2();
22 method3();
23 }
24
25 abstract class Interface2 {
26 method0();
27 method1();
28 method4();
29 method5();
30 }
31
32 abstract class Base {
33 method0();
34 method2();
35 method4();
36 method6();
37 }
38
39 class Target extends Base implements Interface1, Interface2 {
40 method0() {}
41 method1() {}
42 method2() {}
43 method3() {}
44 method4() {}
45 method5() {}
46 method6() {}
47 method7() {}
48 }
49 ''';
50 writeFile(pathname, text);
51 standardAnalysisSetup();
52 sendAnalysisSetSubscriptions({
53 'OVERRIDES': [pathname]
54 });
55 List overrides;
56 onAnalysisOverrides.listen((params) {
57 expect(params['file'], equals(pathname));
58 overrides = params['overrides'];
59 });
60 return analysisFinished.then((_) {
61 int targetOffset = text.indexOf('Target');
62 Map findOverride(String methodName) {
63 int methodOffset = text.indexOf(methodName, targetOffset);
64 for (Map override in overrides) {
65 if (override['offset'] == methodOffset) {
66 return override;
67 }
68 }
69 return null;
70 }
71 void checkOverrides(String methodName, bool
72 expectedOverridesBase, List<String> expectedOverridesInterfaces) {
73 Map override = findOverride(methodName);
74 if (!expectedOverridesBase && expectedOverridesInterfaces.isEmpty) {
75 // This method overrides nothing, so it should not appear in the
76 // overrides list.
77 expect(override, isNull);
78 return;
79 } else {
80 expect(override, isNotNull);
81 }
82 expect(override['length'], equals(methodName.length));
83 Map superclassMember = override['superclassMember'];
84 if (expectedOverridesBase) {
85 expect(superclassMember['element']['name'], equals(methodName));
86 expect(superclassMember['className'], equals('Base'));
87 } else {
88 expect(superclassMember, isNull);
89 }
90 List interfaceMembers = override['interfaceMembers'];
91 if (expectedOverridesInterfaces.isNotEmpty) {
92 expect(interfaceMembers, isNotNull);
93 Set<String> actualOverridesInterfaces = new Set<String>();
94 for (Map overriddenMember in interfaceMembers) {
95 expect(overriddenMember['element']['name'], equals(methodName));
96 String className = overriddenMember['className'];
97 bool wasAdded = actualOverridesInterfaces.add(className);
98 expect(wasAdded, isTrue);
99 }
100 expect(actualOverridesInterfaces, equals(
101 expectedOverridesInterfaces.toSet()));
102 } else {
103 expect(interfaceMembers, isNull);
104 }
105 }
106 checkOverrides('method0', true, ['Interface1', 'Interface2']);
107 checkOverrides('method1', false, ['Interface1', 'Interface2']);
108 checkOverrides('method2', true, ['Interface1']);
109 checkOverrides('method3', false, ['Interface1']);
110 checkOverrides('method4', true, ['Interface2']);
111 checkOverrides('method5', false, ['Interface2']);
112 checkOverrides('method6', true, []);
113 checkOverrides('method7', false, []);
114 });
115 }
116 }
117
118 main() {
119 runReflectiveTests(Test);
120 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/doc/api.html ('k') | pkg/analysis_server/test/integration/analysis/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698