aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShevek <[email protected]>2008-06-06 20:36:12 +0000
committerShevek <[email protected]>2008-06-06 20:36:12 +0000
commit8e947d8355d4d7199505eb4c7fa88c46bc8c99a7 (patch)
treef79943ce9dc33f7e3d8cbbd179c11fe597a9c5af /src
parent8ffeabfd101d4895cf6d046dd2868c359ce042ae (diff)
test vfs a bit
Diffstat (limited to 'src')
-rw-r--r--src/java/org/anarres/cpp/Preprocessor.java8
-rw-r--r--src/tests/org/anarres/cpp/JavaFileSystemTestCase.java39
-rw-r--r--src/tests/org/anarres/cpp/PreprocessorTestCase.java17
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 {