1   /*
2    * Copyright 2002-2009 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package net.sf.json.util;
18  
19  import junit.framework.TestCase;
20  import net.sf.json.JSONException;
21  
22  /**
23   * @author Andres Almiray <aalmiray@users.sourceforge.net>
24   */
25  public class TestJSONTokener extends TestCase {
26     public static void main( String[] args ) {
27        junit.textui.TestRunner.run( TestJSONTokener.class );
28     }
29  
30     public TestJSONTokener( String name ) {
31        super( name );
32     }
33  
34     public void testDehexchar() {
35        assertEquals( 0, JSONTokener.dehexchar( '0' ) );
36        assertEquals( 1, JSONTokener.dehexchar( '1' ) );
37        assertEquals( 2, JSONTokener.dehexchar( '2' ) );
38        assertEquals( 3, JSONTokener.dehexchar( '3' ) );
39        assertEquals( 4, JSONTokener.dehexchar( '4' ) );
40        assertEquals( 5, JSONTokener.dehexchar( '5' ) );
41        assertEquals( 6, JSONTokener.dehexchar( '6' ) );
42        assertEquals( 7, JSONTokener.dehexchar( '7' ) );
43        assertEquals( 8, JSONTokener.dehexchar( '8' ) );
44        assertEquals( 9, JSONTokener.dehexchar( '9' ) );
45  
46        assertEquals( 10, JSONTokener.dehexchar( 'a' ) );
47        assertEquals( 10, JSONTokener.dehexchar( 'A' ) );
48        assertEquals( 11, JSONTokener.dehexchar( 'b' ) );
49        assertEquals( 11, JSONTokener.dehexchar( 'B' ) );
50        assertEquals( 12, JSONTokener.dehexchar( 'c' ) );
51        assertEquals( 12, JSONTokener.dehexchar( 'C' ) );
52        assertEquals( 13, JSONTokener.dehexchar( 'd' ) );
53        assertEquals( 13, JSONTokener.dehexchar( 'D' ) );
54        assertEquals( 14, JSONTokener.dehexchar( 'e' ) );
55        assertEquals( 14, JSONTokener.dehexchar( 'E' ) );
56        assertEquals( 15, JSONTokener.dehexchar( 'f' ) );
57        assertEquals( 15, JSONTokener.dehexchar( 'F' ) );
58     }
59  
60     public void testLength() {
61        assertEquals( 0, new JSONTokener( null ).length() );
62        assertEquals( 0, new JSONTokener( "" ).length() );
63        assertEquals( 2, new JSONTokener( "[]" ).length() );
64     }
65  
66     public void testNextChar() {
67        JSONTokener tok = new JSONTokener( "abc" );
68        assertEquals( 'a', tok.next( 'a' ) );
69        try{
70           assertEquals( 'e', tok.next( 'e' ) );
71           fail( "Expectd a JSONException" );
72        }catch( JSONException expected ){
73           // ok
74        }
75     }
76  
77     public void testReset() {
78        JSONTokener tok = new JSONTokener( "abc" );
79        tok.next();
80        tok.next();
81        assertEquals( 'c', tok.next() );
82        tok.reset();
83        assertEquals( 'a', tok.next() );
84     }
85  }