2 * Copyright(c) 2009 olyutorskii
5 package jp.sourceforge.jindolf.json;
7 import java.io.StringReader;
8 import java.util.SortedSet;
9 import java.util.TreeSet;
10 import org.junit.After;
11 import org.junit.AfterClass;
12 import org.junit.Before;
13 import org.junit.BeforeClass;
14 import org.junit.Test;
15 import static org.junit.Assert.*;
20 public class JsStringTest {
22 public JsStringTest() {
26 public static void setUpClass() throws Exception{
30 public static void tearDownClass() throws Exception{
38 public void tearDown() {
42 * Test of parseHexChar method, of class JsString.
45 public void testParseHexChar() throws Exception{
46 System.out.println("parseHexChar");
51 reader = new JsonReader(new StringReader("0000"));
52 ch = JsString.parseHexChar(reader);
53 assertEquals('\u0000', ch);
55 reader = new JsonReader(new StringReader("ffff"));
56 ch = JsString.parseHexChar(reader);
57 assertEquals('\uffff', ch);
59 reader = new JsonReader(new StringReader("FFFF"));
60 ch = JsString.parseHexChar(reader);
61 assertEquals('\uffff', ch);
63 reader = new JsonReader(new StringReader("dead"));
64 ch = JsString.parseHexChar(reader);
65 assertEquals('\udead', ch);
67 reader = new JsonReader(new StringReader("abcde"));
68 ch = JsString.parseHexChar(reader);
69 assertEquals('\uabcd', ch);
72 reader = new JsonReader(new StringReader("000,"));
73 ch = JsString.parseHexChar(reader);
75 }catch(JsParseException e){
83 * Test of parseString method, of class JsString.
86 public void testParseString() throws Exception{
87 System.out.println("parseString");
92 reader = new JsonReader(new StringReader("\"abc\""));
93 string = JsString.parseString(reader);
94 assertEquals("abc", string.toRawString());
96 reader = new JsonReader(new StringReader("\"あいう\""));
97 string = JsString.parseString(reader);
98 assertEquals("あいう", string.toRawString());
100 reader = new JsonReader(new StringReader("\"\\\"\\\\\\/\""));
101 string = JsString.parseString(reader);
102 assertEquals("\"\\/", string.toRawString());
104 reader = new JsonReader(new StringReader("\"\\b\\f\\n\\r\\t\""));
105 string = JsString.parseString(reader);
106 assertEquals("\b\f\n\r\t", string.toRawString());
108 reader = new JsonReader(new StringReader("\"\\uabcd\\uCDEF\""));
109 string = JsString.parseString(reader);
110 assertEquals("\uabcd\ucdef", string.toRawString());
113 reader = new JsonReader(new StringReader("abc\""));
114 string = JsString.parseString(reader);
116 }catch(JsParseException e){
121 reader = new JsonReader(new StringReader("\"abc"));
122 string = JsString.parseString(reader);
124 }catch(JsParseException e){
132 * Test of writeText method, of class JsString.
135 public void testWriteText() throws Exception{
136 System.out.println("writeText");
141 appout = new StringBuilder();
142 string = new JsString();
143 JsString.writeText(appout, string);
144 assertEquals("\"\"", appout.toString());
146 appout = new StringBuilder();
147 string = new JsString("abc");
148 JsString.writeText(appout, string);
149 assertEquals("\"abc\"", appout.toString());
151 appout = new StringBuilder();
152 string = new JsString("\"");
153 JsString.writeText(appout, string);
154 assertEquals("\"\\\"\"", appout.toString());
156 appout = new StringBuilder();
157 string = new JsString("\\");
158 JsString.writeText(appout, string);
159 assertEquals("\"\\\\\"", appout.toString());
161 appout = new StringBuilder();
162 string = new JsString("/");
163 JsString.writeText(appout, string);
164 assertEquals("\"\\/\"", appout.toString());
166 appout = new StringBuilder();
167 string = new JsString("\b");
168 JsString.writeText(appout, string);
169 assertEquals("\"\\b\"", appout.toString());
171 appout = new StringBuilder();
172 string = new JsString("\f");
173 JsString.writeText(appout, string);
174 assertEquals("\"\\f\"", appout.toString());
176 appout = new StringBuilder();
177 string = new JsString("\n");
178 JsString.writeText(appout, string);
179 assertEquals("\"\\n\"", appout.toString());
181 appout = new StringBuilder();
182 string = new JsString("\r");
183 JsString.writeText(appout, string);
184 assertEquals("\"\\r\"", appout.toString());
186 appout = new StringBuilder();
187 string = new JsString("\t");
188 JsString.writeText(appout, string);
189 assertEquals("\"\\t\"", appout.toString());
191 appout = new StringBuilder();
192 string = new JsString("\u0001");
193 JsString.writeText(appout, string);
194 assertEquals("\"\\u0001\"", appout.toString());
196 appout = new StringBuilder();
197 string = new JsString("あ");
198 JsString.writeText(appout, string);
199 assertEquals("\"あ\"", appout.toString());
205 * Test of traverse method, of class JsString.
208 public void testTraverse(){
209 System.out.println("traverse");
211 JsString string = new JsString("A");
214 string.traverse(new ValueVisitor(){
217 public void visitValue(JsValue value)
218 throws JsVisitException{
219 assertEquals(new JsString("A"), value);
220 assertTrue(this.ct++ <= 0);
223 public void visitPairName(String name)
224 throws JsVisitException{
225 throw new JsVisitException();
228 public void visitCollectionClose(JsValue composite)
229 throws JsVisitException{
230 throw new JsVisitException();
233 }catch(JsVisitException e){
241 * Test of hasChanged method, of class JsString.
244 public void testHasChanged(){
245 System.out.println("hasChanged");
247 JsString string = new JsString("A");
249 assertFalse(string.hasChanged());
250 string.setUnchanged();
251 assertFalse(string.hasChanged());
257 * Test of setUnchanged method, of class JsString.
260 public void testSetUnchanged(){
261 System.out.println("setUnchanged");
263 JsString string = new JsString("A");
265 string.setUnchanged();
266 assertFalse(string.hasChanged());
272 * Test of charAt method, of class JsString.
275 public void testCharAt(){
276 System.out.println("charAt");
280 string = new JsString("abcde");
281 assertEquals('b', string.charAt(1));
286 }catch(IndexOutOfBoundsException e){
294 * Test of length method, of class JsString.
297 public void testLength(){
298 System.out.println("length");
300 assertEquals(0, new JsString().length());
301 assertEquals(0, new JsString("").length());
302 assertEquals(1, new JsString("A").length());
303 assertEquals(2, new JsString("AB").length());
304 assertEquals(3, new JsString("A\"B").length());
310 * Test of subSequence method, of class JsString.
313 public void testSubSequence(){
314 System.out.println("subSequence");
318 string = new JsString("abcde");
319 assertEquals("bcd", string.subSequence(1, 4).toString());
320 assertEquals("", string.subSequence(1, 1).toString());
323 string.subSequence(1,999);
325 }catch(IndexOutOfBoundsException e){
333 * Test of hashCode method, of class JsString.
336 public void testHashCode(){
337 System.out.println("hashCode");
338 assertEquals(new JsString("A").hashCode(), new JsString("A").hashCode());
343 * Test of equals method, of class JsString.
346 public void testEquals(){
347 System.out.println("equals");
349 assertTrue(new JsString("A").equals(new JsString("A")));
350 assertFalse(new JsString("A").equals(new JsString("a")));
351 assertFalse(new JsString("A").equals(null));
357 * Test of compareTo method, of class JsString.
360 public void testCompareTo(){
361 System.out.println("compareTo");
363 assertTrue(0 == new JsString("A").compareTo(new JsString("A")));
364 assertTrue(0 > new JsString("A").compareTo(new JsString("a")));
365 assertTrue(0 < new JsString("a").compareTo(new JsString("A")));
366 assertTrue(0 < new JsString("A").compareTo(null));
368 SortedSet<JsString> set = new TreeSet<JsString>();
371 set.add(new JsString("A"));
372 set.add(new JsString("a"));
373 assertEquals(new JsString("A"), set.first());
374 assertEquals(new JsString("a"), set.last());
377 set.add(new JsString("a"));
378 set.add(new JsString("A"));
379 assertEquals(new JsString("A"), set.first());
380 assertEquals(new JsString("a"), set.last());
386 * Test of toString method, of class JsString.
389 public void testToString(){
390 System.out.println("toString");
392 assertEquals("\"\"", new JsString("").toString());
393 assertEquals("\"abc\"", new JsString("abc").toString());
394 assertEquals("\"\\\"\"", new JsString("\"").toString());
395 assertEquals("\"\\\\\"", new JsString("\\").toString());
396 assertEquals("\"\\/\"", new JsString("/").toString());
397 assertEquals("\"\\b\"", new JsString("\b").toString());
398 assertEquals("\"\\f\"", new JsString("\f").toString());
399 assertEquals("\"\\n\"", new JsString("\n").toString());
400 assertEquals("\"\\r\"", new JsString("\r").toString());
401 assertEquals("\"\\t\"", new JsString("\t").toString());
402 assertEquals("\"\\u0001\"", new JsString("\u0001").toString());
403 assertEquals("\"あ\"", new JsString("あ").toString());
409 * Test of toRawString method, of class JsString.
412 public void testToRawString(){
413 System.out.println("toRawString");
415 assertEquals("", new JsString("").toRawString());
416 assertEquals("abc", new JsString("abc").toRawString());
417 assertEquals("\"", new JsString("\"").toRawString());
418 assertEquals("\\", new JsString("\\").toRawString());
419 assertEquals("/", new JsString("/").toRawString());
420 assertEquals("\b", new JsString("\b").toRawString());
421 assertEquals("\f", new JsString("\f").toRawString());
422 assertEquals("\n", new JsString("\n").toRawString());
423 assertEquals("\r", new JsString("\r").toRawString());
424 assertEquals("\t", new JsString("\t").toRawString());
425 assertEquals("\u0001", new JsString("\u0001").toRawString());
426 assertEquals("あ", new JsString("あ").toRawString());