2 * License : The MIT License
3 * Copyright(c) 2009 olyutorskii
6 package jp.sourceforge.jovsonz;
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;
16 import static org.junit.Assert.*;
21 public class JsStringTest {
23 public JsStringTest() {
27 public static void setUpClass() throws Exception{
31 public static void tearDownClass() throws Exception{
39 public void tearDown() {
43 * Test of Constructor, of class JsString.
46 public void testConstructor() throws Exception{
47 System.out.println("constructor");
51 string = new JsString();
52 assertEquals("", string.toRawString());
54 string = new JsString("");
55 assertEquals("", string.toRawString());
57 string = new JsString("x");
58 assertEquals("x", string.toRawString());
60 string = new JsString("\u001f");
61 assertEquals("\u001f", string.toRawString());
62 assertEquals("\"\\u001f\"", string.toString());
65 string = new JsString(null);
67 }catch(NullPointerException e){
75 * Test of parseHexChar method, of class JsString.
78 public void testParseHexChar() throws Exception{
79 System.out.println("parseHexChar");
84 source = new JsonSource("0000");
85 ch = JsString.parseHexChar(source);
86 assertEquals('\u0000', ch);
88 source = new JsonSource("ffff");
89 ch = JsString.parseHexChar(source);
90 assertEquals('\uffff', ch);
92 source = new JsonSource("FFFF");
93 ch = JsString.parseHexChar(source);
94 assertEquals('\uffff', ch);
96 source = new JsonSource("dead");
97 ch = JsString.parseHexChar(source);
98 assertEquals('\udead', ch);
100 source = new JsonSource("abcde");
101 ch = JsString.parseHexChar(source);
102 assertEquals('\uabcd', ch);
105 source = new JsonSource("000,");
106 ch = JsString.parseHexChar(source);
108 }catch(JsParseException e){
116 * Test of parseString method, of class JsString.
119 public void testParseString() throws Exception{
120 System.out.println("parseString");
125 source = new JsonSource("\"abc\"");
126 string = JsString.parseString(source);
127 assertEquals("abc", string.toRawString());
129 source = new JsonSource("\"あいう\"");
130 string = JsString.parseString(source);
131 assertEquals("あいう", string.toRawString());
133 source = new JsonSource("\"\\\"\\\\\\/\"");
134 string = JsString.parseString(source);
135 assertEquals("\"\\/", string.toRawString());
137 source = new JsonSource("\"\\b\\f\\n\\r\\t\"");
138 string = JsString.parseString(source);
139 assertEquals("\b\f\n\r\t", string.toRawString());
141 source = new JsonSource("\"\\uabcd\\uCDEF\"");
142 string = JsString.parseString(source);
143 assertEquals("\uabcd\ucdef", string.toRawString());
145 source = new JsonSource("abc\"");
146 string = JsString.parseString(source);
150 source = new JsonSource("\"abc");
151 string = JsString.parseString(source);
153 }catch(JsParseException e){
158 source = new JsonSource("\"\\#\"");
159 string = JsString.parseString(source);
161 }catch(JsParseException e){
166 source = new JsonSource("\"\\u#999\"");
167 string = JsString.parseString(source);
169 }catch(JsParseException e){
174 source = new JsonSource("\"\\u9#99\"");
175 string = JsString.parseString(source);
177 }catch(JsParseException e){
182 source = new JsonSource("\"\\u99#9\"");
183 string = JsString.parseString(source);
185 }catch(JsParseException e){
190 source = new JsonSource("\"\\u999#\"");
191 string = JsString.parseString(source);
193 }catch(JsParseException e){
198 source = new JsonSource("\"abc\nxyz\"");
199 string = JsString.parseString(source);
201 }catch(JsParseException e){
209 * Test of dumpString method, of class JsString.
212 public void testDumpString() throws Exception{
213 System.out.println("writeText");
218 appout = new StringBuilder();
219 string = new JsString();
220 JsString.dumpString(appout, string);
221 assertEquals("\"\"", appout.toString());
223 appout = new StringBuilder();
224 string = new JsString("abc");
225 JsString.dumpString(appout, string);
226 assertEquals("\"abc\"", appout.toString());
228 appout = new StringBuilder();
229 string = new JsString("\"");
230 JsString.dumpString(appout, string);
231 assertEquals("\"\\\"\"", appout.toString());
233 appout = new StringBuilder();
234 string = new JsString("\\");
235 JsString.dumpString(appout, string);
236 assertEquals("\"\\\\\"", appout.toString());
238 appout = new StringBuilder();
239 string = new JsString("/");
240 JsString.dumpString(appout, string);
241 assertEquals("\"\\/\"", appout.toString());
243 appout = new StringBuilder();
244 string = new JsString("\b");
245 JsString.dumpString(appout, string);
246 assertEquals("\"\\b\"", appout.toString());
248 appout = new StringBuilder();
249 string = new JsString("\f");
250 JsString.dumpString(appout, string);
251 assertEquals("\"\\f\"", appout.toString());
253 appout = new StringBuilder();
254 string = new JsString("\n");
255 JsString.dumpString(appout, string);
256 assertEquals("\"\\n\"", appout.toString());
258 appout = new StringBuilder();
259 string = new JsString("\r");
260 JsString.dumpString(appout, string);
261 assertEquals("\"\\r\"", appout.toString());
263 appout = new StringBuilder();
264 string = new JsString("\t");
265 JsString.dumpString(appout, string);
266 assertEquals("\"\\t\"", appout.toString());
268 appout = new StringBuilder();
269 string = new JsString("\u0001");
270 JsString.dumpString(appout, string);
271 assertEquals("\"\\u0001\"", appout.toString());
273 appout = new StringBuilder();
274 string = new JsString("あ");
275 JsString.dumpString(appout, string);
276 assertEquals("\"あ\"", appout.toString());
282 * Test of escapeText method, of class JsString.
285 public void testEscapeText(){
286 System.out.println("escapeText");
288 assertEquals("\"A\"", JsString.escapeText("A").toString());
294 * Test of traverse method, of class JsString.
297 public void testTraverse(){
298 System.out.println("traverse");
300 JsString string = new JsString("A");
303 string.traverse(new ValueVisitor(){
306 public void visitValue(JsValue value)
307 throws JsVisitException{
308 assertEquals(new JsString("A"), value);
309 assertTrue(this.ct++ <= 0);
312 public void visitPairName(String name)
313 throws JsVisitException{
314 throw new JsVisitException();
317 public void visitCompositionClose(JsComposition<?> composite)
318 throws JsVisitException{
319 throw new JsVisitException();
322 }catch(JsVisitException e){
330 * Test of charAt method, of class JsString.
333 public void testCharAt(){
334 System.out.println("charAt");
338 string = new JsString("abcde");
339 assertEquals('b', string.charAt(1));
344 }catch(IndexOutOfBoundsException e){
352 * Test of length method, of class JsString.
355 public void testLength(){
356 System.out.println("length");
358 assertEquals(0, new JsString().length());
359 assertEquals(0, new JsString("").length());
360 assertEquals(1, new JsString("A").length());
361 assertEquals(2, new JsString("AB").length());
362 assertEquals(3, new JsString("A\"B").length());
368 * Test of subSequence method, of class JsString.
371 public void testSubSequence(){
372 System.out.println("subSequence");
376 string = new JsString("abcde");
377 assertEquals("bcd", string.subSequence(1, 4).toString());
378 assertEquals("", string.subSequence(1, 1).toString());
381 string.subSequence(1,999);
383 }catch(IndexOutOfBoundsException e){
391 * Test of hashCode method, of class JsString.
394 public void testHashCode(){
395 System.out.println("hashCode");
396 assertEquals(new JsString("A").hashCode(), new JsString("A").hashCode());
401 * Test of equals method, of class JsString.
404 public void testEquals(){
405 System.out.println("equals");
407 assertTrue(new JsString("A").equals(new JsString("A")));
408 assertFalse(new JsString("A").equals(new JsString("a")));
409 JsString nullVal = null;
410 assertFalse(new JsString("A").equals(nullVal));
412 assertFalse(new JsString("A").equals(""));
418 * Test of compareTo method, of class JsString.
421 public void testCompareTo(){
422 System.out.println("compareTo");
424 assertTrue(0 == new JsString("A").compareTo(new JsString("A")));
425 assertTrue(0 > new JsString("A").compareTo(new JsString("a")));
426 assertTrue(0 < new JsString("a").compareTo(new JsString("A")));
427 assertTrue(0 < new JsString("A").compareTo(null));
429 SortedSet<JsString> set = new TreeSet<JsString>();
432 set.add(new JsString("A"));
433 set.add(new JsString("a"));
434 assertEquals(new JsString("A"), set.first());
435 assertEquals(new JsString("a"), set.last());
438 set.add(new JsString("a"));
439 set.add(new JsString("A"));
440 assertEquals(new JsString("A"), set.first());
441 assertEquals(new JsString("a"), set.last());
443 JsString string = new JsString("A");
444 assertEquals(0, string.compareTo(string));
450 * Test of toString method, of class JsString.
453 public void testToString(){
454 System.out.println("toString");
456 assertEquals("\"\"", new JsString("").toString());
457 assertEquals("\"abc\"", new JsString("abc").toString());
458 assertEquals("\"\\\"\"", new JsString("\"").toString());
459 assertEquals("\"\\\\\"", new JsString("\\").toString());
460 assertEquals("\"\\/\"", new JsString("/").toString());
461 assertEquals("\"\\b\"", new JsString("\b").toString());
462 assertEquals("\"\\f\"", new JsString("\f").toString());
463 assertEquals("\"\\n\"", new JsString("\n").toString());
464 assertEquals("\"\\r\"", new JsString("\r").toString());
465 assertEquals("\"\\t\"", new JsString("\t").toString());
466 assertEquals("\"\\u0001\"", new JsString("\u0001").toString());
467 assertEquals("\"あ\"", new JsString("あ").toString());
473 * Test of toRawString method, of class JsString.
476 public void testToRawString(){
477 System.out.println("toRawString");
479 assertEquals("", new JsString("").toRawString());
480 assertEquals("abc", new JsString("abc").toRawString());
481 assertEquals("\"", new JsString("\"").toRawString());
482 assertEquals("\\", new JsString("\\").toRawString());
483 assertEquals("/", new JsString("/").toRawString());
484 assertEquals("\b", new JsString("\b").toRawString());
485 assertEquals("\f", new JsString("\f").toRawString());
486 assertEquals("\n", new JsString("\n").toRawString());
487 assertEquals("\r", new JsString("\r").toRawString());
488 assertEquals("\t", new JsString("\t").toRawString());
489 assertEquals("\u0001", new JsString("\u0001").toRawString());
490 assertEquals("あ", new JsString("あ").toRawString());
496 * Test of getJsTypes method, of class JsString.
499 public void testGetJsTypes() {
500 System.out.println("getJsTypes");
502 JsString instance = new JsString();
504 assertEquals(JsTypes.STRING, instance.getJsTypes());