1   /*
2    * $Id$
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.module.xml.stax;
12  
13  import javax.xml.namespace.QName;
14  import javax.xml.stream.XMLInputFactory;
15  import javax.xml.stream.XMLStreamConstants;
16  import javax.xml.stream.XMLStreamReader;
17  
18  import junit.framework.TestCase;
19  
20  public class ReversibleXMLStreamReaderTest extends TestCase
21  {
22      public void testReverse() throws Exception
23      {
24          XMLInputFactory xif = XMLInputFactory.newInstance();
25          
26          XMLStreamReader coreReader = xif.createXMLStreamReader(getClass().getResourceAsStream("/simple.xml"));
27          
28          ReversibleXMLStreamReader xsr = new ReversibleXMLStreamReader(coreReader);
29          
30          xsr.setTracking(true);
31  
32          assertEquals(XMLStreamConstants.SPACE, xsr.next());
33          assertEquals(XMLStreamConstants.START_ELEMENT, xsr.next());
34          QName start = xsr.getName();
35          assertEquals(XMLStreamConstants.CHARACTERS, xsr.next());
36          String text = xsr.getText();
37  
38          xsr.reset();
39  
40          assertEquals(XMLStreamConstants.START_ELEMENT, xsr.next());
41          assertEquals(start, xsr.getName());
42          assertEquals(start.getPrefix(), xsr.getPrefix());
43          assertEquals(start.getLocalPart(), xsr.getLocalName());
44          assertEquals(start.getNamespaceURI(), xsr.getNamespaceURI());
45          assertEquals(XMLStreamConstants.CHARACTERS, xsr.next()); // this is the last event we saved
46          assertEquals(text, xsr.getText());
47          assertEquals(XMLStreamConstants.END_ELEMENT, xsr.next());  
48          assertEquals(XMLStreamConstants.SPACE, xsr.next());
49          assertEquals(XMLStreamConstants.END_DOCUMENT, xsr.next());
50  
51          xsr.reset();
52  
53          assertEquals(XMLStreamConstants.START_ELEMENT, xsr.next());
54          assertEquals(start, xsr.getName());
55          assertEquals(XMLStreamConstants.CHARACTERS, xsr.next()); // this is the last event we saved
56          assertEquals(text, xsr.getText());
57          assertEquals(XMLStreamConstants.END_ELEMENT, xsr.next());  
58          assertEquals(XMLStreamConstants.END_DOCUMENT, xsr.next());
59      }
60      
61      public void testFullReverse() throws Exception
62      {
63          XMLInputFactory xif = XMLInputFactory.newInstance();
64          
65          XMLStreamReader coreReader = xif.createXMLStreamReader(getClass().getResourceAsStream("/simple.xml"));
66          
67          ReversibleXMLStreamReader xsr = new ReversibleXMLStreamReader(coreReader);
68          
69          xsr.setTracking(true);
70  
71          assertEquals(XMLStreamConstants.SPACE, xsr.next());
72          assertEquals(XMLStreamConstants.START_ELEMENT, xsr.next());
73          assertEquals(XMLStreamConstants.CHARACTERS, xsr.next());
74          assertEquals(XMLStreamConstants.END_ELEMENT, xsr.next());   
75          assertEquals(XMLStreamConstants.SPACE, xsr.next());     
76          assertEquals(XMLStreamConstants.END_DOCUMENT, xsr.next());
77  
78          xsr.reset();
79  
80          assertEquals(XMLStreamConstants.START_ELEMENT, xsr.next());
81          assertEquals(XMLStreamConstants.CHARACTERS, xsr.next());
82          assertEquals(XMLStreamConstants.END_ELEMENT, xsr.next());  
83          assertEquals(XMLStreamConstants.END_DOCUMENT, xsr.next());
84      }
85  }
86  
87