b8da9bc651
R=brianwilkerson@google.com BUG= Review URL: https://codereview.chromium.org//725143004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41792 260f80e4-7a28-3924-810f-c04153c831b5
120 lines
4.0 KiB
Dart
120 lines
4.0 KiB
Dart
// 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.
|
|
|
|
library test.engine.task.dart;
|
|
|
|
import 'package:analyzer/src/generated/ast.dart';
|
|
import 'package:analyzer/src/generated/engine.dart';
|
|
import 'package:analyzer/src/generated/java_engine.dart';
|
|
import 'package:analyzer/src/generated/source.dart';
|
|
import 'package:analyzer/src/generated/source_io.dart';
|
|
import 'package:analyzer/src/task/task_dart.dart';
|
|
import 'package:unittest/unittest.dart';
|
|
|
|
import '../generated/engine_test.dart';
|
|
import '../generated/resolver_test.dart';
|
|
import '../generated/test_support.dart';
|
|
|
|
main() {
|
|
groupSep = ' | ';
|
|
// runReflectiveTests(BuildUnitElementTaskTest);
|
|
}
|
|
|
|
class BuildUnitElementTaskTest extends EngineTestCase {
|
|
CompilationUnit parseUnit(InternalAnalysisContext context, Source source,
|
|
String content) {
|
|
ScanDartTask scanTask = new ScanDartTask(context, source, content);
|
|
scanTask.perform(new ScanDartTaskTestTV_accept());
|
|
ParseDartTask parseTask =
|
|
new ParseDartTask(context, source, scanTask.tokenStream, scanTask.lineInfo);
|
|
parseTask.perform(new ParseDartTaskTestTV_accept());
|
|
return parseTask.compilationUnit;
|
|
}
|
|
|
|
void test_accept() {
|
|
BuildUnitElementTask task =
|
|
new BuildUnitElementTask(null, null, null, null);
|
|
expect(task.accept(new BuildUnitElementTaskTV_accept()), isTrue);
|
|
}
|
|
|
|
void test_getException() {
|
|
BuildUnitElementTask task =
|
|
new BuildUnitElementTask(null, null, null, null);
|
|
expect(task.exception, isNull);
|
|
}
|
|
|
|
void test_getLibrarySource() {
|
|
Source source = new TestSource('/part.dart');
|
|
Source library = new TestSource('/lib.dart');
|
|
BuildUnitElementTask task =
|
|
new BuildUnitElementTask(null, source, library, null);
|
|
expect(task.library, equals(library));
|
|
}
|
|
|
|
void test_getUnitSource() {
|
|
Source source = new TestSource('/part.dart');
|
|
Source library = new TestSource('/lib.dart');
|
|
BuildUnitElementTask task =
|
|
new BuildUnitElementTask(null, source, library, null);
|
|
expect(task.source, equals(source));
|
|
}
|
|
|
|
void test_perform_exception() {
|
|
TestSource source = new TestSource();
|
|
source.generateExceptionOnRead = true;
|
|
InternalAnalysisContext context = new AnalysisContextImpl();
|
|
context.sourceFactory = new SourceFactory([new FileUriResolver()]);
|
|
CompilationUnit unit = parseUnit(context, source, "");
|
|
BuildUnitElementTask task =
|
|
new BuildUnitElementTask(context, null, source, unit);
|
|
task.perform(new BuildUnitElementTaskTV_perform_exception());
|
|
}
|
|
|
|
void test_perform_valid() {
|
|
var content = """
|
|
library lib;
|
|
class A {}""";
|
|
Source source = new TestSource('/test.dart', content);
|
|
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
|
|
CompilationUnit unit = parseUnit(context, source, content);
|
|
BuildUnitElementTask task =
|
|
new BuildUnitElementTask(context, source, source, unit);
|
|
task.perform(new BuildUnitElementTaskTV_perform_valid(source, unit));
|
|
}
|
|
}
|
|
|
|
class BuildUnitElementTaskTV_accept extends TestTaskVisitor<bool> {
|
|
@override
|
|
bool visitBuildUnitElementTask(BuildUnitElementTask task) => true;
|
|
}
|
|
|
|
class BuildUnitElementTaskTV_perform_exception extends TestTaskVisitor<bool> {
|
|
@override
|
|
bool visitBuildUnitElementTask(BuildUnitElementTask task) {
|
|
expect(task.exception, isNotNull);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
class BuildUnitElementTaskTV_perform_valid extends TestTaskVisitor<bool> {
|
|
Source source;
|
|
|
|
CompilationUnit unit;
|
|
|
|
BuildUnitElementTaskTV_perform_valid(this.source, this.unit);
|
|
|
|
@override
|
|
bool visitBuildUnitElementTask(BuildUnitElementTask task) {
|
|
CaughtException exception = task.exception;
|
|
if (exception != null) {
|
|
throw exception;
|
|
}
|
|
expect(task.source, equals(source));
|
|
expect(task.library, equals(source));
|
|
expect(task.unit, equals(unit));
|
|
expect(task.unitElement, isNotNull);
|
|
return true;
|
|
}
|
|
}
|