blob: af27464255bf4e94d6d7209ac43a07f77f87ed1d [file] [log] [blame]
// Copyright (c) 2018, 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/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/context_root.dart';
import 'package:analyzer/dart/analysis/declared_variables.dart';
import 'package:analyzer/src/dart/analysis/context_builder.dart';
import 'package:analyzer/src/dart/analysis/context_root.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:analyzer/src/workspace/basic.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(ContextBuilderImplTest);
});
}
@reflectiveTest
class ContextBuilderImplTest with ResourceProviderMixin {
late final ContextBuilderImpl contextBuilder;
late final ContextRoot contextRoot;
void assertEquals(DeclaredVariables actual, DeclaredVariables expected) {
Iterable<String> actualNames = actual.variableNames;
Iterable<String> expectedNames = expected.variableNames;
expect(actualNames, expectedNames);
for (String name in expectedNames) {
expect(actual.get(name), expected.get(name));
}
}
void setUp() {
var folder = newFolder('/home/test');
contextBuilder = ContextBuilderImpl(resourceProvider: resourceProvider);
var workspace = BasicWorkspace.find(resourceProvider, {}, folder.path);
contextRoot = ContextRootImpl(resourceProvider, folder, workspace);
}
test_createContext_declaredVariables() {
MockSdk(resourceProvider: resourceProvider);
DeclaredVariables declaredVariables =
DeclaredVariables.fromMap({'foo': 'true'});
var context = contextBuilder.createContext(
contextRoot: contextRoot,
declaredVariables: declaredVariables,
sdkPath: resourceProvider.convertPath(sdkRoot),
);
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
assertEquals(context.driver.declaredVariables, declaredVariables);
}
test_createContext_declaredVariables_sdkPath() {
DeclaredVariables declaredVariables =
DeclaredVariables.fromMap({'bar': 'true'});
MockSdk sdk = MockSdk(resourceProvider: resourceProvider);
var context = contextBuilder.createContext(
contextRoot: contextRoot,
declaredVariables: declaredVariables,
sdkPath: resourceProvider.convertPath(sdkRoot),
);
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
assertEquals(context.driver.declaredVariables, declaredVariables);
expect(context.driver.sourceFactory.dartSdk!.mapDartUri('dart:core'),
sdk.mapDartUri('dart:core'));
}
test_createContext_defaults() {
MockSdk(resourceProvider: resourceProvider);
AnalysisContext context = contextBuilder.createContext(
contextRoot: contextRoot,
sdkPath: resourceProvider.convertPath(sdkRoot),
);
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
}
test_createContext_sdkPath() {
MockSdk sdk = MockSdk(resourceProvider: resourceProvider);
var context = contextBuilder.createContext(
contextRoot: contextRoot,
sdkPath: resourceProvider.convertPath(sdkRoot),
);
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
expect(context.driver.sourceFactory.dartSdk!.mapDartUri('dart:core'),
sdk.mapDartUri('dart:core'));
}
test_createContext_sdkRoot() {
MockSdk(resourceProvider: resourceProvider);
var context = contextBuilder.createContext(
contextRoot: contextRoot,
sdkPath: resourceProvider.convertPath(sdkRoot));
expect(context.analysisOptions, isNotNull);
expect(context.contextRoot, contextRoot);
expect(context.sdkRoot?.path, resourceProvider.convertPath(sdkRoot));
}
}