You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by pa...@apache.org on 2001/11/09 20:26:46 UTC
cvs commit: xml-xalan/c/Tests/Extensions extensions.cpp
pauldick 01/11/09 11:26:46
Modified: c/Tests/Extensions extensions.cpp
Log:
Revamped to use extensions directory of xml-xalan\test\tests\extensions
and not capi specific directory. Also fixed up error reporting.
Revision Changes Path
1.11 +93 -127 xml-xalan/c/Tests/Extensions/extensions.cpp
Index: extensions.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/Tests/Extensions/extensions.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- extensions.cpp 2001/10/18 18:43:17 1.10
+++ extensions.cpp 2001/11/09 19:26:46 1.11
@@ -96,7 +96,7 @@
// GLOBAL VARIABLES...
FileUtility futil;
XalanDOMString baseDir, outputRoot, goldRoot; // These are set by the getParams routine.
-const XalanDOMString currentDir("extensions");
+const XalanDOMString currentDir("library");
const XalanDOMString theNamespace("http://xml.apache.org/xalan");
const char *resultString = "The specified function is not available: http://xml.apache.org/xalan:nodeset";
@@ -108,7 +108,7 @@
<< "extensions dirname [-out]"
<< endl
<< endl
- << "dirname (base directory for testcases)"
+ << "dirname (base directory for xml-xalan\test\tests\extensions)"
<< endl
<< "-out dirname (base directory for output)"
<< endl;
@@ -237,8 +237,10 @@
// API Call:
// None. Verfies default behavior of XalanTransformer.
// Comments:
-// This test verifies that the Nodeset function was properly installed with the transformer. All
-// functions are preinstalled globally. Output file should contain data.
+// This testcase is called once for each function that XalanC implements. It verfies that the function
+// was properly installed and working correctly within the transformer. All functions are preinstalled
+// globally. Currently XalanC supports the following extensions; difference, distinct, evaluate,
+// hasSameNodes, intersection and nodeset.
//
void TestCase1(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
{
@@ -246,64 +248,38 @@
XalanDOMString xml, xsl, theOutputFile, theGoldFile;
generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase1");
- futil.data.testOrFile = XalanDOMString("TestCase1");
- // Create the InputSources and ResultTraget.
- const XSLTInputSource xmlInputSource(c_wstr(xml));
- const XSLTInputSource xslInputSource(c_wstr(xsl));
- const XSLTResultTarget theResultTarget(theOutputFile);
-
- // Perform the transform and check the results.
- int theResult = xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
-
- futil.checkResults(theOutputFile, theGoldFile, logFile);
-
-}
-
-// TestCase2
-// API Call:
-// None. Verfies default behavior of XalanTransformer.
-// Comments:
-// This test verifies that the following functions:
-// difference, distinct,
-// evaluate, hasSameNodes,
-// and intersection are defined and working. Output file should contain data.
-//
-void TestCase2(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
-{
-
- XalanDOMString xml, xsl, theOutputFile, theGoldFile;
-
- generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase2");
- futil.data.testOrFile = XalanDOMString("TestCase2");
+ futil.data.testOrFile = XalanDOMString("TestCase1: ") + fileName;
+ futil.data.xmlFileURL = xml;
+ futil.data.xslFileURL = xsl;
// Create the InputSources and ResultTraget.
const XSLTInputSource xmlInputSource(c_wstr(xml));
const XSLTInputSource xslInputSource(c_wstr(xsl));
const XSLTResultTarget theResultTarget(theOutputFile);
-
// Perform the transform and check the results.
- xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
-
+ xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
futil.checkResults(theOutputFile, theGoldFile, logFile);
}
-// TestCase3
+// TestCase2
// API Call:
// XalanTransformer::uninstallExternalFunctionGlobal
// Comments:
// This test verifies that the 'nodeset' function is properly uninstalled via the api.
// Output file should NOT contain data.
//
-void TestCase3(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
+void TestCase2(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
{
XalanDOMString xml, xsl, theOutputFile, theGoldFile;
- generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase3");
- futil.data.testOrFile = XalanDOMString("TestCase3");
+ generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase2");
+ futil.data.testOrFile = XalanDOMString("TestCase2");
+ futil.data.xmlFileURL = xml;
+ futil.data.xslFileURL = xsl;
// Create the InputSources and ResultTraget.
const XSLTInputSource xmlInputSource(c_wstr(xml));
@@ -315,23 +291,19 @@
theNamespace,
XalanDOMString("nodeset"));
- int theResult = xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
- if (theResult == -1)
- {
- futil.checkAPIErrorResults(xalan.getLastError(),
- resultString,
- "transformer.uninstallExternalFunctionGlobal()",
- logFile);
- }
- else
- {
- cout << endl << "Failedxxx: TestCase3" ;
- }
-
+ //Perform the transform and check the results.
+ xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
+
+ futil.checkAPIResults(xalan.getLastError(),
+ resultString,
+ "transformer.uninstallExternalFunctionGlobal()",
+ logFile,
+ theOutputFile,
+ theGoldFile);
}
-// TestCase4:
+// TestCase3:
// API Call:
// XalanTransformer::installExternalFunction
// XalanTransformer::uninstallExternalFunction
@@ -339,13 +311,15 @@
// This tests the installExternalFunction method of XalanTransformer using the nodeset function.
// Output file should NOT contain data.
//
-void TestCase4(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
+void TestCase3(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
{
XalanDOMString xml, xsl, theOutputFile, theGoldFile;
- generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase4");
- futil.data.testOrFile = XalanDOMString("TestCase4a");
+ generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase3");
+ futil.data.testOrFile = XalanDOMString("TestCase3a");
+ futil.data.xmlFileURL = xml;
+ futil.data.xslFileURL = xsl;
// Create the InputSources and ResultTraget.
const XSLTInputSource xmlInputSource(c_wstr(xml));
@@ -353,10 +327,9 @@
const XSLTResultTarget theResultTarget(theOutputFile);
// Install the external function "nodeset"
- xalan.installExternalFunction(
- theNamespace,
- XalanDOMString("nodeset"),
- FunctionNodeSet());
+ xalan.installExternalFunction(theNamespace,
+ XalanDOMString("nodeset"),
+ FunctionNodeSet());
// Perform the transform and check the results.
xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
@@ -366,57 +339,48 @@
// Because we install the function locally, this second instance of the transformer should not run the
// test successfully.
XalanTransformer newEngine;
- futil.data.testOrFile = XalanDOMString("TestCase4b");
+ futil.data.testOrFile = XalanDOMString("TestCase3b");
- int theResult = newEngine.transform(xmlInputSource, xslInputSource, theResultTarget);
- if (theResult == -1)
- {
- futil.checkAPIErrorResults(newEngine.getLastError(),
- resultString,
- "transformer.installExternalFunction()",
- logFile);
- }
- else
- {
- cout << endl << "Failed: TestCase4b" ;
- }
+ //Perform the transform and check the results.
+ newEngine.transform(xmlInputSource, xslInputSource, theResultTarget);
+ futil.checkAPIResults(newEngine.getLastError(),
+ resultString,
+ "transformer.installExternalFunction()",
+ logFile,
+ theOutputFile,
+ theGoldFile);
// Now unInstall the external function "nodeset"
- xalan.uninstallExternalFunction(
- theNamespace,
- XalanDOMString("nodeset"));
+ futil.data.testOrFile = XalanDOMString("TestCase3c");
+ xalan.uninstallExternalFunction(theNamespace, XalanDOMString("nodeset"));
// Perform the transform and check the results.
- futil.data.testOrFile = XalanDOMString("TestCase4c");
- theResult = xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
- if (theResult == -1)
- {
- futil.checkAPIErrorResults(xalan.getLastError(),
- resultString,
- "transformer.uninstallExternalFunction()",
- logFile);
- }
- else
- {
- cout << endl << "Failed: TestCase4c" ;
- }
+ xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
+ futil.checkAPIResults(xalan.getLastError(),
+ resultString,
+ "transformer.uninstallExternalFunction()",
+ logFile,
+ theOutputFile,
+ theGoldFile);
}
-// TestCase5:
+// TestCase4:
// API Call:
// XalanTransformer::installExternalFunctionGlobal
// Comments:
// This tests uses transformer method installExternalFunctionGlobal to add the nodeset function.
// The output file should contain data.
//
-void TestCase5(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
+void TestCase4(XalanTransformer &xalan, const XalanDOMString &fileName, XMLFileReporter &logFile)
{
XalanDOMString xml, xsl, theOutputFile, theGoldFile;
generateFiles(fileName, xml, xsl, theOutputFile, theGoldFile, "TestCase5");
- futil.data.testOrFile = XalanDOMString("TestCase5a");
+ futil.data.testOrFile = XalanDOMString("TestCase4a");
+ futil.data.xmlFileURL = xml;
+ futil.data.xslFileURL = xsl;
// Create the InputSources and ResultTraget.
const XSLTInputSource xmlInputSource(c_wstr(xml));
@@ -424,10 +388,9 @@
const XSLTResultTarget theResultTarget(theOutputFile);
// Install the external function "nodeset" Globally
- xalan.installExternalFunctionGlobal(
- theNamespace,
- XalanDOMString("nodeset"),
- FunctionNodeSet());
+ xalan.installExternalFunctionGlobal(theNamespace,
+ XalanDOMString("nodeset"),
+ FunctionNodeSet());
// Perform the transform and check the results.
xalan.transform(xmlInputSource, xslInputSource, theResultTarget);
@@ -435,7 +398,7 @@
// Create a second transformer and verify that it can 'see' the extension as well...
XalanTransformer newEngine;
- futil.data.testOrFile = XalanDOMString("TestCase5b");
+ futil.data.testOrFile = XalanDOMString("TestCase4b");
newEngine.transform(xmlInputSource, xslInputSource, theResultTarget);
futil.checkResults(theOutputFile, theGoldFile, logFile);
@@ -458,7 +421,7 @@
if (getParams(argc, argv, baseDir, outputRoot, goldRoot) == true)
{
// Generate Unique Run id. (Only used to name the result logfile.)
- const XalanDOMString UniqRunid = futil.generateUniqRunid();
+ const XalanDOMString UniqRunid = futil.generateUniqRunid();
// Defined basic constants for file manipulation
const XalanDOMString drive(futil.getDrive());
@@ -468,44 +431,47 @@
logFile.logTestFileInit("C++ Extension Testing. ");
logFile.logTestCaseInit(currentDir);
+ futil.data.testBase = baseDir;
cout << "Performing Extension testing ..." << endl;
- try
- {
- // Call the static initializers...
- HarnessInit xmlPlatformUtils;
- XalanTransformer::initialize();
+ // Call the static initializers...
+ HarnessInit xmlPlatformUtils;
+ XalanTransformer::initialize();
- XalanTransformer xalan;
+ XalanTransformer xalan;
- // Check that output directory is there.
- XalanDOMString fileName;
+ // Check that output directory is there.
+ XalanDOMString fileName;
- const XalanDOMString theOutputDir = outputRoot + currentDir;
- futil.checkAndCreateDir(theOutputDir);
+ const XalanDOMString theOutputDir = outputRoot + currentDir;
+ futil.checkAndCreateDir(theOutputDir);
- // Get the files found in the "cextension" directory
- const FileNameVectorType files = futil.getTestFileNames(baseDir, currentDir, true);
+ // Get the files found in the "cextension" directory
+ const FileNameVectorType files = futil.getTestFileNames(baseDir, currentDir, false);
- TestCase1(xalan, files[0], logFile); // Nodeset function
- TestCase2(xalan, files[1], logFile); // All others
- TestCase3(xalan, files[0], logFile);
- TestCase4(xalan, files[0], logFile);
- TestCase5(xalan, files[0], logFile);
+ // TestCase1 is used to verify correct functioning of the default extension functions
+ TestCase1(xalan, files[0], logFile); // Difference function
+ TestCase1(xalan, files[1], logFile); // Distinct
+ TestCase1(xalan, files[2], logFile); // Evaluate
+ TestCase1(xalan, files[3], logFile); // HasSameNodes
+ TestCase1(xalan, files[4], logFile); // Intersection
+ TestCase1(xalan, files[5], logFile); // NodeSet - basic testing
+ TestCase1(xalan, files[6], logFile); // NodeSet - extensive RTF testing.
+
+ // These testcases are used to excerise the Install/Uninstall Function API's of the transformer.
+ TestCase2(xalan, files[5], logFile);
+ TestCase3(xalan, files[5], logFile);
+ TestCase4(xalan, files[5], logFile);
- logFile.logTestCaseClose("Done", "Pass");
- futil.reportPassFail(logFile, UniqRunid);
+ logFile.logTestCaseClose("Done", "Pass");
+ futil.reportPassFail(logFile, UniqRunid);
- logFile.logTestFileClose("C++ Extension Testing: ", "Done");
- logFile.close();
+ logFile.logTestFileClose("C++ Extension Testing: ", "Done");
+ logFile.close();
- futil.analyzeResults(xalan, baseDir, resultsFile);
- XalanTransformer::terminate();
- }
- catch(...)
- {
- cerr << "Exception caught!!!" << endl << endl;
- }
+ futil.analyzeResults(xalan, baseDir, resultsFile);
+ XalanTransformer::terminate();
+
}
return 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org