diff options
author | Shevek <[email protected]> | 2008-06-06 20:36:12 +0000 |
---|---|---|
committer | Shevek <[email protected]> | 2008-06-06 20:36:12 +0000 |
commit | 8e947d8355d4d7199505eb4c7fa88c46bc8c99a7 (patch) | |
tree | f79943ce9dc33f7e3d8cbbd179c11fe597a9c5af /src | |
parent | 8ffeabfd101d4895cf6d046dd2868c359ce042ae (diff) |
test vfs a bit
Diffstat (limited to 'src')
-rw-r--r-- | src/java/org/anarres/cpp/Preprocessor.java | 8 | ||||
-rw-r--r-- | src/tests/org/anarres/cpp/JavaFileSystemTestCase.java | 39 | ||||
-rw-r--r-- | src/tests/org/anarres/cpp/PreprocessorTestCase.java | 17 |
3 files changed, 45 insertions, 19 deletions
diff --git a/src/java/org/anarres/cpp/Preprocessor.java b/src/java/org/anarres/cpp/Preprocessor.java index ed8da44..158e5b8 100644 --- a/src/java/org/anarres/cpp/Preprocessor.java +++ b/src/java/org/anarres/cpp/Preprocessor.java @@ -984,13 +984,9 @@ public class Preprocessor { } /** - * Handles a include directive. - * - * The user may override this to provide alternate semantics - * for the include directive, for example, creating a Source - * based on a virtual file system. + * Handles an include directive. */ - protected void include(String parent, int line, + private void include(String parent, int line, String name, boolean quoted) throws IOException, LexerException { diff --git a/src/tests/org/anarres/cpp/JavaFileSystemTestCase.java b/src/tests/org/anarres/cpp/JavaFileSystemTestCase.java new file mode 100644 index 0000000..4f68d68 --- /dev/null +++ b/src/tests/org/anarres/cpp/JavaFileSystemTestCase.java @@ -0,0 +1,39 @@ +package org.anarres.cpp; + +import java.io.*; + +import junit.framework.Test; + +import static org.anarres.cpp.Token.*; + +public class JavaFileSystemTestCase extends BaseTestCase { + + public void testJavaFileSystem() throws Exception { + JavaFileSystem fs = new JavaFileSystem(); + VirtualFile f; + + /* Anyone who has this file on their Unix box is messed up. */ + f = fs.getFile("/foo/bar baz"); + try { + f.getSource(); /* drop on floor */ + assertTrue("Got a source for a non-file", f.isFile()); + } + catch (FileNotFoundException e) { + assertFalse("Got no source for a file", f.isFile()); + } + + /* We hope we have this. */ + f = fs.getFile("/usr/include/stdio.h"); + try { + f.getSource(); /* drop on floor */ + System.out.println("Opened stdio.h"); + assertTrue("Got a source for a non-file", f.isFile()); + } + catch (FileNotFoundException e) { + System.out.println("Failed to open stdio.h"); + assertFalse("Got no source for a file", f.isFile()); + } + + } + +} diff --git a/src/tests/org/anarres/cpp/PreprocessorTestCase.java b/src/tests/org/anarres/cpp/PreprocessorTestCase.java index a6e202b..ff2bc10 100644 --- a/src/tests/org/anarres/cpp/PreprocessorTestCase.java +++ b/src/tests/org/anarres/cpp/PreprocessorTestCase.java @@ -14,24 +14,15 @@ public class PreprocessorTestCase extends BaseTestCase { final PipedOutputStream po = new PipedOutputStream(); writer = new OutputStreamWriter(po); - p = new Preprocessor( + p = new Preprocessor(); + p.addInput( new LexerSource( new InputStreamReader( new PipedInputStream(po) ), true - ) { - public File getFile() { - return new File("test-input"); - } - } - ) { - @Override - protected void include(String parent, int line, - String name, boolean quoted) { - /* XXX Perform a useful assertion. */ - } - }; + ) + ); } private static class I { |