blob: 7c06ffbd4072fa5a4e119fd98d2d7326c3c63e1e [file] [log] [blame]
// Copyright (c) 2011, 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.
package com.google.dart.compiler;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
/**
* Testing implementation of {@link LibrarySource}.
*/
public class MockLibrarySource extends SourceTest implements LibrarySource {
private final static String TEST_APP_NAME = "Test_app";
private final List<LibrarySource> imports = new ArrayList<LibrarySource>();
private final List<DartSource> sources = new ArrayList<DartSource>();
public MockLibrarySource() {
super(TEST_APP_NAME);
}
@Override
public Reader getSourceReader() {
ArrayList<String> libNames = new ArrayList<String>();
for (LibrarySource lib : imports) {
libNames.add(lib.getName());
}
ArrayList<String> sourceNames = new ArrayList<String>();
for (DartSource source : sources) {
sourceNames.add(source.getName());
}
// Passing null for the entryPoint, assuming the source already contains a
// toplevel main() or is a library that doesn't require an entryPoint.
return new StringReader(DefaultLibrarySource.generateSource(
getName(), libNames, sourceNames, null));
}
@Override
public LibrarySource getImportFor(String relPath) {
for (LibrarySource lib : imports) {
if (lib.getName().equals(relPath)) {
return lib;
}
}
return null;
}
@Override
public DartSource getSourceFor(String relPath) {
if (relPath.equals(TEST_APP_NAME)) {
return new MockDartSource(this);
}
for (DartSource source : sources) {
if (source.getName().equals(relPath)) {
return source;
}
}
return null;
}
public void addSource(DartSource src) {
sources.add(src);
}
private static class MockDartSource extends SourceTest implements DartSource {
final MockLibrarySource libSource;
public MockDartSource(MockLibrarySource libSource) {
super(libSource.getName());
this.libSource = libSource;
}
@Override
public Reader getSourceReader() {
return libSource.getSourceReader();
}
@Override
public LibrarySource getLibrary() {
return libSource;
}
@Override
public String getRelativePath() {
return libSource.getUri().toString();
}
}
}