|
From: <fb...@us...> - 2003-06-29 04:45:51
|
Update of /cvsroot/jgb/jgb/src/java/tests/jgb/builder
In directory sc8-pr-cvs1:/tmp/cvs-serv8005/src/java/tests/jgb/builder
Modified Files:
TestDefaultBuilder.java
Log Message:
* src/java/tests/jgb/builder/TestDefaultBuilder.java:
Added more tests to verify behavior of DefaultBuilder when verbose
logging is true.
* src/java/core/jgb/builder/DefaultBuilder.java:
Implemented tests.
Index: TestDefaultBuilder.java
===================================================================
RCS file: /cvsroot/jgb/jgb/src/java/tests/jgb/builder/TestDefaultBuilder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TestDefaultBuilder.java 29 Jun 2003 04:02:19 -0000 1.3
--- TestDefaultBuilder.java 29 Jun 2003 04:45:34 -0000 1.4
***************
*** 22,32 ****
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXException;
! import java.io.StringWriter;
! import java.io.PrintWriter;
public class TestDefaultBuilder extends AbstractBuilderTest {
private StringWriter loggingStream = new StringWriter();
private PrintWriter out = new PrintWriter(loggingStream);
public TestDefaultBuilder(String s) {
--- 22,36 ----
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXException;
+ import org.xml.sax.Attributes;
! import java.io.*;
!
! import com.mockobjects.dynamic.Mock;
! import com.mockobjects.dynamic.C;
public class TestDefaultBuilder extends AbstractBuilderTest {
private StringWriter loggingStream = new StringWriter();
private PrintWriter out = new PrintWriter(loggingStream);
+ private Mock mockTagHandlerFactory = new Mock(TagHandlerFactory.class);
public TestDefaultBuilder(String s) {
***************
*** 204,207 ****
--- 208,327 ----
assertEquals("did not log anything: '" + exceptionMessage + "'",
0, exceptionMessage.length());
+ }
+
+ public void testPrintsIndentedElementsWhenVerbose() throws SAXException, IOException {
+ builder = new DefaultBuilder((TagHandlerFactory)mockTagHandlerFactory.proxy());
+ builder.setLoggingStream(out);
+
+ Mock tagHandler = new Mock(TagHandler.class);
+ tagHandler.expect("startElement", C.ANY_ARGS);
+ tagHandler.expect("startElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+
+ Mock mockAttributes = new Mock(Attributes.class);
+ mockAttributes.matchAndReturn("getValue", C.ANY_ARGS, null);
+
+ mockTagHandlerFactory.matchAndReturn("getHandlerFor",
+ C.ANY_ARGS, tagHandler.proxy());
+ builder.setVerbose(true);
+ builder.startElement(null, "null", "null",
+ (Attributes)mockAttributes.proxy());
+ builder.startElement(null, "null", "null",
+ (Attributes)mockAttributes.proxy());
+ builder.endElement(null, "null", "null");
+ builder.endElement(null, "null", "null");
+
+ BufferedReader in = createInStream();
+ assertEquals("<null>", in.readLine());
+ assertEquals(" <null>", in.readLine());
+ assertEquals(" </null>", in.readLine());
+ assertEquals("</null>", in.readLine());
+ }
+
+ public void testPrintsIdIfPresentWhenVerbose() throws SAXException, IOException {
+ builder = new DefaultBuilder((TagHandlerFactory)mockTagHandlerFactory.proxy());
+ builder.setLoggingStream(out);
+
+ Mock tagHandler = new Mock(TagHandler.class);
+ tagHandler.expect("startElement", C.ANY_ARGS);
+ tagHandler.expect("startElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+
+ Mock mockAttributes = new Mock(Attributes.class);
+ mockAttributes.matchAndReturn("getValue", C.eq("id"), "nullid0");
+
+ mockTagHandlerFactory.matchAndReturn("getHandlerFor",
+ C.ANY_ARGS, tagHandler.proxy());
+ builder.setVerbose(true);
+ builder.startElement(null, "null", "null",
+ (Attributes)mockAttributes.proxy());
+ builder.startElement(null, "null", "null",
+ (Attributes)mockAttributes.proxy());
+ builder.endElement(null, "null", "null");
+ builder.endElement(null, "null", "null");
+
+ BufferedReader in = createInStream();
+ assertEquals("<null id='nullid0'>", in.readLine());
+ assertEquals(" <null id='nullid0'>", in.readLine());
+ assertEquals(" </null>", in.readLine());
+ assertEquals("</null>", in.readLine());
+ }
+
+ public void testPrintsNothingIfNotVerbose() throws SAXException, IOException {
+ builder = new DefaultBuilder((TagHandlerFactory)mockTagHandlerFactory.proxy());
+ builder.setLoggingStream(out);
+
+ Mock tagHandler = new Mock(TagHandler.class);
+ tagHandler.expect("startElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+
+ Mock mockAttributes = new Mock(Attributes.class);
+ mockAttributes.matchAndReturn("getValue", C.eq("id"), "nullid0");
+
+ mockTagHandlerFactory.matchAndReturn("getHandlerFor",
+ C.ANY_ARGS, tagHandler.proxy());
+ builder.setVerbose(false);
+ builder.startElement(null, "null", "null",
+ (Attributes)mockAttributes.proxy());
+ builder.endElement(null, "null", "null");
+
+ BufferedReader in = createInStream();
+ assertNull("no log occured", in.readLine());
+ }
+
+ public void testExtraEndElementsCauseNoExceptionOnVerboseLevel() throws SAXException, IOException {
+ builder = new DefaultBuilder((TagHandlerFactory)mockTagHandlerFactory.proxy());
+ builder.setLoggingStream(out);
+
+ Mock tagHandler = new Mock(TagHandler.class);
+ tagHandler.expect("startElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+ tagHandler.expect("endElement", C.ANY_ARGS);
+
+ Mock mockAttributes = new Mock(Attributes.class);
+ mockAttributes.matchAndReturn("getValue", C.eq("id"), "nullid0");
+
+ mockTagHandlerFactory.matchAndReturn("getHandlerFor",
+ C.ANY_ARGS, tagHandler.proxy());
+ builder.setVerbose(true);
+ builder.startElement(null, "null", "null",
+ (Attributes)mockAttributes.proxy());
+ builder.endElement(null, "null", "null");
+ builder.endElement(null, "null", "null");
+
+ BufferedReader in = createInStream();
+ assertEquals("<null id='nullid0'>", in.readLine());
+ assertEquals("</null>", in.readLine());
+ assertEquals("</null>", in.readLine());
+ }
+
+ private BufferedReader createInStream() {
+ out.flush();
+ out.close();
+ BufferedReader in = new BufferedReader(
+ new StringReader(loggingStream.toString()));
+ return in;
}
|