blob: 2630b099ee3065ade1190924526f41822d9718cb [file] [log] [blame]
/*
* Copyright (c) 2013, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.dart.engine.internal.task;
import com.google.dart.engine.EngineTestCase;
import com.google.dart.engine.ast.CompilationUnit;
import com.google.dart.engine.context.AnalysisContextFactory;
import com.google.dart.engine.context.AnalysisException;
import com.google.dart.engine.context.ChangeSet;
import com.google.dart.engine.element.LibraryElement;
import com.google.dart.engine.error.AnalysisError;
import com.google.dart.engine.internal.context.InternalAnalysisContext;
import com.google.dart.engine.internal.context.TimestampedData;
import com.google.dart.engine.source.FileBasedSource;
import com.google.dart.engine.source.Source;
import static com.google.dart.engine.element.ElementFactory.library;
import static com.google.dart.engine.utilities.io.FileUtilities2.createFile;
import java.util.HashMap;
public class GenerateDartHintsTaskTest extends EngineTestCase {
public void test_accept() throws AnalysisException {
GenerateDartHintsTask task = new GenerateDartHintsTask(null, null, null);
assertTrue(task.accept(new TestTaskVisitor<Boolean>() {
@Override
public Boolean visitGenerateDartHintsTask(GenerateDartHintsTask task)
throws AnalysisException {
return true;
}
}));
}
public void test_getException() {
GenerateDartHintsTask task = new GenerateDartHintsTask(null, null, null);
assertNull(task.getException());
}
public void test_getHintMap() {
GenerateDartHintsTask task = new GenerateDartHintsTask(null, null, null);
assertNull(task.getHintMap());
}
public void test_getLibraryElement() {
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
LibraryElement element = library(context, "lib");
GenerateDartHintsTask task = new GenerateDartHintsTask(context, null, element);
assertSame(element, task.getLibraryElement());
}
public void test_perform() throws AnalysisException {
InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
ChangeSet changeSet = new ChangeSet();
final Source librarySource = new FileBasedSource(createFile("/test.dart"));
changeSet.addedSource(librarySource);
Source unusedSource = new FileBasedSource(createFile("/unused.dart"));
changeSet.addedSource(unusedSource);
final Source partSource = new FileBasedSource(createFile("/part.dart"));
changeSet.addedSource(partSource);
context.applyChanges(changeSet);
context.setContents(librarySource, createSource(//
"library lib;",
"import 'unused.dart';",
"part 'part.dart';"));
context.setContents(unusedSource, createSource(//
"library unused;"));
context.setContents(partSource, createSource(//
"part of lib;"));
@SuppressWarnings("unchecked")
TimestampedData<CompilationUnit>[] units = new TimestampedData[2];
units[0] = new TimestampedData<CompilationUnit>(
context.getModificationStamp(librarySource),
context.resolveCompilationUnit(librarySource, librarySource));
units[1] = new TimestampedData<CompilationUnit>(
context.getModificationStamp(partSource),
context.resolveCompilationUnit(partSource, librarySource));
GenerateDartHintsTask task = new GenerateDartHintsTask(
context,
units,
context.computeLibraryElement(librarySource));
task.perform(new TestTaskVisitor<Boolean>() {
@Override
public Boolean visitGenerateDartHintsTask(GenerateDartHintsTask task)
throws AnalysisException {
AnalysisException exception = task.getException();
if (exception != null) {
throw exception;
}
assertNotNull(task.getLibraryElement());
HashMap<Source, TimestampedData<AnalysisError[]>> hintMap = task.getHintMap();
assertSizeOfMap(2, hintMap);
assertLength(1, hintMap.get(librarySource).getData());
assertLength(0, hintMap.get(partSource).getData());
return true;
}
});
}
}