2 * To change this template, choose Tools | Templates
\r
3 * and open the template in the editor.
\r
6 package jp.sourceforge.jindolf.json;
\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
21 public class JsStringTest {
\r
23 public JsStringTest() {
\r
27 public static void setUpClass() throws Exception{
\r
31 public static void tearDownClass() throws Exception{
\r
35 public void setUp() {
\r
39 public void tearDown() {
\r
43 * Test of parseHexChar method, of class JsString.
\r
46 public void testParseHexChar() throws Exception{
\r
47 System.out.println("parseHexChar");
\r
52 reader = new JsonReader(new StringReader("0000"));
\r
53 ch = JsString.parseHexChar(reader);
\r
54 assertEquals('\u0000', ch);
\r
56 reader = new JsonReader(new StringReader("ffff"));
\r
57 ch = JsString.parseHexChar(reader);
\r
58 assertEquals('\uffff', ch);
\r
60 reader = new JsonReader(new StringReader("FFFF"));
\r
61 ch = JsString.parseHexChar(reader);
\r
62 assertEquals('\uffff', ch);
\r
64 reader = new JsonReader(new StringReader("dead"));
\r
65 ch = JsString.parseHexChar(reader);
\r
66 assertEquals('\udead', ch);
\r
68 reader = new JsonReader(new StringReader("abcde"));
\r
69 ch = JsString.parseHexChar(reader);
\r
70 assertEquals('\uabcd', ch);
\r
73 reader = new JsonReader(new StringReader("000,"));
\r
74 ch = JsString.parseHexChar(reader);
\r
76 }catch(JsParseException e){
\r
84 * Test of parseString method, of class JsString.
\r
87 public void testParseString() throws Exception{
\r
88 System.out.println("parseString");
\r
93 reader = new JsonReader(new StringReader("\"abc\""));
\r
94 string = JsString.parseString(reader);
\r
95 assertEquals("abc", string.toRawString());
\r
97 reader = new JsonReader(new StringReader("\"あいう\""));
\r
98 string = JsString.parseString(reader);
\r
99 assertEquals("あいう", string.toRawString());
\r
101 reader = new JsonReader(new StringReader("\"\\\"\\\\\\/\""));
\r
102 string = JsString.parseString(reader);
\r
103 assertEquals("\"\\/", string.toRawString());
\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
109 reader = new JsonReader(new StringReader("\"\\uabcd\\uCDEF\""));
\r
110 string = JsString.parseString(reader);
\r
111 assertEquals("\uabcd\ucdef", string.toRawString());
\r
114 reader = new JsonReader(new StringReader("abc\""));
\r
115 string = JsString.parseString(reader);
\r
117 }catch(JsParseException e){
\r
122 reader = new JsonReader(new StringReader("\"abc"));
\r
123 string = JsString.parseString(reader);
\r
125 }catch(JsParseException e){
\r
133 * Test of writeText method, of class JsString.
\r
136 public void testWriteText() throws Exception{
\r
137 System.out.println("writeText");
\r
142 appout = new StringBuilder();
\r
143 string = new JsString();
\r
144 JsString.writeText(appout, string);
\r
145 assertEquals("\"\"", appout.toString());
\r
147 appout = new StringBuilder();
\r
148 string = new JsString("abc");
\r
149 JsString.writeText(appout, string);
\r
150 assertEquals("\"abc\"", appout.toString());
\r
152 appout = new StringBuilder();
\r
153 string = new JsString("\"");
\r
154 JsString.writeText(appout, string);
\r
155 assertEquals("\"\\\"\"", appout.toString());
\r
157 appout = new StringBuilder();
\r
158 string = new JsString("\\");
\r
159 JsString.writeText(appout, string);
\r
160 assertEquals("\"\\\\\"", appout.toString());
\r
162 appout = new StringBuilder();
\r
163 string = new JsString("/");
\r
164 JsString.writeText(appout, string);
\r
165 assertEquals("\"\\/\"", appout.toString());
\r
167 appout = new StringBuilder();
\r
168 string = new JsString("\b");
\r
169 JsString.writeText(appout, string);
\r
170 assertEquals("\"\\b\"", appout.toString());
\r
172 appout = new StringBuilder();
\r
173 string = new JsString("\f");
\r
174 JsString.writeText(appout, string);
\r
175 assertEquals("\"\\f\"", appout.toString());
\r
177 appout = new StringBuilder();
\r
178 string = new JsString("\n");
\r
179 JsString.writeText(appout, string);
\r
180 assertEquals("\"\\n\"", appout.toString());
\r
182 appout = new StringBuilder();
\r
183 string = new JsString("\r");
\r
184 JsString.writeText(appout, string);
\r
185 assertEquals("\"\\r\"", appout.toString());
\r
187 appout = new StringBuilder();
\r
188 string = new JsString("\t");
\r
189 JsString.writeText(appout, string);
\r
190 assertEquals("\"\\t\"", appout.toString());
\r
192 appout = new StringBuilder();
\r
193 string = new JsString("\u0001");
\r
194 JsString.writeText(appout, string);
\r
195 assertEquals("\"\\u0001\"", appout.toString());
\r
197 appout = new StringBuilder();
\r
198 string = new JsString("あ");
\r
199 JsString.writeText(appout, string);
\r
200 assertEquals("\"あ\"", appout.toString());
\r
206 * Test of traverse method, of class JsString.
\r
209 public void testTraverse(){
\r
210 System.out.println("traverse");
\r
212 JsString string = new JsString("A");
\r
215 string.traverse(new ValueVisitor(){
\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
224 public void visitPairName(String name)
\r
225 throws JsVisitException{
\r
226 throw new JsVisitException();
\r
229 public void visitCollectionClose(JsValue composite)
\r
230 throws JsVisitException{
\r
231 throw new JsVisitException();
\r
234 }catch(JsVisitException e){
\r
242 * Test of hasChanged method, of class JsString.
\r
245 public void testHasChanged(){
\r
246 System.out.println("hasChanged");
\r
248 JsString string = new JsString("A");
\r
250 assertFalse(string.hasChanged());
\r
251 string.setUnchanged();
\r
252 assertFalse(string.hasChanged());
\r
258 * Test of setUnchanged method, of class JsString.
\r
261 public void testSetUnchanged(){
\r
262 System.out.println("setUnchanged");
\r
264 JsString string = new JsString("A");
\r
266 string.setUnchanged();
\r
267 assertFalse(string.hasChanged());
\r
273 * Test of charAt method, of class JsString.
\r
276 public void testCharAt(){
\r
277 System.out.println("charAt");
\r
281 string = new JsString("abcde");
\r
282 assertEquals('b', string.charAt(1));
\r
285 string.charAt(999);
\r
287 }catch(IndexOutOfBoundsException e){
\r
295 * Test of length method, of class JsString.
\r
298 public void testLength(){
\r
299 System.out.println("length");
\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
311 * Test of subSequence method, of class JsString.
\r
314 public void testSubSequence(){
\r
315 System.out.println("subSequence");
\r
319 string = new JsString("abcde");
\r
320 assertEquals("bcd", string.subSequence(1, 4).toString());
\r
321 assertEquals("", string.subSequence(1, 1).toString());
\r
324 string.subSequence(1,999);
\r
326 }catch(IndexOutOfBoundsException e){
\r
334 * Test of hashCode method, of class JsString.
\r
337 public void testHashCode(){
\r
338 System.out.println("hashCode");
\r
339 assertEquals(new JsString("A").hashCode(), new JsString("A").hashCode());
\r
344 * Test of equals method, of class JsString.
\r
347 public void testEquals(){
\r
348 System.out.println("equals");
\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
358 * Test of compareTo method, of class JsString.
\r
361 public void testCompareTo(){
\r
362 System.out.println("compareTo");
\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
369 SortedSet<JsString> set = new TreeSet<JsString>();
\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
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
387 * Test of toString method, of class JsString.
\r
390 public void testToString(){
\r
391 System.out.println("toString");
\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
410 * Test of toRawString method, of class JsString.
\r
413 public void testToRawString(){
\r
414 System.out.println("toRawString");
\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