| // 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(); |
| } |
| } |
| } |