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

Side by Side Diff: pkg/analyzer/test/src/source/source_resource_test.dart

Issue 2252573002: Implement a replacement for FileBasedSource (and _MemoryFileSource) (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 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
OLDNEW
(Empty)
1 // Copyright (c) 2016, 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 analyzer.test.src.source.source_resource_test;
6
7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/memory_file_system.dart';
9 import 'package:analyzer/file_system/physical_file_system.dart';
10 import 'package:analyzer/src/generated/java_core.dart';
11 import 'package:analyzer/src/generated/java_engine_io.dart';
12 import 'package:analyzer/src/generated/sdk.dart';
13 import 'package:analyzer/src/generated/source.dart';
14 import 'package:analyzer/src/generated/utilities_dart.dart';
15 import 'package:analyzer/src/source/source_resource.dart';
16 import 'package:unittest/unittest.dart';
17
18 import '../../reflective_tests.dart';
19 import '../../utils.dart';
20 import '../context/mock_sdk.dart';
21
22 main() {
23 initializeTestEnvironment();
24 runReflectiveTests(FileSourceTest);
25 }
26
27 @reflectiveTest
28 class FileSourceTest {
29 MemoryResourceProvider resourceProvider = new MemoryResourceProvider();
30
31 void test_equals_false_differentFiles() {
32 File file1 = resourceProvider.getFile("/does/not/exist1.dart");
33 File file2 = resourceProvider.getFile("/does/not/exist2.dart");
34 FileSource source1 = new FileSource(file1);
35 FileSource source2 = new FileSource(file2);
36 expect(source1 == source2, isFalse);
37 }
38
39 void test_equals_false_null() {
40 File file = resourceProvider.getFile("/does/not/exist1.dart");
41 FileSource source1 = new FileSource(file);
42 expect(source1 == null, isFalse);
43 }
44
45 void test_equals_true() {
46 File file1 = resourceProvider.getFile("/does/not/exist.dart");
47 File file2 = resourceProvider.getFile("/does/not/exist.dart");
48 FileSource source1 = new FileSource(file1);
49 FileSource source2 = new FileSource(file2);
50 expect(source1 == source2, isTrue);
51 }
52
53 void test_fileReadMode() {
54 expect(FileSource.fileReadMode('a'), 'a');
55 expect(FileSource.fileReadMode('a\n'), 'a\n');
56 expect(FileSource.fileReadMode('ab'), 'ab');
57 expect(FileSource.fileReadMode('abc'), 'abc');
58 expect(FileSource.fileReadMode('a\nb'), 'a\nb');
59 expect(FileSource.fileReadMode('a\rb'), 'a\rb');
60 expect(FileSource.fileReadMode('a\r\nb'), 'a\r\nb');
61 }
62
63 void test_fileReadMode_changed() {
64 FileSource.fileReadMode = (String s) => s + 'xyz';
65 expect(FileSource.fileReadMode('a'), 'axyz');
66 expect(FileSource.fileReadMode('a\n'), 'a\nxyz');
67 expect(FileSource.fileReadMode('ab'), 'abxyz');
68 expect(FileSource.fileReadMode('abc'), 'abcxyz');
69 FileSource.fileReadMode = (String s) => s;
70 }
71
72 void test_fileReadMode_normalize_eol_always() {
73 FileSource.fileReadMode = PhysicalResourceProvider.NORMALIZE_EOL_ALWAYS;
74 expect(FileSource.fileReadMode('a'), 'a');
75
76 // '\n' -> '\n' as first, last and only character
77 expect(FileSource.fileReadMode('\n'), '\n');
78 expect(FileSource.fileReadMode('a\n'), 'a\n');
79 expect(FileSource.fileReadMode('\na'), '\na');
80
81 // '\r\n' -> '\n' as first, last and only character
82 expect(FileSource.fileReadMode('\r\n'), '\n');
83 expect(FileSource.fileReadMode('a\r\n'), 'a\n');
84 expect(FileSource.fileReadMode('\r\na'), '\na');
85
86 // '\r' -> '\n' as first, last and only character
87 expect(FileSource.fileReadMode('\r'), '\n');
88 expect(FileSource.fileReadMode('a\r'), 'a\n');
89 expect(FileSource.fileReadMode('\ra'), '\na');
90
91 FileSource.fileReadMode = (String s) => s;
92 }
93
94 void test_getEncoding() {
95 SourceFactory factory =
96 new SourceFactory([new ResourceUriResolver(resourceProvider)]);
97 String fullPath = "/does/not/exist.dart";
98 File file = resourceProvider.getFile(fullPath);
99 FileSource source = new FileSource(file);
100 expect(factory.fromEncoding(source.encoding), source);
101 }
102
103 void test_getFullName() {
104 String fullPath = "/does/not/exist.dart";
105 File file = resourceProvider.getFile(fullPath);
106 FileSource source = new FileSource(file);
107 expect(source.fullName, file.path);
108 }
109
110 void test_getShortName() {
111 File file = resourceProvider.getFile("/does/not/exist.dart");
112 FileSource source = new FileSource(file);
113 expect(source.shortName, "exist.dart");
114 }
115
116 void test_hashCode() {
117 File file1 = resourceProvider.getFile("/does/not/exist.dart");
118 File file2 = resourceProvider.getFile("/does/not/exist.dart");
119 FileSource source1 = new FileSource(file1);
120 FileSource source2 = new FileSource(file2);
121 expect(source2.hashCode, source1.hashCode);
122 }
123
124 void test_isInSystemLibrary_contagious() {
125 DartSdk sdk = _createSdk();
126 UriResolver resolver = new DartUriResolver(sdk);
127 SourceFactory factory = new SourceFactory([resolver]);
128 // resolve dart:core
129 Source result =
130 resolver.resolveAbsolute(parseUriWithException("dart:async"));
131 expect(result, isNotNull);
132 expect(result.isInSystemLibrary, isTrue);
133 // system libraries reference only other system libraries
134 Source partSource = factory.resolveUri(result, "stream.dart");
135 expect(partSource, isNotNull);
136 expect(partSource.isInSystemLibrary, isTrue);
137 }
138
139 void test_isInSystemLibrary_false() {
140 File file = resourceProvider.getFile("/does/not/exist.dart");
141 FileSource source = new FileSource(file);
142 expect(source, isNotNull);
143 expect(source.fullName, file.path);
144 expect(source.isInSystemLibrary, isFalse);
145 }
146
147 void test_issue14500() {
148 // see https://code.google.com/p/dart/issues/detail?id=14500
149 FileSource source =
150 new FileSource(resourceProvider.getFile("/some/packages/foo:bar.dart"));
151 expect(source, isNotNull);
152 expect(source.exists(), isFalse);
153 }
154
155 void test_resolveRelative_file_fileName() {
156 if (OSUtilities.isWindows()) {
157 // On Windows, the URI that is produced includes a drive letter,
158 // which I believe is not consistent across all machines that might run
159 // this test.
160 return;
161 }
162 File file = resourceProvider.getFile("/a/b/test.dart");
163 FileSource source = new FileSource(file);
164 expect(source, isNotNull);
165 Uri relative =
166 resolveRelativeUri(source.uri, parseUriWithException("lib.dart"));
167 expect(relative, isNotNull);
168 expect(relative.toString(), "file:///a/b/lib.dart");
169 }
170
171 void test_resolveRelative_file_filePath() {
172 if (OSUtilities.isWindows()) {
173 // On Windows, the URI that is produced includes a drive letter,
174 // which I believe is not consistent across all machines that might run
175 // this test.
176 return;
177 }
178 File file = resourceProvider.getFile("/a/b/test.dart");
179 FileSource source = new FileSource(file);
180 expect(source, isNotNull);
181 Uri relative =
182 resolveRelativeUri(source.uri, parseUriWithException("c/lib.dart"));
183 expect(relative, isNotNull);
184 expect(relative.toString(), "file:///a/b/c/lib.dart");
185 }
186
187 void test_resolveRelative_file_filePathWithParent() {
188 if (OSUtilities.isWindows()) {
189 // On Windows, the URI that is produced includes a drive letter, which I
190 // believe is not consistent across all machines that might run this test.
191 return;
192 }
193 File file = resourceProvider.getFile("/a/b/test.dart");
194 FileSource source = new FileSource(file);
195 expect(source, isNotNull);
196 Uri relative =
197 resolveRelativeUri(source.uri, parseUriWithException("../c/lib.dart"));
198 expect(relative, isNotNull);
199 expect(relative.toString(), "file:///a/c/lib.dart");
200 }
201
202 void test_system() {
203 File file = resourceProvider.getFile("/does/not/exist.dart");
204 FileSource source =
205 new FileSource(file, parseUriWithException("dart:core"));
206 expect(source, isNotNull);
207 expect(source.fullName, file.path);
208 expect(source.isInSystemLibrary, isTrue);
209 }
210
211 DartSdk _createSdk() {
212 return new MockSdk(resourceProvider: resourceProvider);
213 }
214 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698