xref: /aosp_15_r20/external/apache-xml/test/tests/bugzilla/Bugzilla2925.java (revision 1212f9a0ffdc28482b8821715d2222bf16dc14e2)
1*1212f9a0SAndroid Build Coastguard Worker /*
2*1212f9a0SAndroid Build Coastguard Worker  * Licensed to the Apache Software Foundation (ASF) under one
3*1212f9a0SAndroid Build Coastguard Worker  * or more contributor license agreements. See the NOTICE file
4*1212f9a0SAndroid Build Coastguard Worker  * distributed with this work for additional information
5*1212f9a0SAndroid Build Coastguard Worker  * regarding copyright ownership. The ASF licenses this file
6*1212f9a0SAndroid Build Coastguard Worker  * to you under the Apache License, Version 2.0 (the  "License");
7*1212f9a0SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
8*1212f9a0SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
9*1212f9a0SAndroid Build Coastguard Worker  *
10*1212f9a0SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
11*1212f9a0SAndroid Build Coastguard Worker  *
12*1212f9a0SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
13*1212f9a0SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
14*1212f9a0SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*1212f9a0SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
16*1212f9a0SAndroid Build Coastguard Worker  * limitations under the License.
17*1212f9a0SAndroid Build Coastguard Worker  */
18*1212f9a0SAndroid Build Coastguard Worker 
19*1212f9a0SAndroid Build Coastguard Worker // Common Qetest / Xalan testing imports
20*1212f9a0SAndroid Build Coastguard Worker import org.apache.qetest.Datalet;
21*1212f9a0SAndroid Build Coastguard Worker import org.apache.qetest.Logger;
22*1212f9a0SAndroid Build Coastguard Worker import org.apache.qetest.TestletImpl;
23*1212f9a0SAndroid Build Coastguard Worker import org.apache.qetest.xsl.XHTFileCheckService;
24*1212f9a0SAndroid Build Coastguard Worker import org.apache.qetest.CheckService;
25*1212f9a0SAndroid Build Coastguard Worker 
26*1212f9a0SAndroid Build Coastguard Worker import org.w3c.dom.*;
27*1212f9a0SAndroid Build Coastguard Worker 
28*1212f9a0SAndroid Build Coastguard Worker import javax.xml.parsers.*;
29*1212f9a0SAndroid Build Coastguard Worker import javax.xml.transform.*;
30*1212f9a0SAndroid Build Coastguard Worker import javax.xml.transform.stream.*;
31*1212f9a0SAndroid Build Coastguard Worker 
32*1212f9a0SAndroid Build Coastguard Worker import org.apache.xalan.templates.*;
33*1212f9a0SAndroid Build Coastguard Worker import org.apache.xalan.extensions.*;
34*1212f9a0SAndroid Build Coastguard Worker import org.apache.xalan.transformer.*;
35*1212f9a0SAndroid Build Coastguard Worker import org.apache.xpath.*;
36*1212f9a0SAndroid Build Coastguard Worker import org.apache.xpath.objects.*;
37*1212f9a0SAndroid Build Coastguard Worker 
38*1212f9a0SAndroid Build Coastguard Worker import org.apache.xml.dtm.*;
39*1212f9a0SAndroid Build Coastguard Worker import org.apache.xml.dtm.ref.*;
40*1212f9a0SAndroid Build Coastguard Worker import org.apache.xml.dtm.ref.sax2dtm.*;
41*1212f9a0SAndroid Build Coastguard Worker 
42*1212f9a0SAndroid Build Coastguard Worker import org.apache.xpath.XPathContext.XPathExpressionContext;
43*1212f9a0SAndroid Build Coastguard Worker import org.apache.xpath.axes.OneStepIterator;
44*1212f9a0SAndroid Build Coastguard Worker 
45*1212f9a0SAndroid Build Coastguard Worker import java.io.File;
46*1212f9a0SAndroid Build Coastguard Worker 
47*1212f9a0SAndroid Build Coastguard Worker /**
48*1212f9a0SAndroid Build Coastguard Worker  * Testlet for reproducing
49*1212f9a0SAndroid Build Coastguard Worker  * <a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2925">bug #2925</a>
50*1212f9a0SAndroid Build Coastguard Worker  * @author [email protected]
51*1212f9a0SAndroid Build Coastguard Worker  */
52*1212f9a0SAndroid Build Coastguard Worker public class Bugzilla2925 extends TestletImpl
53*1212f9a0SAndroid Build Coastguard Worker {
54*1212f9a0SAndroid Build Coastguard Worker 
55*1212f9a0SAndroid Build Coastguard Worker   // Initialize our classname for TestletImpl's main() method - must be updated!
56*1212f9a0SAndroid Build Coastguard Worker   static
57*1212f9a0SAndroid Build Coastguard Worker   {
58*1212f9a0SAndroid Build Coastguard Worker     thisClassName = "Bugzilla2925";
59*1212f9a0SAndroid Build Coastguard Worker   }
60*1212f9a0SAndroid Build Coastguard Worker 
61*1212f9a0SAndroid Build Coastguard Worker   /**
62*1212f9a0SAndroid Build Coastguard Worker    * Write Minimal code to reproduce your Bugzilla bug report.
63*1212f9a0SAndroid Build Coastguard Worker    * Many Bugzilla tests won't bother with a datalet; they'll
64*1212f9a0SAndroid Build Coastguard Worker    * just have the data to reproduce the bug encoded by default.
65*1212f9a0SAndroid Build Coastguard Worker    * @param d (optional) Datalet to use as data point for the test.
66*1212f9a0SAndroid Build Coastguard Worker    *
67*1212f9a0SAndroid Build Coastguard Worker    * NEEDSDOC @param datalet
68*1212f9a0SAndroid Build Coastguard Worker    */
execute(Datalet datalet)69*1212f9a0SAndroid Build Coastguard Worker   public void execute(Datalet datalet)
70*1212f9a0SAndroid Build Coastguard Worker   {
71*1212f9a0SAndroid Build Coastguard Worker 
72*1212f9a0SAndroid Build Coastguard Worker     // Use logger.logMsg(...) instead of System.out.println(...)
73*1212f9a0SAndroid Build Coastguard Worker     logger.logMsg(Logger.STATUSMSG, "Reproducing Bugzilla#2925");
74*1212f9a0SAndroid Build Coastguard Worker 
75*1212f9a0SAndroid Build Coastguard Worker     try
76*1212f9a0SAndroid Build Coastguard Worker     {
77*1212f9a0SAndroid Build Coastguard Worker       TransformerFactory tf = TransformerFactory.newInstance();
78*1212f9a0SAndroid Build Coastguard Worker       Transformer t = tf.newTransformer(new StreamSource("Bugzilla2925.xsl"));
79*1212f9a0SAndroid Build Coastguard Worker       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
80*1212f9a0SAndroid Build Coastguard Worker 
81*1212f9a0SAndroid Build Coastguard Worker       dbf.setNamespaceAware(true);
82*1212f9a0SAndroid Build Coastguard Worker 
83*1212f9a0SAndroid Build Coastguard Worker       DocumentBuilder db = dbf.newDocumentBuilder();
84*1212f9a0SAndroid Build Coastguard Worker       Document doc = db.parse("Bugzilla2925Params.xml");
85*1212f9a0SAndroid Build Coastguard Worker 
86*1212f9a0SAndroid Build Coastguard Worker       t.setParameter("stylesheets", doc.getDocumentElement());
87*1212f9a0SAndroid Build Coastguard Worker       t.transform(new StreamSource("bugzilla2925.xml"),
88*1212f9a0SAndroid Build Coastguard Worker                   new StreamResult("bugzilla2925.xsr")
89*1212f9a0SAndroid Build Coastguard Worker                   // new StreamResult(System.err)
90*1212f9a0SAndroid Build Coastguard Worker                   );
91*1212f9a0SAndroid Build Coastguard Worker 
92*1212f9a0SAndroid Build Coastguard Worker       // If we get here, attempt to validate the contents of
93*1212f9a0SAndroid Build Coastguard Worker       //  the outputFile created
94*1212f9a0SAndroid Build Coastguard Worker       CheckService fileChecker = new XHTFileCheckService();
95*1212f9a0SAndroid Build Coastguard Worker 
96*1212f9a0SAndroid Build Coastguard Worker       if (Logger.PASS_RESULT
97*1212f9a0SAndroid Build Coastguard Worker               != fileChecker.check(logger, new File("bugzilla2925.xsr"),
98*1212f9a0SAndroid Build Coastguard Worker                                    new File("bugzilla2925.out"),
99*1212f9a0SAndroid Build Coastguard Worker                                    getDescription())){}
100*1212f9a0SAndroid Build Coastguard Worker     }
101*1212f9a0SAndroid Build Coastguard Worker     catch (Exception e)
102*1212f9a0SAndroid Build Coastguard Worker     {
103*1212f9a0SAndroid Build Coastguard Worker       logger.checkFail(e.getMessage());
104*1212f9a0SAndroid Build Coastguard Worker     }
105*1212f9a0SAndroid Build Coastguard Worker 
106*1212f9a0SAndroid Build Coastguard Worker     // Optional: use the Datalet d if supplied
107*1212f9a0SAndroid Build Coastguard Worker     // Call code to reproduce the bug here
108*1212f9a0SAndroid Build Coastguard Worker     // Call logger.checkFail("desc") (like Junit's assert(true, "desc")
109*1212f9a0SAndroid Build Coastguard Worker     //  or logger.checkPass("desc")  (like Junit's assert(false, "desc")
110*1212f9a0SAndroid Build Coastguard Worker     //  to report the actual bug fail/pass status
111*1212f9a0SAndroid Build Coastguard Worker   }
112*1212f9a0SAndroid Build Coastguard Worker 
dtmTest(org.apache.xalan.extensions.ExpressionContext exprContext, String relativeURI)113*1212f9a0SAndroid Build Coastguard Worker   public static DTM dtmTest(org.apache.xalan.extensions.ExpressionContext exprContext,
114*1212f9a0SAndroid Build Coastguard Worker                      String relativeURI)
115*1212f9a0SAndroid Build Coastguard Worker   {
116*1212f9a0SAndroid Build Coastguard Worker     XPathExpressionContext xpathExprContext = (XPathExpressionContext)exprContext;
117*1212f9a0SAndroid Build Coastguard Worker     DTMManager dtmMgr = xpathExprContext.getDTMManager();
118*1212f9a0SAndroid Build Coastguard Worker 
119*1212f9a0SAndroid Build Coastguard Worker     DTM dtm = dtmMgr.getDTM(new StreamSource(relativeURI), true, null, false, true);
120*1212f9a0SAndroid Build Coastguard Worker     // System.err.println("Returning a DTM: "+dtm);
121*1212f9a0SAndroid Build Coastguard Worker     // ((DTMDefaultBase)dtm).dumpDTM();
122*1212f9a0SAndroid Build Coastguard Worker     return dtm;
123*1212f9a0SAndroid Build Coastguard Worker   }
124*1212f9a0SAndroid Build Coastguard Worker 
DTMAxisIteratorTest( org.apache.xalan.extensions.ExpressionContext exprContext, String relativeURI)125*1212f9a0SAndroid Build Coastguard Worker   public static DTMAxisIterator DTMAxisIteratorTest(
126*1212f9a0SAndroid Build Coastguard Worker                      org.apache.xalan.extensions.ExpressionContext exprContext,
127*1212f9a0SAndroid Build Coastguard Worker                      String relativeURI)
128*1212f9a0SAndroid Build Coastguard Worker   {
129*1212f9a0SAndroid Build Coastguard Worker     XPathExpressionContext xpathExprContext = (XPathExpressionContext)exprContext;
130*1212f9a0SAndroid Build Coastguard Worker     DTMManager dtmMgr = xpathExprContext.getDTMManager();
131*1212f9a0SAndroid Build Coastguard Worker 
132*1212f9a0SAndroid Build Coastguard Worker     DTM dtm = dtmMgr.getDTM(new StreamSource(relativeURI), true, null, false, true);
133*1212f9a0SAndroid Build Coastguard Worker     // System.err.println("Returning a DTM: "+dtm);
134*1212f9a0SAndroid Build Coastguard Worker     // ((DTMDefaultBase)dtm).dumpDTM();
135*1212f9a0SAndroid Build Coastguard Worker 
136*1212f9a0SAndroid Build Coastguard Worker     DTMAxisIterator iter = dtm.getAxisIterator(Axis.SELF);
137*1212f9a0SAndroid Build Coastguard Worker     iter.setStartNode(dtm.getDocument());
138*1212f9a0SAndroid Build Coastguard Worker 
139*1212f9a0SAndroid Build Coastguard Worker     return iter;
140*1212f9a0SAndroid Build Coastguard Worker   }
141*1212f9a0SAndroid Build Coastguard Worker 
DTMIteratorTest( org.apache.xalan.extensions.ExpressionContext exprContext, String relativeURI)142*1212f9a0SAndroid Build Coastguard Worker   public static DTMIterator DTMIteratorTest(
143*1212f9a0SAndroid Build Coastguard Worker                      org.apache.xalan.extensions.ExpressionContext exprContext,
144*1212f9a0SAndroid Build Coastguard Worker                      String relativeURI)
145*1212f9a0SAndroid Build Coastguard Worker       throws Exception
146*1212f9a0SAndroid Build Coastguard Worker   {
147*1212f9a0SAndroid Build Coastguard Worker     XPathExpressionContext xpathExprContext = (XPathExpressionContext)exprContext;
148*1212f9a0SAndroid Build Coastguard Worker     DTMManager dtmMgr = xpathExprContext.getDTMManager();
149*1212f9a0SAndroid Build Coastguard Worker 
150*1212f9a0SAndroid Build Coastguard Worker     DTM dtm = dtmMgr.getDTM(new StreamSource(relativeURI), true, null, false, true);
151*1212f9a0SAndroid Build Coastguard Worker     // System.err.println("Returning a DTM: "+dtm);
152*1212f9a0SAndroid Build Coastguard Worker     // ((DTMDefaultBase)dtm).dumpDTM();
153*1212f9a0SAndroid Build Coastguard Worker 
154*1212f9a0SAndroid Build Coastguard Worker /***************************
155*1212f9a0SAndroid Build Coastguard Worker // Comment out compile error: Bugzilla2925.java:141: Wrong number of arguments in constructor.
156*1212f9a0SAndroid Build Coastguard Worker     DTMIterator iterator = new OneStepIterator(dtm.getAxisIterator(Axis.SELF));
157*1212f9a0SAndroid Build Coastguard Worker     iterator.setRoot(dtm.getDocument(), xpathExprContext.getXPathContext());
158*1212f9a0SAndroid Build Coastguard Worker 
159*1212f9a0SAndroid Build Coastguard Worker     return iterator;
160*1212f9a0SAndroid Build Coastguard Worker // Comment out compile error: Bugzilla2925.java:141: Wrong number of arguments in constructor.
161*1212f9a0SAndroid Build Coastguard Worker ***************************/
162*1212f9a0SAndroid Build Coastguard Worker     return null;
163*1212f9a0SAndroid Build Coastguard Worker   }
164*1212f9a0SAndroid Build Coastguard Worker 
165*1212f9a0SAndroid Build Coastguard Worker 
166*1212f9a0SAndroid Build Coastguard Worker 
167*1212f9a0SAndroid Build Coastguard Worker   /**
168*1212f9a0SAndroid Build Coastguard Worker    * <a href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2925">
169*1212f9a0SAndroid Build Coastguard Worker    * Link to Bugzilla report</a>
170*1212f9a0SAndroid Build Coastguard Worker    * @return "Parameter set from DOM Node, broken".
171*1212f9a0SAndroid Build Coastguard Worker    */
getDescription()172*1212f9a0SAndroid Build Coastguard Worker   public String getDescription()
173*1212f9a0SAndroid Build Coastguard Worker   {
174*1212f9a0SAndroid Build Coastguard Worker     return "http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2925";
175*1212f9a0SAndroid Build Coastguard Worker   }
176*1212f9a0SAndroid Build Coastguard Worker }  // end of class Bugzilla2925
177*1212f9a0SAndroid Build Coastguard Worker 
178