2 @see https://www.w3.org/TR/xmlschema-2/
5 package jp.sfjp.mikutoga.xml;
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;
24 public class DomUtilsTest {
26 private static final DocumentBuilderFactory FACTORY =
27 DocumentBuilderFactory.newInstance();
28 private static final DocumentBuilder BUILDER;
30 private static final String TESTELEM = "testelem";
31 private static final String TESTATTR = "testattr";
33 private static Element getTestAttredElem(String attrVal){
34 Document doc = BUILDER.newDocument();
35 Element elem = doc.createElement(TESTELEM);
36 elem.setAttribute(TESTATTR, attrVal);
42 BUILDER = FACTORY.newDocumentBuilder();
43 }catch(ParserConfigurationException e){
44 throw new ExceptionInInitializerError(e);
48 public DomUtilsTest() {
52 public static void setUpClass() throws ParserConfigurationException{
56 public static void tearDownClass() {
64 public void tearDown() {
68 * Test of getBooleanAttr method, of class DomUtils.
71 public void testGetBooleanAttr() throws Exception {
72 System.out.println("getBooleanAttr");
77 elem = getTestAttredElem("true");
78 result = DomUtils.getBooleanAttr(elem, TESTATTR);
81 elem = getTestAttredElem("false");
82 result = DomUtils.getBooleanAttr(elem, TESTATTR);
85 elem = getTestAttredElem("0");
86 result = DomUtils.getBooleanAttr(elem, TESTATTR);
89 elem = getTestAttredElem("1");
90 result = DomUtils.getBooleanAttr(elem, TESTATTR);
93 elem = getTestAttredElem(null);
94 result = DomUtils.getBooleanAttr(elem, TESTATTR);
95 assertFalse(result); // Why?
97 elem = getTestAttredElem("X");
98 result = DomUtils.getBooleanAttr(elem, TESTATTR);
99 assertFalse(result); // Why?
101 elem = getTestAttredElem("");
102 result = DomUtils.getBooleanAttr(elem, TESTATTR);
103 assertFalse(result); // Why?
105 elem = getTestAttredElem("\n\rtrue\u0020\t");
106 result = DomUtils.getBooleanAttr(elem, TESTATTR);
113 * Test of getIntegerAttr method, of class DomUtils.
116 public void testGetIntegerAttr() throws TogaXmlException {
117 System.out.println("getIntegerAttr");
122 elem = getTestAttredElem("0");
123 result = DomUtils.getIntegerAttr(elem, TESTATTR);
124 assertEquals(0, result);
126 elem = getTestAttredElem("1");
127 result = DomUtils.getIntegerAttr(elem, TESTATTR);
128 assertEquals(1, result);
130 elem = getTestAttredElem("-1");
131 result = DomUtils.getIntegerAttr(elem, TESTATTR);
132 assertEquals(-1, result);
134 elem = getTestAttredElem("-0");
135 result = DomUtils.getIntegerAttr(elem, TESTATTR);
136 assertEquals(0, result);
138 elem = getTestAttredElem("+1");
139 result = DomUtils.getIntegerAttr(elem, TESTATTR);
140 assertEquals(1, result);
142 elem = getTestAttredElem("999");
143 result = DomUtils.getIntegerAttr(elem, TESTATTR);
144 assertEquals(999, result);
146 elem = getTestAttredElem("-9999");
147 result = DomUtils.getIntegerAttr(elem, TESTATTR);
148 assertEquals(-9999, result);
150 elem = getTestAttredElem("-2147483648");
151 result = DomUtils.getIntegerAttr(elem, TESTATTR);
152 assertEquals(Integer.MIN_VALUE, result);
154 elem = getTestAttredElem("2147483647");
155 result = DomUtils.getIntegerAttr(elem, TESTATTR);
156 assertEquals(Integer.MAX_VALUE, result);
158 elem = getTestAttredElem("\n\r999\u0020\t");
159 result = DomUtils.getIntegerAttr(elem, TESTATTR);
160 assertEquals(999, result);
162 elem = getTestAttredElem("X");
164 result = DomUtils.getIntegerAttr(elem, TESTATTR);
166 }catch(TogaXmlException e){
174 * Test of getFloatAttr method, of class DomUtils.
177 public void testGetFloatAttr() throws TogaXmlException {
178 System.out.println("getFloatAttr");
183 elem = getTestAttredElem("0.0");
184 result = DomUtils.getFloatAttr(elem, TESTATTR);
185 assertEquals(0.0f, result, 0.0f);
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));
192 elem = getTestAttredElem("+0.0");
193 result = DomUtils.getFloatAttr(elem, TESTATTR);
194 assertEquals(0.0f, result, 0.0f);
196 elem = getTestAttredElem("-123.456");
197 result = DomUtils.getFloatAttr(elem, TESTATTR);
198 assertEquals(-123.456f, result, 0.0f);
200 elem = getTestAttredElem("654.321");
201 result = DomUtils.getFloatAttr(elem, TESTATTR);
202 assertEquals(654.321f, result, 0.0f);
204 elem = getTestAttredElem("2.718281828459045");
205 result = DomUtils.getFloatAttr(elem, TESTATTR);
206 assertEquals((float)StrictMath.E, result, 0.0f);
208 elem = getTestAttredElem("3.141592653589793");
209 result = DomUtils.getFloatAttr(elem, TESTATTR);
210 assertEquals((float)StrictMath.PI, result, 0.0f);
212 elem = getTestAttredElem("1.401298464324817E-45");
213 result = DomUtils.getFloatAttr(elem, TESTATTR);
214 assertEquals(Float.MIN_VALUE, result, 0.0f);
216 elem = getTestAttredElem("1.1754943508222875E-38");
217 result = DomUtils.getFloatAttr(elem, TESTATTR);
218 assertEquals(Float.MIN_NORMAL, result, 0.0f);
220 elem = getTestAttredElem("3.4028234663852886E38");
221 result = DomUtils.getFloatAttr(elem, TESTATTR);
222 assertEquals(Float.MAX_VALUE, result, 0.0f);
224 elem = getTestAttredElem("2E3");
225 result = DomUtils.getFloatAttr(elem, TESTATTR);
226 assertEquals(2000.0f, result, 0.0f);
228 elem = getTestAttredElem("2.3E4");
229 result = DomUtils.getFloatAttr(elem, TESTATTR);
230 assertEquals(23000.0f, result, 0.0f);
232 elem = getTestAttredElem("2.3e4");
233 result = DomUtils.getFloatAttr(elem, TESTATTR);
234 assertEquals(23000.0f, result, 0.0f);
236 elem = getTestAttredElem("2.3E+4");
237 result = DomUtils.getFloatAttr(elem, TESTATTR);
238 assertEquals(23000.0f, result, 0.0f);
240 elem = getTestAttredElem("2.3E-4");
241 result = DomUtils.getFloatAttr(elem, TESTATTR);
242 assertEquals(0.00023f, result, 0.0f);
244 elem = getTestAttredElem("INF");
245 result = DomUtils.getFloatAttr(elem, TESTATTR);
246 assertEquals(Float.POSITIVE_INFINITY, result, 0.0f);
248 elem = getTestAttredElem("-INF");
249 result = DomUtils.getFloatAttr(elem, TESTATTR);
250 assertEquals(Float.NEGATIVE_INFINITY, result, 0.0f);
252 elem = getTestAttredElem("+INF");
254 result = DomUtils.getFloatAttr(elem, TESTATTR);
256 }catch(TogaXmlException e){
259 //assertEquals(Float.POSITIVE_INFINITY, result, 0.0f);
261 elem = getTestAttredElem("NaN");
262 result = DomUtils.getFloatAttr(elem, TESTATTR);
263 assertTrue(Float.isNaN(result));
265 elem = getTestAttredElem("\n\r123.456\u0020\t");
266 result = DomUtils.getFloatAttr(elem, TESTATTR);
267 assertEquals(123.456f, result, 0.0f);
269 elem = getTestAttredElem("X");
271 result = DomUtils.getFloatAttr(elem, TESTATTR);
273 }catch(TogaXmlException e){
280 private static byte parseByte(String str){
282 result = DatatypeConverter.parseByte(str);
287 * Test of parseByte method, of class DomUtils.
290 public void testparseByte() throws TogaXmlException {
291 System.out.println("prseByte");
295 result = parseByte("0");
296 assertEquals((byte)0, result);
298 result = parseByte("-1");
299 assertEquals((byte)-1, result);
301 result = parseByte("1");
302 assertEquals((byte)1, result);
304 result = parseByte("-0");
305 assertEquals((byte)0, result);
307 result = parseByte("+1");
308 assertEquals((byte)1, result);
310 result = parseByte("-128");
311 assertEquals((byte)-128, result);
313 result = parseByte("127");
314 assertEquals((byte)127, result);
316 result = parseByte("\n\r99\u0020\t");
317 assertEquals((byte)99, result);