OSDN Git Service

42caade16be4ba8c54a7b0c8869a67d22a7bd3be
[jindolf/Jindolf.git] / src / test / java / jp / sourceforge / jindolf / json / JsStringTest.java
1 /*\r
2  * To change this template, choose Tools | Templates\r
3  * and open the template in the editor.\r
4  */\r
5 \r
6 package jp.sourceforge.jindolf.json;\r
7 \r
8 import java.io.StringReader;\r
9 import java.util.SortedSet;\r
10 import java.util.TreeSet;\r
11 import org.junit.After;\r
12 import org.junit.AfterClass;\r
13 import org.junit.Before;\r
14 import org.junit.BeforeClass;\r
15 import org.junit.Test;\r
16 import static org.junit.Assert.*;\r
17 \r
18 /**\r
19  *\r
20  */\r
21 public class JsStringTest {\r
22 \r
23     public JsStringTest() {\r
24     }\r
25 \r
26     @BeforeClass\r
27     public static void setUpClass() throws Exception{\r
28     }\r
29 \r
30     @AfterClass\r
31     public static void tearDownClass() throws Exception{\r
32     }\r
33 \r
34     @Before\r
35     public void setUp() {\r
36     }\r
37 \r
38     @After\r
39     public void tearDown() {\r
40     }\r
41 \r
42     /**\r
43      * Test of parseHexChar method, of class JsString.\r
44      */\r
45     @Test\r
46     public void testParseHexChar() throws Exception{\r
47         System.out.println("parseHexChar");\r
48 \r
49         JsonReader reader;\r
50         char ch;\r
51 \r
52         reader = new JsonReader(new StringReader("0000"));\r
53         ch = JsString.parseHexChar(reader);\r
54         assertEquals('\u0000', ch);\r
55 \r
56         reader = new JsonReader(new StringReader("ffff"));\r
57         ch = JsString.parseHexChar(reader);\r
58         assertEquals('\uffff', ch);\r
59 \r
60         reader = new JsonReader(new StringReader("FFFF"));\r
61         ch = JsString.parseHexChar(reader);\r
62         assertEquals('\uffff', ch);\r
63 \r
64         reader = new JsonReader(new StringReader("dead"));\r
65         ch = JsString.parseHexChar(reader);\r
66         assertEquals('\udead', ch);\r
67 \r
68         reader = new JsonReader(new StringReader("abcde"));\r
69         ch = JsString.parseHexChar(reader);\r
70         assertEquals('\uabcd', ch);\r
71 \r
72         try{\r
73             reader = new JsonReader(new StringReader("000,"));\r
74             ch = JsString.parseHexChar(reader);\r
75             fail();\r
76         }catch(JsParseException e){\r
77             // NOTHING\r
78         }\r
79 \r
80         return;\r
81     }\r
82 \r
83     /**\r
84      * Test of parseString method, of class JsString.\r
85      */\r
86     @Test\r
87     public void testParseString() throws Exception{\r
88         System.out.println("parseString");\r
89 \r
90         JsonReader reader;\r
91         JsString string;\r
92 \r
93         reader = new JsonReader(new StringReader("\"abc\""));\r
94         string = JsString.parseString(reader);\r
95         assertEquals("abc", string.toRawString());\r
96 \r
97         reader = new JsonReader(new StringReader("\"あいう\""));\r
98         string = JsString.parseString(reader);\r
99         assertEquals("あいう", string.toRawString());\r
100 \r
101         reader = new JsonReader(new StringReader("\"\\\"\\\\\\/\""));\r
102         string = JsString.parseString(reader);\r
103         assertEquals("\"\\/", string.toRawString());\r
104 \r
105         reader = new JsonReader(new StringReader("\"\\b\\f\\n\\r\\t\""));\r
106         string = JsString.parseString(reader);\r
107         assertEquals("\b\f\n\r\t", string.toRawString());\r
108 \r
109         reader = new JsonReader(new StringReader("\"\\uabcd\\uCDEF\""));\r
110         string = JsString.parseString(reader);\r
111         assertEquals("\uabcd\ucdef", string.toRawString());\r
112 \r
113         try{\r
114             reader = new JsonReader(new StringReader("abc\""));\r
115             string = JsString.parseString(reader);\r
116             fail();\r
117         }catch(JsParseException e){\r
118             // NOTHING\r
119         }\r
120 \r
121         try{\r
122             reader = new JsonReader(new StringReader("\"abc"));\r
123             string = JsString.parseString(reader);\r
124             fail();\r
125         }catch(JsParseException e){\r
126             // NOTHING\r
127         }\r
128 \r
129         return;\r
130     }\r
131 \r
132     /**\r
133      * Test of writeText method, of class JsString.\r
134      */\r
135     @Test\r
136     public void testWriteText() throws Exception{\r
137         System.out.println("writeText");\r
138 \r
139         Appendable appout;\r
140         JsString string;\r
141 \r
142         appout = new StringBuilder();\r
143         string = new JsString();\r
144         JsString.writeText(appout, string);\r
145         assertEquals("\"\"", appout.toString());\r
146 \r
147         appout = new StringBuilder();\r
148         string = new JsString("abc");\r
149         JsString.writeText(appout, string);\r
150         assertEquals("\"abc\"", appout.toString());\r
151 \r
152         appout = new StringBuilder();\r
153         string = new JsString("\"");\r
154         JsString.writeText(appout, string);\r
155         assertEquals("\"\\\"\"", appout.toString());\r
156 \r
157         appout = new StringBuilder();\r
158         string = new JsString("\\");\r
159         JsString.writeText(appout, string);\r
160         assertEquals("\"\\\\\"", appout.toString());\r
161 \r
162         appout = new StringBuilder();\r
163         string = new JsString("/");\r
164         JsString.writeText(appout, string);\r
165         assertEquals("\"\\/\"", appout.toString());\r
166 \r
167         appout = new StringBuilder();\r
168         string = new JsString("\b");\r
169         JsString.writeText(appout, string);\r
170         assertEquals("\"\\b\"", appout.toString());\r
171 \r
172         appout = new StringBuilder();\r
173         string = new JsString("\f");\r
174         JsString.writeText(appout, string);\r
175         assertEquals("\"\\f\"", appout.toString());\r
176 \r
177         appout = new StringBuilder();\r
178         string = new JsString("\n");\r
179         JsString.writeText(appout, string);\r
180         assertEquals("\"\\n\"", appout.toString());\r
181 \r
182         appout = new StringBuilder();\r
183         string = new JsString("\r");\r
184         JsString.writeText(appout, string);\r
185         assertEquals("\"\\r\"", appout.toString());\r
186 \r
187         appout = new StringBuilder();\r
188         string = new JsString("\t");\r
189         JsString.writeText(appout, string);\r
190         assertEquals("\"\\t\"", appout.toString());\r
191 \r
192         appout = new StringBuilder();\r
193         string = new JsString("\u0001");\r
194         JsString.writeText(appout, string);\r
195         assertEquals("\"\\u0001\"", appout.toString());\r
196 \r
197         appout = new StringBuilder();\r
198         string = new JsString("あ");\r
199         JsString.writeText(appout, string);\r
200         assertEquals("\"あ\"", appout.toString());\r
201 \r
202         return;\r
203     }\r
204 \r
205     /**\r
206      * Test of traverse method, of class JsString.\r
207      */\r
208     @Test\r
209     public void testTraverse(){\r
210         System.out.println("traverse");\r
211 \r
212         JsString string = new JsString("A");\r
213 \r
214         try{\r
215             string.traverse(new ValueVisitor(){\r
216                 int ct = 0;\r
217 \r
218                 public void visitValue(JsValue value)\r
219                         throws JsVisitException{\r
220                     assertEquals(new JsString("A"), value);\r
221                     assertTrue(this.ct++ <= 0);\r
222                 }\r
223 \r
224                 public void visitPairName(String name)\r
225                         throws JsVisitException{\r
226                     throw new JsVisitException();\r
227                 }\r
228 \r
229                 public void visitCollectionClose(JsValue composite)\r
230                         throws JsVisitException{\r
231                     throw new JsVisitException();\r
232                 }\r
233             });\r
234         }catch(JsVisitException e){\r
235             fail();\r
236         }\r
237 \r
238         return;\r
239     }\r
240 \r
241     /**\r
242      * Test of hasChanged method, of class JsString.\r
243      */\r
244     @Test\r
245     public void testHasChanged(){\r
246         System.out.println("hasChanged");\r
247 \r
248         JsString string = new JsString("A");\r
249 \r
250         assertFalse(string.hasChanged());\r
251         string.setUnchanged();\r
252         assertFalse(string.hasChanged());\r
253 \r
254         return;\r
255     }\r
256 \r
257     /**\r
258      * Test of setUnchanged method, of class JsString.\r
259      */\r
260     @Test\r
261     public void testSetUnchanged(){\r
262         System.out.println("setUnchanged");\r
263 \r
264         JsString string = new JsString("A");\r
265 \r
266         string.setUnchanged();\r
267         assertFalse(string.hasChanged());\r
268 \r
269         return;\r
270     }\r
271 \r
272     /**\r
273      * Test of charAt method, of class JsString.\r
274      */\r
275     @Test\r
276     public void testCharAt(){\r
277         System.out.println("charAt");\r
278 \r
279         JsString string;\r
280 \r
281         string = new JsString("abcde");\r
282         assertEquals('b', string.charAt(1));\r
283 \r
284         try{\r
285             string.charAt(999);\r
286             fail();\r
287         }catch(IndexOutOfBoundsException e){\r
288             // NOTHING\r
289         }\r
290 \r
291         return;\r
292     }\r
293 \r
294     /**\r
295      * Test of length method, of class JsString.\r
296      */\r
297     @Test\r
298     public void testLength(){\r
299         System.out.println("length");\r
300 \r
301         assertEquals(0, new JsString().length());\r
302         assertEquals(0, new JsString("").length());\r
303         assertEquals(1, new JsString("A").length());\r
304         assertEquals(2, new JsString("AB").length());\r
305         assertEquals(3, new JsString("A\"B").length());\r
306 \r
307         return;\r
308     }\r
309 \r
310     /**\r
311      * Test of subSequence method, of class JsString.\r
312      */\r
313     @Test\r
314     public void testSubSequence(){\r
315         System.out.println("subSequence");\r
316 \r
317         JsString string;\r
318 \r
319         string = new JsString("abcde");\r
320         assertEquals("bcd", string.subSequence(1, 4).toString());\r
321         assertEquals("", string.subSequence(1, 1).toString());\r
322 \r
323         try{\r
324             string.subSequence(1,999);\r
325             fail();\r
326         }catch(IndexOutOfBoundsException e){\r
327             // NOTHING\r
328         }\r
329 \r
330         return;\r
331     }\r
332 \r
333     /**\r
334      * Test of hashCode method, of class JsString.\r
335      */\r
336     @Test\r
337     public void testHashCode(){\r
338         System.out.println("hashCode");\r
339         assertEquals(new JsString("A").hashCode(), new JsString("A").hashCode());\r
340         return;\r
341     }\r
342 \r
343     /**\r
344      * Test of equals method, of class JsString.\r
345      */\r
346     @Test\r
347     public void testEquals(){\r
348         System.out.println("equals");\r
349 \r
350         assertTrue(new JsString("A").equals(new JsString("A")));\r
351         assertFalse(new JsString("A").equals(new JsString("a")));\r
352         assertFalse(new JsString("A").equals(null));\r
353 \r
354         return;\r
355     }\r
356 \r
357     /**\r
358      * Test of compareTo method, of class JsString.\r
359      */\r
360     @Test\r
361     public void testCompareTo(){\r
362         System.out.println("compareTo");\r
363 \r
364         assertTrue(0 == new JsString("A").compareTo(new JsString("A")));\r
365         assertTrue(0 > new JsString("A").compareTo(new JsString("a")));\r
366         assertTrue(0 < new JsString("a").compareTo(new JsString("A")));\r
367         assertTrue(0 < new JsString("A").compareTo(null));\r
368 \r
369         SortedSet<JsString> set = new TreeSet<JsString>();\r
370 \r
371         set.clear();\r
372         set.add(new JsString("A"));\r
373         set.add(new JsString("a"));\r
374         assertEquals(new JsString("A"), set.first());\r
375         assertEquals(new JsString("a"), set.last());\r
376 \r
377         set.clear();\r
378         set.add(new JsString("a"));\r
379         set.add(new JsString("A"));\r
380         assertEquals(new JsString("A"), set.first());\r
381         assertEquals(new JsString("a"), set.last());\r
382 \r
383         return;\r
384     }\r
385 \r
386     /**\r
387      * Test of toString method, of class JsString.\r
388      */\r
389     @Test\r
390     public void testToString(){\r
391         System.out.println("toString");\r
392 \r
393         assertEquals("\"\"", new JsString("").toString());\r
394         assertEquals("\"abc\"", new JsString("abc").toString());\r
395         assertEquals("\"\\\"\"", new JsString("\"").toString());\r
396         assertEquals("\"\\\\\"", new JsString("\\").toString());\r
397         assertEquals("\"\\/\"", new JsString("/").toString());\r
398         assertEquals("\"\\b\"", new JsString("\b").toString());\r
399         assertEquals("\"\\f\"", new JsString("\f").toString());\r
400         assertEquals("\"\\n\"", new JsString("\n").toString());\r
401         assertEquals("\"\\r\"", new JsString("\r").toString());\r
402         assertEquals("\"\\t\"", new JsString("\t").toString());\r
403         assertEquals("\"\\u0001\"", new JsString("\u0001").toString());\r
404         assertEquals("\"あ\"", new JsString("あ").toString());\r
405 \r
406         return;\r
407     }\r
408 \r
409     /**\r
410      * Test of toRawString method, of class JsString.\r
411      */\r
412     @Test\r
413     public void testToRawString(){\r
414         System.out.println("toRawString");\r
415 \r
416         assertEquals("", new JsString("").toRawString());\r
417         assertEquals("abc", new JsString("abc").toRawString());\r
418         assertEquals("\"", new JsString("\"").toRawString());\r
419         assertEquals("\\", new JsString("\\").toRawString());\r
420         assertEquals("/", new JsString("/").toRawString());\r
421         assertEquals("\b", new JsString("\b").toRawString());\r
422         assertEquals("\f", new JsString("\f").toRawString());\r
423         assertEquals("\n", new JsString("\n").toRawString());\r
424         assertEquals("\r", new JsString("\r").toRawString());\r
425         assertEquals("\t", new JsString("\t").toRawString());\r
426         assertEquals("\u0001", new JsString("\u0001").toRawString());\r
427         assertEquals("あ", new JsString("あ").toRawString());\r
428 \r
429         return;\r
430     }\r
431 \r
432 }\r