You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by cu...@apache.org on 2001/02/13 22:28:54 UTC
cvs commit: xml-xalan/test/java/src/org/apache/qetest/trax TransformerAPITest.java
curcuru 01/02/13 13:28:54
Modified: test/java/src/org/apache/qetest/trax TransformerAPITest.java
Log:
Added tests for 'default', identity xsl, HTML format files;
Tests for getProperties().get() versus getProperties().getProperty() defaulting correclty
Revision Changes Path
1.11 +255 -26 xml-xalan/test/java/src/org/apache/qetest/trax/TransformerAPITest.java
Index: TransformerAPITest.java
===================================================================
RCS file: /home/cvs/xml-xalan/test/java/src/org/apache/qetest/trax/TransformerAPITest.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- TransformerAPITest.java 2001/02/09 01:55:23 1.10
+++ TransformerAPITest.java 2001/02/13 21:28:52 1.11
@@ -130,6 +130,9 @@
/** Just goldName for outputFormatTest with UTF-8 */
protected String outputFormatTestUTF8 = null;
+ /** TransformerAPIHTMLFormat.xsl.xsl used for set/getOutputFormat related tests */
+ protected XSLTestfileInfo htmlFormatTest = new XSLTestfileInfo();
+
/** Known outputFormat values from TransformerAPIOutputFormat.xsl */
public static final String METHOD_VALUE = "xml";
public static final String VERSION_VALUE ="123.45";
@@ -213,6 +216,10 @@
outputFormatTest.goldName = goldBasePath + "TransformerAPIOutputFormatUTF16.out";
outputFormatTestUTF8 = goldBasePath + "TransformerAPIOutputFormatUTF8.out";
+ htmlFormatTest.xmlName = filenameToURL(testBasePath + "TransformerAPIHTMLFormat.xml");
+ htmlFormatTest.inputName = filenameToURL(testBasePath + "TransformerAPIHTMLFormat.xsl");
+ htmlFormatTest.goldName = goldBasePath + "TransformerAPIHTMLFormat.out";
+
// Cache trax system property
saveXSLTProp = System.getProperty(TRAX_PROCESSOR_XSLT);
@@ -496,16 +503,30 @@
*/
public boolean testCase2()
{
+ //@todo I can't decide how to split tests up between
+ // testCase2/testCase3 - they really should be reorganized
reporter.testCaseInit("API coverage test of Transformer.set/getOutputProperty()");
TransformerFactory factory = null;
Templates outputTemplates = null;
Transformer outputTransformer = null;
- Transformer identityTransformer = null;
+ Templates htmlTemplates = null;
+ Transformer htmlTransformer = null;
+ Templates identityTemplates = null;
+ Transformer identityTransformer = null; // an .xsl file defining an identity transform
+ Transformer defaultTransformer = null; // the default 'identity' transform
try
{
factory = TransformerFactory.newInstance();
- identityTransformer = factory.newTransformer();
outputTemplates = factory.newTemplates(new StreamSource(outputFormatTest.inputName));
+ outputTransformer = outputTemplates.newTransformer();
+
+ htmlTemplates = factory.newTemplates(new StreamSource(htmlFormatTest.inputName));
+ htmlTransformer = htmlTemplates.newTransformer();
+
+ identityTemplates = factory.newTemplates(new StreamSource(simpleTest.inputName));
+ identityTransformer = identityTemplates.newTransformer();
+
+ defaultTransformer = factory.newTransformer();
}
catch (Throwable t)
{
@@ -518,25 +539,97 @@
try
{
// See what the default 'identity' transform has by default
- Properties identityProps = identityTransformer.getOutputProperties(); // SPR SCUU4RXQYH throws npe
+ Properties defaultProps = defaultTransformer.getOutputProperties(); // SPR SCUU4RXQYH throws npe
+ reporter.logHashtable(reporter.STATUSMSG, defaultProps,
+ "default defaultTransformer.getOutputProperties()");
+
+ // Check that the local stylesheet.getProperty has default set, cf. getOutputProperties javadoc
+ reporter.check(("xml".equals(defaultProps.getProperty(OutputKeys.METHOD))), true, "defaultTransformer.op.getProperty("
+ + OutputKeys.METHOD + ") is default value, act: " + defaultProps.getProperty(OutputKeys.METHOD));
+ // Check that the local stylesheet.get has nothing set, cf. getOutputProperties javadoc
+ reporter.check((null == defaultProps.get(OutputKeys.METHOD)), true, "defaultTransformer.op.get("
+ + OutputKeys.METHOD + ") is null value, act: " + defaultProps.get(OutputKeys.METHOD));
+
+ // Can you set properties on this transformer?
+ defaultTransformer.setOutputProperty(OutputKeys.METHOD, "text");
+ reporter.logTraceMsg("Just defaultTransformer setOutputProperty(method,text)");
+ String tmp = defaultTransformer.getOutputProperty(OutputKeys.METHOD); // SPR SCUU4R3JPH - throws npe
+ reporter.check(tmp, "text", "defaultTransformer set/getOutputProperty, is ?" + tmp + "?");
+ }
+ catch (Exception e)
+ {
+ reporter.checkFail("Problem with default output property", "SCUU4RXQYH");
+ reporter.logThrowable(reporter.ERRORMSG, e, "Problem with default output property");
+ }
+
+ try
+ {
+ // See what the our .xsl file 'identity' transform has
+ Properties identityProps = identityTransformer.getOutputProperties();
reporter.logHashtable(reporter.STATUSMSG, identityProps,
"default identityTransformer.getOutputProperties()");
+ // Check that the local stylesheet.getProperty has default set, cf. getOutputProperties javadoc
+ reporter.check(("xml".equals(identityProps.getProperty(OutputKeys.METHOD))), true, "identityTransformer.op.getProperty("
+ + OutputKeys.METHOD + ") is default value, act: " + identityProps.getProperty(OutputKeys.METHOD));
+ // Check that the local stylesheet.get has nothing set, cf. getOutputProperties javadoc
+ reporter.check((null == identityProps.get(OutputKeys.METHOD)), true, "identityTransformer.op.get("
+ + OutputKeys.METHOD + ") is null value, act: " + identityProps.get(OutputKeys.METHOD));
+
+ // Check that the local stylesheet.getProperty has default set, cf. getOutputProperties javadoc
+ reporter.check(("no".equals(identityProps.getProperty(OutputKeys.INDENT))), true, "identityTransformer.op.getProperty("
+ + OutputKeys.INDENT + ") is default value, act: " + identityProps.getProperty(OutputKeys.INDENT));
+ // Check that the local stylesheet.get has nothing set, cf. getOutputProperties javadoc
+ reporter.check((null == (identityProps.get(OutputKeys.INDENT))), true, "identityTransformer.op.get("
+ + OutputKeys.INDENT + ") is default value, act: " + identityProps.get(OutputKeys.INDENT));
+
// Can you set properties on this transformer?
- identityTransformer.setOutputProperty(OutputKeys.METHOD, "text");
+ defaultTransformer.setOutputProperty(OutputKeys.METHOD, "text");
reporter.logTraceMsg("Just identityTransformer setOutputProperty(method,text)");
- String tmp = identityTransformer.getOutputProperty(OutputKeys.METHOD); // SPR SCUU4R3JPH - throws npe
+ String tmp = defaultTransformer.getOutputProperty(OutputKeys.METHOD); // SPR SCUU4R3JPH - throws npe
reporter.check(tmp, "text", "identityTransformer set/getOutputProperty, is ?" + tmp + "?");
}
catch (Exception e)
{
- reporter.checkFail("Problem with identity output property", "SCUU4RXQYH");
- reporter.logThrowable(reporter.ERRORMSG, e,
- "Problem with identity output property");
+ reporter.checkFail("Problem with identity output property");
+ reporter.logThrowable(reporter.ERRORMSG, e, "Problem with identity output property");
}
try
{
+ // See what the our html-format output has
+ Properties htmlProps = htmlTransformer.getOutputProperties();
+ reporter.logHashtable(reporter.STATUSMSG, htmlProps,
+ "default htmlTransformer.getOutputProperties()");
+
+ // Check that the local stylesheet.getProperty has stylesheet val set, cf. getOutputProperties javadoc
+ reporter.check(("html".equals(htmlProps.getProperty(OutputKeys.METHOD))), true, "htmlTransformer.op.getProperty("
+ + OutputKeys.METHOD + ") is stylesheet value, act: " + htmlProps.getProperty(OutputKeys.METHOD));
+ // Check that the local stylesheet.get has stylesheet val set, cf. getOutputProperties javadoc
+ reporter.check(("html".equals(htmlProps.get(OutputKeys.METHOD))), true, "htmlTransformer.op.get("
+ + OutputKeys.METHOD + ") is stylesheet value, act: " + htmlProps.get(OutputKeys.METHOD));
+
+ // Check that the local stylesheet.getProperty has default set, cf. getOutputProperties javadoc
+ reporter.check(("yes".equals(htmlProps.getProperty(OutputKeys.INDENT))), true, "htmlTransformer.op.getProperty("
+ + OutputKeys.INDENT + ") is default value, act: " + htmlProps.getProperty(OutputKeys.INDENT));
+ // Check that the local stylesheet.get has nothing set, cf. getOutputProperties javadoc
+ reporter.check((null == (htmlProps.get(OutputKeys.INDENT))), true, "htmlTransformer.op.get("
+ + OutputKeys.INDENT + ") is default value, act: " + htmlProps.get(OutputKeys.INDENT));
+
+ // Can you set properties on this transformer?
+ defaultTransformer.setOutputProperty(OutputKeys.METHOD, "text");
+ reporter.logTraceMsg("Just htmlTransformer setOutputProperty(method,text)");
+ String tmp = defaultTransformer.getOutputProperty(OutputKeys.METHOD); // SPR SCUU4R3JPH - throws npe
+ reporter.check(tmp, "text", "htmlTransformer set/getOutputProperty, is ?" + tmp + "?");
+ }
+ catch (Exception e)
+ {
+ reporter.checkFail("Problem with html output property");
+ reporter.logThrowable(reporter.ERRORMSG, e, "Problem with html output property");
+ }
+
+ try
+ {
// See what our outputTemplates parent has
Properties tmpltProps = outputTemplates.getOutputProperties();
reporter.logHashtable(reporter.STATUSMSG, tmpltProps,
@@ -700,7 +793,7 @@
try
{
Transformer negTransformer = outputTemplates.newTransformer();
-
+ //@todo, or put in a separate testcase
}
catch (Exception e)
{
@@ -786,24 +879,128 @@
return true;
}
+ GetOutputPropertyTestlet testlet = new GetOutputPropertyTestlet();
+ reporter.logTraceMsg("Using GetOutputPropertyTestlet for negative tests");
+ testlet.setLogger(reporter);
+
// Negative tests of getOutputProperty()
- String testDesc = "getOutputProperty of bogus-name";
+ GetOutputPropertyDatalet datalet = new GetOutputPropertyDatalet();
+ reporter.logTraceMsg("Using GetOutputPropertyDatalet for negative tests");
+
try
{
- Transformer t = factory.newTransformer();
- String val = t.getOutputProperty("bogus-name");
- reporter.checkFail(testDesc);
+ datalet.transformer = identityTransformer;
+ datalet.propName = "bogus-name";
+ datalet.expectedValue = null;
+ datalet.expectedException = "java.lang.IllegalArgumentException";
+ datalet.setDescription("bogus-name identityTransformer throws IllegalArgumentException");
+ testlet.execute(datalet);
+
+ datalet.transformer = identityTransformer;
+ datalet.propName = "bogus-{name}";
+ datalet.expectedValue = null;
+ datalet.expectedException = "java.lang.IllegalArgumentException";
+ datalet.setDescription("bogus-{name} throws IllegalArgumentException");
+ testlet.execute(datalet);
+
+ datalet.transformer = identityTransformer;
+ datalet.propName = "{bogus-name";
+ datalet.expectedValue = null;
+ datalet.expectedException = "java.lang.IllegalArgumentException";
+ datalet.setDescription("{bogus-name throws IllegalArgumentException (bracket not closed)");
+ testlet.execute(datalet);
+
+ datalet.transformer = identityTransformer;
+ datalet.propName = "{some-namespace}bogus-name";
+ datalet.expectedValue = datalet.NULL_VALUE_EXPECTED;
+ datalet.expectedException = null;
+ datalet.setDescription("{some-namespace}bogus-name returns null");
+ testlet.execute(datalet);
+
+ datalet.transformer = identityTransformer;
+ datalet.propName = "{just-some-namespace}";
+ datalet.expectedValue = datalet.NULL_VALUE_EXPECTED;
+ datalet.expectedException = null;
+ datalet.setDescription("{just-some-namespace}bogus-name returns null");
+ testlet.execute(datalet);
+
+ datalet.transformer = identityTransformer;
+ datalet.propName = "{}no-namespace-at-all";
+ datalet.expectedValue = datalet.NULL_VALUE_EXPECTED;
+ datalet.expectedException = null;
+ datalet.setDescription("{}no-namespace-at-all returns null (is this correct?)");
+ testlet.execute(datalet);
+
+ datalet.transformer = identityTransformer;
+ datalet.propName = OutputKeys.METHOD;
+ datalet.expectedValue = "xml";
+ datalet.expectedException = null;
+ datalet.setDescription(OutputKeys.METHOD + " returns xml on identity transformer (is this really correct?)");
+ testlet.execute(datalet);
+
}
- catch (IllegalArgumentException iae)
+ catch (Throwable t2)
{
- reporter.checkPass(testDesc + ", threw: " + iae.toString());
+ reporter.checkErr("Problem with negative identityTransformer getOutputProperty: " + t2.toString());
+ reporter.logThrowable(reporter.STATUSMSG, t2, "Problem with negative identityTransformer getOutputProperty");
}
- catch (Throwable t)
+ try
{
- reporter.checkFail(testDesc + ", threw: " + t.toString());
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = "bogus-name";
+ datalet.expectedValue = null;
+ datalet.expectedException = "java.lang.IllegalArgumentException";
+ datalet.setDescription("bogus-name regular transformer throws IllegalArgumentException");
+ testlet.execute(datalet);
+
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = "bogus-{name}";
+ datalet.expectedValue = null;
+ datalet.expectedException = "java.lang.IllegalArgumentException";
+ datalet.setDescription("bogus-{name} throws IllegalArgumentException");
+ testlet.execute(datalet);
+
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = "{bogus-name";
+ datalet.expectedValue = null;
+ datalet.expectedException = "java.lang.IllegalArgumentException";
+ datalet.setDescription("{bogus-name throws IllegalArgumentException (bracket not closed)");
+ testlet.execute(datalet);
+
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = "{some-namespace}bogus-name";
+ datalet.expectedValue = datalet.NULL_VALUE_EXPECTED;
+ datalet.expectedException = null;
+ datalet.setDescription("{some-namespace}bogus-name returns null");
+ testlet.execute(datalet);
+
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = "{just-some-namespace}";
+ datalet.expectedValue = datalet.NULL_VALUE_EXPECTED;
+ datalet.expectedException = null;
+ datalet.setDescription("{just-some-namespace}bogus-name returns null");
+ testlet.execute(datalet);
+
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = "{}no-namespace-at-all";
+ datalet.expectedValue = datalet.NULL_VALUE_EXPECTED;
+ datalet.expectedException = null;
+ datalet.setDescription("{}no-namespace-at-all returns null (is this correct?)");
+ testlet.execute(datalet);
+
+ datalet.transformer = outputTemplates.newTransformer();
+ datalet.propName = OutputKeys.METHOD;
+ datalet.expectedValue = METHOD_VALUE;
+ datalet.expectedException = null;
+ datalet.setDescription(OutputKeys.METHOD + " returns " + METHOD_VALUE + " on transformer");
+ testlet.execute(datalet);
+
}
-
-
+ catch (Throwable t3)
+ {
+ reporter.checkErr("Problem with negative transformer getOutputProperty: " + t3.toString());
+ reporter.logThrowable(reporter.STATUSMSG, t3, "Problem with negative transformer getOutputProperty");
+ }
reporter.testCaseClose();
return true;
@@ -946,13 +1143,19 @@
}
}
+ /**
+ * Datalet for output property testing.
+ * Fields: transformer, propName, (expectedValue|expectedException)
+ */
public class GetOutputPropertyDatalet implements Datalet
{
+ public GetOutputPropertyDatalet() {} // no-op
public GetOutputPropertyDatalet(String[] args)
{
load(args);
}
public final String IDENTITY = "identity";
+ public final String NULL_VALUE_EXPECTED = "NULL_VALUE_EXPECTED";
protected String description = "no data";
public String getDescription() { return description; }
public void setDescription(String d) { description = d; }
@@ -991,7 +1194,7 @@
expectedException = (String)h.get("expectedException");
}
- } // end class GetOutputPropertyTestlet
+ } // end class GetOutputPropertyDatalet
/**
* Calls getOutputProperty() on the Transformer supplied, and
@@ -1023,25 +1226,51 @@
}
try
{
+ // Perform the test
String val = datalet.transformer.getOutputProperty(datalet.propName);
- if (null != datalet.expectedValue)
+ // Validate non-throwing of expected exceptions
+ if (null != datalet.expectedException)
{
- if (datalet.expectedValue.equals(val))
+ logger.checkFail(datalet.getDescription() + ", did not throw:" + datalet.expectedException
+ + ", act:" + val);
+ return;
+ }
+
+ // Validate any return data
+ if (null != val)
+ {
+ // Check for positive values that exist
+ if ((null != datalet.expectedValue)
+ && datalet.expectedValue.equals(val))
logger.checkPass(datalet.getDescription());
else
- logger.checkFail(datalet.getDescription());
+ logger.checkFail(datalet.getDescription() + " act:" + val
+ + ", exp:" + datalet.expectedValue);
+ }
+ else if (datalet.NULL_VALUE_EXPECTED == datalet.expectedValue)
+ {
+ // If expectedValue is the special 'null' string,
+ // and we're not expecting an exception, then
+ // we pass here
+ logger.checkPass(datalet.getDescription());
+ }
+ else
+ {
+ // Otherwise, we fail
+ logger.checkFail(datalet.getDescription() + " act:" + val
+ + ", exp:" + datalet.expectedValue);
}
- else if (null != datalet.expectedException)
- logger.checkFail(datalet.getDescription());
}
catch (Throwable t)
{
+ // Validate any Exceptions thrown
if (null != datalet.expectedException)
{
if (datalet.expectedException.equals(t.getClass().getName()))
logger.checkPass(datalet.getDescription());
else
- logger.checkFail(datalet.getDescription());
+ logger.checkFail(datalet.getDescription() + ", threw:" + t.toString()
+ + ", exp:" + datalet.expectedException);
}
else
logger.checkFail(datalet.getDescription() + ", threw: " + t.toString());