public boolean testCase1()

in java/src/org/apache/qetest/trax/EmbeddedStylesheetTest.java [195:340]


    public boolean testCase1()
    {
        reporter.testCaseInit("Simple xml documents with xml-stylesheet PI's");

        TransformerFactory factory = null;
        try
        {
            factory = TransformerFactory.newInstance();
        }
        catch (Throwable t)
        {
            reporter.checkFail("Problem creating factory; can't continue testcase");
            reporter.logThrowable(reporter.ERRORMSG, t,
                                  "Problem creating factory; can't continue testcase");
            return true;
        }
        String media= null;     // often ignored
        String title = null;    // often ignored
        String charset = null;  // often ignored
        try
        {
            // Verify you can process a simple embedded stylesheet 
            //  (also tested in TransformerFactoryAPITest)
            Source stylesheet = factory.getAssociatedStylesheet(new StreamSource(QetestUtils.filenameToURL(embeddedFileInfo.xmlName)), 
                                                                media, title, charset);
            reporter.logTraceMsg("got AssociatedStylesheet");
            Templates embedTemplates = factory.newTemplates(stylesheet);
            Transformer embedTransformer = embedTemplates.newTransformer();
            reporter.logTraceMsg("Got embedded templates, about to transform.");
            embedTransformer.transform(new StreamSource(QetestUtils.filenameToURL(embeddedFileInfo.xmlName)), 
                                       new StreamResult(outNames.nextName()));

            int result = fileChecker.check(reporter, 
                                           new File(outNames.currentName()), 
                                           new File(embeddedFileInfo.goldName), 
                                          "(1)embedded transform into " + outNames.currentName());
            if (result == Logger.FAIL_RESULT)
                reporter.logInfoMsg("(1)embedded transform failure reason:" + fileChecker.getExtendedInfo());

            // Verify the stylesheet you get from an embedded source 
            //  can be reused for other documents
            embedTransformer = embedTemplates.newTransformer();
            embedTransformer.transform(new StreamSource(QetestUtils.filenameToURL(embeddedFileInfo.xmlName)), 
                                       new StreamResult(outNames.nextName()));

            result = fileChecker.check(reporter, 
                                           new File(outNames.currentName()), 
                                           new File(embeddedFileInfo.goldName), 
                                          "(1a)embedded transform into " + outNames.currentName());
            if (result == Logger.FAIL_RESULT)
                reporter.logInfoMsg("(1a)embedded transform failure reason:" + fileChecker.getExtendedInfo());

            // Verify the transformer itself can be reused
            //  on a *different* document
            embedTransformer.transform(new StreamSource(QetestUtils.filenameToURL(systemIdFileInfo.xmlName)), 
                                       new StreamResult(outNames.nextName()));

            result = fileChecker.check(reporter, 
                                           new File(outNames.currentName()), 
                                           new File(systemIdFileInfo.goldName), 
                                          "(2)embedded transform into " + outNames.currentName());
            if (result == Logger.FAIL_RESULT)
                reporter.logInfoMsg("(2)embedded transform failure reason:" + fileChecker.getExtendedInfo());
        }
        catch (Throwable t)
        {
            reporter.checkFail("Problem with simple embedded reuse");
            reporter.logThrowable(reporter.ERRORMSG, t, "Problem with simple embedded reuse");
        }

        try
        {
            // Verify you can process an embedded stylesheet as fragment
            testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(embeddedFragmentFileInfo.xmlName)),
                                  new StreamSource(QetestUtils.filenameToURL(embeddedFragmentFileInfo.xmlName)),
                                  "(10)embedded fragment transform",
                                  embeddedFragmentFileInfo.goldName);

            // Verify you can process an embedded stylesheet that 
            //  comes from a relative path - default systemId
            testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(embeddedRelativeXmlName)),
                                  new StreamSource(QetestUtils.filenameToURL(embeddedRelativeXmlName)),
                                  "(11)embedded relative transform",
                                  relativeGoldFileLevel1);

            // ...Verify relative paths, explicit systemId up one level0
            // sysId for level0 up one: inputDir + File.separator + "EmbeddedRelative.xml"
            Source relativeXmlSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
            relativeXmlSrc.setSystemId(QetestUtils.filenameToURL(inputDir + File.separator + "EmbeddedRelative.xml"));
            Source relativeTransformSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
            relativeTransformSrc.setSystemId(QetestUtils.filenameToURL(inputDir + File.separator + "EmbeddedRelative.xml"));
            testEmbeddedTransform(relativeXmlSrc,
                                  relativeTransformSrc,
                                  "(12a)embedded relative, explicit sysId up level0",
                                  relativeGoldFileLevel0);
            // ...Verify relative paths, explicit systemId same level1
            relativeXmlSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
            relativeXmlSrc.setSystemId(QetestUtils.filenameToURL(embeddedRelativeXmlName));
            relativeTransformSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
            relativeTransformSrc.setSystemId(QetestUtils.filenameToURL(embeddedRelativeXmlName));
            testEmbeddedTransform(relativeXmlSrc,
                                  relativeTransformSrc,
                                  "(12b)embedded relative, explicit sysId same level1",
                                  relativeGoldFileLevel1);

            // ...Verify relative paths, explicit systemId down one level2
            // sysId for level2 down one: inputDir + "/trax/systemid/" + "EmbeddedRelative.xml"
            relativeXmlSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
            relativeXmlSrc.setSystemId(QetestUtils.filenameToURL(inputDir + "/trax/systemid/" + "EmbeddedRelative.xml"));
            relativeTransformSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
            relativeTransformSrc.setSystemId(QetestUtils.filenameToURL(inputDir + "/trax/systemid/" + "EmbeddedRelative.xml"));
            testEmbeddedTransform(relativeXmlSrc,
                                  relativeTransformSrc,
                                  "(12c)embedded relative, explicit sysId down level2",
                                  relativeGoldFileLevel2);

            // Verify you can process various types of embedded stylesheets
            // This also verifies that a type of 'not/found' is skipped
            // Xalan-specific: text/xsl
            testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(typeNameTextXsl)),
                                  new StreamSource(QetestUtils.filenameToURL(typeNameTextXsl)),
                                  "(20a)xml:stylesheet type=text/xsl",
                                  typeGoldName);

            // Proposed standard: text/xml
            testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(typeNameTextXml)),
                                  new StreamSource(QetestUtils.filenameToURL(typeNameTextXml)),
                                  "(20b)xml:stylesheet type=text/xml",
                                  typeGoldName);

            // Proposed standard: application/xml+xslt
            testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(typeNameApplicationXmlXslt)),
                                  new StreamSource(QetestUtils.filenameToURL(typeNameApplicationXmlXslt)),
                                  "(20b)xml:stylesheet type=application/xml+xslt",
                                  typeGoldName);

        }
        catch (Throwable t)
        {
            reporter.checkFail("Problem with other embedded");
            reporter.logThrowable(reporter.ERRORMSG, t, "Problem with other embedded");
        }

        reporter.testCaseClose();
        return true;
    }