OSDN Git Service

496a87e66d812aa9039d315307cf3e45ec59a01c
[mikutoga/TogaGem.git] / src / test / java / jp / sfjp / mikutoga / xml / DomUtilsTest.java
1 /*
2 @see https://www.w3.org/TR/xmlschema-2/
3  */
4
5 package jp.sfjp.mikutoga.xml;
6
7 import javax.xml.bind.DatatypeConverter;
8 import javax.xml.parsers.DocumentBuilder;
9 import javax.xml.parsers.DocumentBuilderFactory;
10 import javax.xml.parsers.ParserConfigurationException;
11 import org.junit.After;
12 import org.junit.AfterClass;
13 import org.junit.Before;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import static org.junit.Assert.*;
17 import org.w3c.dom.Document;
18 import org.w3c.dom.Element;
19
20 /**
21  *
22  * @author silva
23  */
24 public class DomUtilsTest {
25
26     private static final DocumentBuilderFactory FACTORY =
27             DocumentBuilderFactory.newInstance();
28     private static final DocumentBuilder BUILDER;
29
30     private static final String TESTELEM = "testelem";
31     private static final String TESTATTR = "testattr";
32
33     private static Element getTestAttredElem(String attrVal){
34         Document doc = BUILDER.newDocument();
35         Element elem = doc.createElement(TESTELEM);
36         elem.setAttribute(TESTATTR, attrVal);
37         return elem;
38     }
39
40     static{
41         try{
42             BUILDER = FACTORY.newDocumentBuilder();
43         }catch(ParserConfigurationException e){
44             throw new ExceptionInInitializerError(e);
45         }
46     }
47
48     public DomUtilsTest() {
49     }
50
51     @BeforeClass
52     public static void setUpClass() throws ParserConfigurationException{
53     }
54
55     @AfterClass
56     public static void tearDownClass() {
57     }
58
59     @Before
60     public void setUp() {
61     }
62
63     @After
64     public void tearDown() {
65     }
66
67     /**
68      * Test of getBooleanAttr method, of class DomUtils.
69      */
70     @Test
71     public void testGetBooleanAttr() throws Exception {
72         System.out.println("getBooleanAttr");
73
74         boolean result;
75         Element elem;
76
77         elem = getTestAttredElem("true");
78         result = DomUtils.getBooleanAttr(elem, TESTATTR);
79         assertTrue(result);
80
81         elem = getTestAttredElem("false");
82         result = DomUtils.getBooleanAttr(elem, TESTATTR);
83         assertFalse(result);
84
85         elem = getTestAttredElem("0");
86         result = DomUtils.getBooleanAttr(elem, TESTATTR);
87         assertFalse(result);
88
89         elem = getTestAttredElem("1");
90         result = DomUtils.getBooleanAttr(elem, TESTATTR);
91         assertTrue(result);
92
93         elem = getTestAttredElem(null);
94         result = DomUtils.getBooleanAttr(elem, TESTATTR);
95         assertFalse(result); // Why?
96
97         elem = getTestAttredElem("X");
98         result = DomUtils.getBooleanAttr(elem, TESTATTR);
99         assertFalse(result); // Why?
100
101         elem = getTestAttredElem("");
102         result = DomUtils.getBooleanAttr(elem, TESTATTR);
103         assertFalse(result); // Why?
104
105         elem = getTestAttredElem("\n\rtrue\u0020\t");
106         result = DomUtils.getBooleanAttr(elem, TESTATTR);
107         assertTrue(result);
108
109         return;
110     }
111
112     /**
113      * Test of getIntegerAttr method, of class DomUtils.
114      */
115     @Test
116     public void testGetIntegerAttr() throws TogaXmlException {
117         System.out.println("getIntegerAttr");
118
119         int result;
120         Element elem;
121
122         elem = getTestAttredElem("0");
123         result = DomUtils.getIntegerAttr(elem, TESTATTR);
124         assertEquals(0, result);
125
126         elem = getTestAttredElem("1");
127         result = DomUtils.getIntegerAttr(elem, TESTATTR);
128         assertEquals(1, result);
129
130         elem = getTestAttredElem("-1");
131         result = DomUtils.getIntegerAttr(elem, TESTATTR);
132         assertEquals(-1, result);
133
134         elem = getTestAttredElem("-0");
135         result = DomUtils.getIntegerAttr(elem, TESTATTR);
136         assertEquals(0, result);
137
138         elem = getTestAttredElem("+1");
139         result = DomUtils.getIntegerAttr(elem, TESTATTR);
140         assertEquals(1, result);
141
142         elem = getTestAttredElem("999");
143         result = DomUtils.getIntegerAttr(elem, TESTATTR);
144         assertEquals(999, result);
145
146         elem = getTestAttredElem("-9999");
147         result = DomUtils.getIntegerAttr(elem, TESTATTR);
148         assertEquals(-9999, result);
149
150         elem = getTestAttredElem("-2147483648");
151         result = DomUtils.getIntegerAttr(elem, TESTATTR);
152         assertEquals(Integer.MIN_VALUE, result);
153
154         elem = getTestAttredElem("2147483647");
155         result = DomUtils.getIntegerAttr(elem, TESTATTR);
156         assertEquals(Integer.MAX_VALUE, result);
157
158         elem = getTestAttredElem("\n\r999\u0020\t");
159         result = DomUtils.getIntegerAttr(elem, TESTATTR);
160         assertEquals(999, result);
161
162         elem = getTestAttredElem("X");
163         try{
164             result = DomUtils.getIntegerAttr(elem, TESTATTR);
165             fail();
166         }catch(TogaXmlException e){
167             assert true;
168         }
169
170         return;
171     }
172
173     /**
174      * Test of getFloatAttr method, of class DomUtils.
175      */
176     @Test
177     public void testGetFloatAttr() throws TogaXmlException {
178         System.out.println("getFloatAttr");
179
180         float result;
181         Element elem;
182
183         elem = getTestAttredElem("0.0");
184         result = DomUtils.getFloatAttr(elem, TESTATTR);
185         assertEquals(0.0f, result, 0.0f);
186
187         elem = getTestAttredElem("-0.0");
188         result = DomUtils.getFloatAttr(elem, TESTATTR);
189         assertEquals(0.0f, result, 0.0f);
190         assertEquals("-0.0", Float.toString(result));
191
192         elem = getTestAttredElem("+0.0");
193         result = DomUtils.getFloatAttr(elem, TESTATTR);
194         assertEquals(0.0f, result, 0.0f);
195
196         elem = getTestAttredElem("-123.456");
197         result = DomUtils.getFloatAttr(elem, TESTATTR);
198         assertEquals(-123.456f, result, 0.0f);
199
200         elem = getTestAttredElem("654.321");
201         result = DomUtils.getFloatAttr(elem, TESTATTR);
202         assertEquals(654.321f, result, 0.0f);
203
204         elem = getTestAttredElem("2.718281828459045");
205         result = DomUtils.getFloatAttr(elem, TESTATTR);
206         assertEquals((float)StrictMath.E, result, 0.0f);
207
208         elem = getTestAttredElem("3.141592653589793");
209         result = DomUtils.getFloatAttr(elem, TESTATTR);
210         assertEquals((float)StrictMath.PI, result, 0.0f);
211
212         elem = getTestAttredElem("1.401298464324817E-45");
213         result = DomUtils.getFloatAttr(elem, TESTATTR);
214         assertEquals(Float.MIN_VALUE, result, 0.0f);
215
216         elem = getTestAttredElem("1.1754943508222875E-38");
217         result = DomUtils.getFloatAttr(elem, TESTATTR);
218         assertEquals(Float.MIN_NORMAL, result, 0.0f);
219
220         elem = getTestAttredElem("3.4028234663852886E38");
221         result = DomUtils.getFloatAttr(elem, TESTATTR);
222         assertEquals(Float.MAX_VALUE, result, 0.0f);
223
224         elem = getTestAttredElem("2E3");
225         result = DomUtils.getFloatAttr(elem, TESTATTR);
226         assertEquals(2000.0f, result, 0.0f);
227
228         elem = getTestAttredElem("2.3E4");
229         result = DomUtils.getFloatAttr(elem, TESTATTR);
230         assertEquals(23000.0f, result, 0.0f);
231
232         elem = getTestAttredElem("2.3e4");
233         result = DomUtils.getFloatAttr(elem, TESTATTR);
234         assertEquals(23000.0f, result, 0.0f);
235
236         elem = getTestAttredElem("2.3E+4");
237         result = DomUtils.getFloatAttr(elem, TESTATTR);
238         assertEquals(23000.0f, result, 0.0f);
239
240         elem = getTestAttredElem("2.3E-4");
241         result = DomUtils.getFloatAttr(elem, TESTATTR);
242         assertEquals(0.00023f, result, 0.0f);
243
244         elem = getTestAttredElem("INF");
245         result = DomUtils.getFloatAttr(elem, TESTATTR);
246         assertEquals(Float.POSITIVE_INFINITY, result, 0.0f);
247
248         elem = getTestAttredElem("-INF");
249         result = DomUtils.getFloatAttr(elem, TESTATTR);
250         assertEquals(Float.NEGATIVE_INFINITY, result, 0.0f);
251
252         elem = getTestAttredElem("+INF");
253         try{
254             result = DomUtils.getFloatAttr(elem, TESTATTR);
255             fail();
256         }catch(TogaXmlException e){
257             assert true;
258         }
259         //assertEquals(Float.POSITIVE_INFINITY, result, 0.0f);
260
261         elem = getTestAttredElem("NaN");
262         result = DomUtils.getFloatAttr(elem, TESTATTR);
263         assertTrue(Float.isNaN(result));
264
265         elem = getTestAttredElem("\n\r123.456\u0020\t");
266         result = DomUtils.getFloatAttr(elem, TESTATTR);
267         assertEquals(123.456f, result, 0.0f);
268
269         elem = getTestAttredElem("X");
270         try{
271             result = DomUtils.getFloatAttr(elem, TESTATTR);
272             fail();
273         }catch(TogaXmlException e){
274             assert true;
275         }
276
277         return;
278     }
279
280     private static byte parseByte(String str){
281         byte result;
282         result = DatatypeConverter.parseByte(str);
283         return result;
284     }
285
286     /**
287      * Test of parseByte method, of class DomUtils.
288      */
289     @Test
290     public void testparseByte() throws TogaXmlException {
291         System.out.println("prseByte");
292
293         byte result;
294
295         result = parseByte("0");
296         assertEquals((byte)0, result);
297
298         result = parseByte("-1");
299         assertEquals((byte)-1, result);
300
301         result = parseByte("1");
302         assertEquals((byte)1, result);
303
304         result = parseByte("-0");
305         assertEquals((byte)0, result);
306
307         result = parseByte("+1");
308         assertEquals((byte)1, result);
309
310         result = parseByte("-128");
311         assertEquals((byte)-128, result);
312
313         result = parseByte("127");
314         assertEquals((byte)127, result);
315
316         result = parseByte("\n\r99\u0020\t");
317         assertEquals((byte)99, result);
318
319         return;
320     }
321
322 }