1   
2   
3   
4   
5   
6   
7   
8   package org.dom4j;
9   
10  import junit.textui.TestRunner;
11  
12  import org.dom4j.io.SAXReader;
13  import org.dom4j.util.UserDataAttribute;
14  import org.dom4j.util.UserDataDocumentFactory;
15  import org.dom4j.util.UserDataElement;
16  
17  /***
18   * Tests the UserDataDocumentFactory
19   * 
20   * @author <a href="mailto:jstrachan@apache.org">James Strachan </a>
21   * @version $Revision: 1.4 $
22   */
23  public class UserDataTest extends AbstractTestCase {
24      /*** Input XML file to read */
25      private static final String INPUT_XML_FILE = "/xml/web.xml";
26  
27      private Object userData = new Double(1.23456);
28  
29      public static void main(String[] args) {
30          TestRunner.run(UserDataTest.class);
31      }
32  
33      
34      
35      public void testSetData() throws Exception {
36          Element root = getRootElement();
37  
38          assertTrue("Element instanceof UserDataElement",
39                  root instanceof UserDataElement);
40  
41          root.setData(userData);
42  
43          assertTrue("Stored user data!", root.getData() == userData);
44  
45          log("root: " + root);
46  
47          assertUserData(root, userData);
48  
49          Element cloned = (Element) root.clone();
50          assertTrue("Cloned new instance", cloned != root);
51          assertUserData(cloned, userData);
52  
53          cloned = root.createCopy();
54          assertTrue("Cloned new instance", cloned != root);
55          assertUserData(cloned, userData);
56      }
57  
58      public void testCloneAttribute() throws Exception {
59          Element root = getRootElement();
60          root.addAttribute("name", "value");
61  
62          Attribute attribute = root.attribute("name");
63          assertTrue(attribute instanceof UserDataAttribute);
64  
65          Element cloned = (Element) root.clone();
66          Attribute clonedAttribute = cloned.attribute("name");
67          assertTrue(clonedAttribute instanceof UserDataAttribute);
68      }
69  
70      public void testNewAdditions() throws Exception {
71          Element root = getRootElement();
72  
73          Element newElement = root.addElement("foo1234");
74          assertTrue("New Element is a UserDataElement",
75                  newElement instanceof UserDataElement);
76  
77          root.addAttribute("bar456", "123");
78  
79          Attribute newAttribute = root.attribute("bar456");
80  
81          assertTrue("New Attribute is a UserDataAttribute",
82                  newAttribute instanceof UserDataAttribute);
83      }
84  
85      public void testNewDocument() throws Exception {
86          DocumentFactory factory = UserDataDocumentFactory.getInstance();
87          Document document = factory.createDocument();
88  
89          Element root = document.addElement("root");
90          assertTrue("Root Element is a UserDataElement",
91                  root instanceof UserDataElement);
92  
93          Element newElement = root.addElement("foo1234");
94          assertTrue("New Element is a UserDataElement",
95                  newElement instanceof UserDataElement);
96  
97          root.addAttribute("bar456", "123");
98  
99          Attribute newAttribute = root.attribute("bar456");
100 
101         assertTrue("New Attribute is a UserDataAttribute",
102                 newAttribute instanceof UserDataAttribute);
103     }
104 
105     
106     
107     protected void assertUserData(Element root, Object data) throws Exception {
108         Object result = root.getData();
109 
110         assertTrue("No user data!", result != null);
111         assertTrue("Stored user data correctly", data.equals(result));
112     }
113 
114     protected void setUp() throws Exception {
115         super.setUp();
116 
117         SAXReader reader = new SAXReader();
118         reader.setDocumentFactory(UserDataDocumentFactory.getInstance());
119         document = getDocument(INPUT_XML_FILE, reader);
120     }
121 }
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
139 
140 
141 
142 
143 
144 
145 
146 
147 
148 
149 
150 
151 
152 
153 
154 
155 
156 
157 
158