| // Copyright (c) 2014, 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/src/generated/sdk.dart'; | |
| import 'package:analyzer_testing/resource_provider_mixin.dart'; | |
| import 'package:test/test.dart'; | |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; | |
| main() { | |
| defineReflectiveSuite(() { | |
| defineReflectiveTests(DartSdkManagerTest); | |
| defineReflectiveTests(SdkDescriptionTest); | |
| }); | |
| } | |
| @reflectiveTest | |
| class DartSdkManagerTest with ResourceProviderMixin { | |
| void test_anySdk() { | |
| DartSdkManager manager = DartSdkManager('/a/b/c'); | |
| expect(manager.anySdk, isNull); | |
| SdkDescription description = SdkDescription('/c/d'); | |
| DartSdk sdk = _DartSdkMock(); | |
| manager.getSdk(description, () => sdk); | |
| expect(manager.anySdk, same(sdk)); | |
| } | |
| void test_getSdk_differentDescriptors() { | |
| DartSdkManager manager = DartSdkManager('/a/b/c'); | |
| SdkDescription description1 = SdkDescription('/c/d'); | |
| DartSdk sdk1 = _DartSdkMock(); | |
| DartSdk result1 = manager.getSdk(description1, () => sdk1); | |
| expect(result1, same(sdk1)); | |
| SdkDescription description2 = SdkDescription('/e/f'); | |
| DartSdk sdk2 = _DartSdkMock(); | |
| DartSdk result2 = manager.getSdk(description2, () => sdk2); | |
| expect(result2, same(sdk2)); | |
| manager.getSdk(description1, _failIfAbsent); | |
| manager.getSdk(description2, _failIfAbsent); | |
| } | |
| void test_getSdk_sameDescriptor() { | |
| DartSdkManager manager = DartSdkManager('/a/b/c'); | |
| SdkDescription description = SdkDescription('/c/d'); | |
| DartSdk sdk = _DartSdkMock(); | |
| DartSdk result = manager.getSdk(description, () => sdk); | |
| expect(result, same(sdk)); | |
| manager.getSdk(description, _failIfAbsent); | |
| } | |
| DartSdk _failIfAbsent() { | |
| fail('Use of ifAbsent function'); | |
| } | |
| } | |
| @reflectiveTest | |
| class SdkDescriptionTest { | |
| void test_equals_differentPaths_nested() { | |
| SdkDescription left = SdkDescription('/a/b/c'); | |
| SdkDescription right = SdkDescription('/a/b'); | |
| expect(left == right, isFalse); | |
| } | |
| void test_equals_differentPaths_unrelated() { | |
| SdkDescription left = SdkDescription('/a/b/c'); | |
| SdkDescription right = SdkDescription('/d/e'); | |
| expect(left == right, isFalse); | |
| } | |
| void test_equals_samePaths_sameOptions_single() { | |
| String path = '/a/b/c'; | |
| SdkDescription left = SdkDescription(path); | |
| SdkDescription right = SdkDescription(path); | |
| expect(left == right, isTrue); | |
| } | |
| } | |
| class _DartSdkMock implements DartSdk { | |
| @override | |
| noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | |
| } |