package org.oddjob.tools;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.custommonkey.xmlunit.XMLTestCase;
import org.oddjob.io.BufferType;
import org.oddjob.util.IO;
import org.xml.sax.SAXException;
public class DocPostProcessorTest extends XMLTestCase {
String EOL = System.getProperty("line.separator");
public void testJavaFilePattern() {
Pattern test = new DocPostProcessor().new JavaCodeInjector().pattern;
Matcher matcher = test.matcher("bla bla {@oddjob.java.file " +
"test/java/org/oddjob/tools/SomeJavaCode.java}--foo");
assertTrue(matcher.find());
assertEquals("test/java/org/oddjob/tools/SomeJavaCode.java",
matcher.group(1));
}
public void testxMLResourcePattern() {
Pattern test = new DocPostProcessor.XMLResourceInjector().pattern;
Matcher matcher = test.matcher("bla bla {@oddjob.xml.resource " +
"org/oddjob/tools/SomeXML.xml}--foo");
assertTrue(matcher.find());
assertEquals("org/oddjob/tools/SomeXML.xml",
matcher.group(1));
}
public void testInsertFile() throws SAXException, IOException {
OurDirs dirs = new OurDirs();
DocPostProcessor test = new DocPostProcessor();
test.setBaseDir(dirs.base());
String input =
"<body>" + EOL +
"<h1>Some Java</h1>" + EOL +
" {@oddjob.java.file test/java/org/oddjob/tools/SomeJavaCode.java}" + EOL +
"<h1>Some XML</h1>" + EOL +
" {@oddjob.xml.resource org/oddjob/tools/SomeXML.xml}" + EOL +
"</body>" + EOL;
test.setInput(new ByteArrayInputStream(input.getBytes()));
ByteArrayOutputStream output = new ByteArrayOutputStream();
test.setOutput(output);
test.run();
BufferType buffer = new BufferType();
buffer.configured();
InputStream expected = new FileInputStream(
dirs.relative("/test/tools/DocPostProcessorExpected.html"));
assertNotNull(expected);
IO.copy(expected,
buffer.toOutputStream());
String result = new String(output.toByteArray());
System.out.println(result);
assertXMLEqual(buffer.getText(), result);
}
}