| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:analyzer/file_system/file_system.dart'; |
| import 'package:analyzer/src/generated/java_engine_io.dart'; |
| import 'package:analyzer/src/generated/sdk.dart'; |
| import 'package:analyzer/src/generated/source.dart'; |
| import 'package:analyzer/src/generated/utilities_dart.dart'; |
| import 'package:analyzer/src/source/source_resource.dart'; |
| import 'package:analyzer/src/test_utilities/mock_sdk.dart'; |
| import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart'; |
| import 'package:test/test.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(FileSourceTest); |
| }); |
| } |
| |
| @reflectiveTest |
| class FileSourceTest with ResourceProviderMixin { |
| void test_equals_false_differentFiles() { |
| File file1 = getFile("/does/not/exist1.dart"); |
| File file2 = getFile("/does/not/exist2.dart"); |
| FileSource source1 = FileSource(file1); |
| FileSource source2 = FileSource(file2); |
| expect(source1 == source2, isFalse); |
| } |
| |
| void test_equals_false_null() { |
| File file = getFile("/does/not/exist1.dart"); |
| FileSource source1 = FileSource(file); |
| expect(source1 == null, isFalse); |
| } |
| |
| void test_equals_true() { |
| File file1 = getFile("/does/not/exist.dart"); |
| File file2 = getFile("/does/not/exist.dart"); |
| FileSource source1 = FileSource(file1); |
| FileSource source2 = FileSource(file2); |
| expect(source1 == source2, isTrue); |
| } |
| |
| void test_fileReadMode() { |
| expect(FileSource.fileReadMode('a'), 'a'); |
| expect(FileSource.fileReadMode('a\n'), 'a\n'); |
| expect(FileSource.fileReadMode('ab'), 'ab'); |
| expect(FileSource.fileReadMode('abc'), 'abc'); |
| expect(FileSource.fileReadMode('a\nb'), 'a\nb'); |
| expect(FileSource.fileReadMode('a\rb'), 'a\rb'); |
| expect(FileSource.fileReadMode('a\r\nb'), 'a\r\nb'); |
| } |
| |
| void test_fileReadMode_changed() { |
| FileSource.fileReadMode = (String s) => s + 'xyz'; |
| expect(FileSource.fileReadMode('a'), 'axyz'); |
| expect(FileSource.fileReadMode('a\n'), 'a\nxyz'); |
| expect(FileSource.fileReadMode('ab'), 'abxyz'); |
| expect(FileSource.fileReadMode('abc'), 'abcxyz'); |
| FileSource.fileReadMode = (String s) => s; |
| } |
| |
| void test_getFullName() { |
| File file = getFile("/does/not/exist.dart"); |
| FileSource source = FileSource(file); |
| expect(source.fullName, file.path); |
| } |
| |
| void test_getShortName() { |
| File file = getFile("/does/not/exist.dart"); |
| FileSource source = FileSource(file); |
| expect(source.shortName, "exist.dart"); |
| } |
| |
| void test_hashCode() { |
| File file1 = getFile("/does/not/exist.dart"); |
| File file2 = getFile("/does/not/exist.dart"); |
| FileSource source1 = FileSource(file1); |
| FileSource source2 = FileSource(file2); |
| expect(source2.hashCode, source1.hashCode); |
| } |
| |
| void test_isInSystemLibrary_contagious() { |
| DartSdk sdk = _createSdk(); |
| UriResolver resolver = DartUriResolver(sdk); |
| SourceFactory factory = SourceFactory([resolver]); |
| // resolve dart:core |
| Source result = resolver.resolveAbsolute(Uri.parse("dart:async")); |
| expect(result, isNotNull); |
| expect(result.isInSystemLibrary, isTrue); |
| // system libraries reference only other system libraries |
| Source partSource = factory.resolveUri(result, "stream.dart"); |
| expect(partSource, isNotNull); |
| expect(partSource.isInSystemLibrary, isTrue); |
| } |
| |
| void test_isInSystemLibrary_false() { |
| File file = getFile("/does/not/exist.dart"); |
| FileSource source = FileSource(file); |
| expect(source, isNotNull); |
| expect(source.fullName, file.path); |
| expect(source.isInSystemLibrary, isFalse); |
| } |
| |
| void test_issue14500() { |
| // see https://code.google.com/p/dart/issues/detail?id=14500 |
| FileSource source = FileSource(getFile("/some/packages/foo:bar.dart")); |
| expect(source, isNotNull); |
| expect(source.exists(), isFalse); |
| } |
| |
| void test_resolveRelative_file_fileName() { |
| if (OSUtilities.isWindows()) { |
| // On Windows, the URI that is produced includes a drive letter, |
| // which I believe is not consistent across all machines that might run |
| // this test. |
| return; |
| } |
| File file = getFile("/a/b/test.dart"); |
| FileSource source = FileSource(file); |
| expect(source, isNotNull); |
| Uri relative = resolveRelativeUri(source.uri, Uri.parse("lib.dart")); |
| expect(relative, isNotNull); |
| expect(relative.toString(), "file:///a/b/lib.dart"); |
| } |
| |
| void test_resolveRelative_file_filePath() { |
| if (OSUtilities.isWindows()) { |
| // On Windows, the URI that is produced includes a drive letter, |
| // which I believe is not consistent across all machines that might run |
| // this test. |
| return; |
| } |
| File file = getFile("/a/b/test.dart"); |
| FileSource source = FileSource(file); |
| expect(source, isNotNull); |
| Uri relative = resolveRelativeUri(source.uri, Uri.parse("c/lib.dart")); |
| expect(relative, isNotNull); |
| expect(relative.toString(), "file:///a/b/c/lib.dart"); |
| } |
| |
| void test_resolveRelative_file_filePathWithParent() { |
| if (OSUtilities.isWindows()) { |
| // On Windows, the URI that is produced includes a drive letter, which I |
| // believe is not consistent across all machines that might run this test. |
| return; |
| } |
| File file = getFile("/a/b/test.dart"); |
| FileSource source = FileSource(file); |
| expect(source, isNotNull); |
| Uri relative = resolveRelativeUri(source.uri, Uri.parse("../c/lib.dart")); |
| expect(relative, isNotNull); |
| expect(relative.toString(), "file:///a/c/lib.dart"); |
| } |
| |
| void test_system() { |
| File file = getFile("/does/not/exist.dart"); |
| FileSource source = FileSource(file, Uri.parse("dart:core")); |
| expect(source, isNotNull); |
| expect(source.fullName, file.path); |
| expect(source.isInSystemLibrary, isTrue); |
| } |
| |
| DartSdk _createSdk() { |
| return MockSdk(resourceProvider: resourceProvider); |
| } |
| } |