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

Side by Side Diff: pkg/analysis_services/test/refactoring/abstract_rename.dart

Issue 484733003: Import analysis_services.dart into analysis_server.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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.services.refactoring.rename;
6
7 import 'dart:async';
8
9 import 'package:analysis_services/correction/change.dart';
10 import 'package:analysis_services/refactoring/refactoring.dart';
11 import 'package:analyzer/file_system/file_system.dart';
12 import 'package:analyzer/src/generated/ast.dart';
13 import 'package:analyzer/src/generated/element.dart';
14 import 'package:analyzer/src/generated/source.dart';
15 import 'package:unittest/unittest.dart';
16
17 import 'abstract_refactoring.dart';
18
19
20 /**
21 * The base class for all [RenameRefactoring] tests.
22 */
23 class RenameRefactoringTest extends RefactoringTest {
24 RenameRefactoring refactoring;
25
26 /**
27 * Asserts that [refactoringChange] contains a [FileEdit] for the file
28 * with the given [path], and it results the [expectedCode].
29 */
30 void assertFileChangeResult(String path, String expectedCode) {
31 // prepare FileEdit
32 FileEdit fileEdit = refactoringChange.getFileEdit(path);
33 expect(fileEdit, isNotNull);
34 // validate resulting code
35 File file = provider.getResource(path);
36 Source source = file.createSource();
37 String ini = context.getContents(source).data;
38 String actualCode = Edit.applySequence(ini, fileEdit.edits);
39 expect(actualCode, expectedCode);
40 }
41
42 /**
43 * Asserts that [refactoringChange] does not contain a [FileEdit] for the file
44 * with the given [path].
45 */
46 void assertNoFileChange(String path) {
47 FileEdit fileEdit = refactoringChange.getFileEdit(path);
48 expect(fileEdit, isNull);
49 }
50
51 /**
52 * Asserts that [refactoring] has potential edits in [testFile] at offset
53 * of the given [searches].
54 */
55 void assertPotentialEdits(List<String> searches) {
56 Set<int> expectedOffsets = new Set<int>();
57 for (String search in searches) {
58 int offset = findOffset(search);
59 expectedOffsets.add(offset);
60 }
61 // remove offset marked as potential
62 for (String potentialId in refactoring.potentialEditIds) {
63 Edit edit = findEditById(potentialId);
64 expect(edit, isNotNull);
65 expectedOffsets.remove(edit.offset);
66 }
67 // all potential offsets are marked as such
68 expect(expectedOffsets, isEmpty);
69 }
70
71 /**
72 * Checks that all conditions are OK and the result of applying the [Change]
73 * to [testUnit] is [expectedCode].
74 */
75 Future assertSuccessfulRename(String expectedCode) {
76 return assertRefactoringConditionsOK().then((_) {
77 return refactoring.createChange().then((Change refactoringChange) {
78 this.refactoringChange = refactoringChange;
79 assertTestChangeResult(expectedCode);
80 });
81 });
82 }
83
84 /**
85 * Asserts that [refactoringChange] contains a [FileEdit] for [testFile], and
86 * it results the [expectedCode].
87 */
88 void assertTestChangeResult(String expectedCode) {
89 // prepare FileEdit
90 FileEdit fileEdit = refactoringChange.getFileEdit(testFile);
91 expect(fileEdit, isNotNull);
92 // validate resulting code
93 String actualCode = Edit.applySequence(testCode, fileEdit.edits);
94 expect(actualCode, expectedCode);
95 }
96
97 /**
98 * Creates a new [RenameRefactoring] in [refactoring] for the [Element] of
99 * the [SimpleIdentifier] at the given [search] pattern.
100 */
101 void createRenameRefactoringAtString(String search) {
102 SimpleIdentifier identifier = findIdentifier(search);
103 Element element = identifier.bestElement;
104 // TODO(scheglov) uncomment later
105 // if (element instanceof PrefixElement) {
106 // element = IndexContributor.getImportElement(identifier);
107 // }
108 createRenameRefactoringForElement(element);
109 }
110
111 /**
112 * Creates a new [RenameRefactoring] in [refactoring] for [element].
113 * Fails if no [RenameRefactoring] can be created.
114 */
115 void createRenameRefactoringForElement(Element element) {
116 refactoring = new RenameRefactoring(searchEngine, element);
117 expect(refactoring, isNotNull, reason: "No refactoring for '$element'.");
118 }
119
120 /**
121 * Returns the [Edit] with the given [id], maybe `null`.
122 */
123 Edit findEditById(String id) {
124 for (FileEdit fileEdit in refactoringChange.fileEdits) {
125 for (Edit edit in fileEdit.edits) {
126 if (edit.id == id) {
127 return edit;
128 }
129 }
130 }
131 return null;
132 }
133
134 // /**
135 // * Asserts result of applying [change] to [testCode].
136 // */
137 // void assertTestChangeResult(Change change, String expected)
138 // {
139 // assertChangeResult(change, testSource, expected);
140 // }
141 //
142 // /**
143 // * Asserts result of applying [change] to [source].
144 // */
145 // void assertChangeResult(Change change, Source source, String expected)
146 // {
147 // SourceChange sourceChange = getSourceChange(compositeChange, source);
148 // assertNotNull("No change for: " + source.toString(), sourceChange);
149 // String sourceResult = getChangeResult(context, source, sourceChange);
150 // assertEquals(expected, sourceResult);
151 //// AnalysisContext context = getAnalysisContext();
152 //// assertChangeResult(context, compositeChange, source, expected);
153 // }
154 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698