151a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson/* 253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * Copyright (C) 2010 The Android Open Source Project 353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * 453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * you may not use this file except in compliance with the License. 653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * You may obtain a copy of the License at 753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * 851a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * 1053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * Unless required by applicable law or agreed to in writing, software 1153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 1253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * See the License for the specific language governing permissions and 1453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * limitations under the License. 1553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson */ 1653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 1753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilsonpackage org.json; 1853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 1953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilsonimport junit.framework.TestCase; 2053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 2153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson/** 2251a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson * These tests checks self use calls. For the most part we doesn't attempt to 2351a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson * cover self-use, except in those cases where our clean room implementation 2451a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson * does it. 2553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * 2653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * <p>This black box test was written without inspecting the non-free org.json 2753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson * sourcecode. 2853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson */ 2953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilsonpublic class SelfUseTest extends TestCase { 3053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 3153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int objectPutCalls = 0; 3253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int objectGetCalls = 0; 3353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int objectOptCalls = 0; 3453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int objectOptTypeCalls = 0; 3553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int arrayPutCalls = 0; 3653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int arrayGetCalls = 0; 3753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int arrayOptCalls = 0; 3853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private int arrayOptTypeCalls = 0; 3951a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson private int tokenerNextCalls = 0; 4051a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson private int tokenerNextValueCalls = 0; 4153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 4253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private final JSONObject object = new JSONObject() { 4353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public JSONObject put(String name, Object value) throws JSONException { 4453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectPutCalls++; 4553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.put(name, value); 4653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 4753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public Object get(String name) throws JSONException { 4853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectGetCalls++; 4953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.get(name); 5053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 5153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public Object opt(String name) { 5253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectOptCalls++; 5353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.opt(name); 5453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 5553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public boolean optBoolean(String key, boolean defaultValue) { 5653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectOptTypeCalls++; 5753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optBoolean(key, defaultValue); 5853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 5953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public double optDouble(String key, double defaultValue) { 6053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectOptTypeCalls++; 6153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optDouble(key, defaultValue); 6253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 6353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public int optInt(String key, int defaultValue) { 6453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectOptTypeCalls++; 6553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optInt(key, defaultValue); 6653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 6753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public long optLong(String key, long defaultValue) { 6853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectOptTypeCalls++; 6953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optLong(key, defaultValue); 7053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 7153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public String optString(String key, String defaultValue) { 7253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson objectOptTypeCalls++; 7353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optString(key, defaultValue); 7453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 7553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson }; 7653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 7753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson private final JSONArray array = new JSONArray() { 7853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public JSONArray put(int index, Object value) throws JSONException { 7953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayPutCalls++; 8053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.put(index, value); 8153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 8253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public Object get(int index) throws JSONException { 8353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayGetCalls++; 8453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.get(index); 8553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 8653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public Object opt(int index) { 8753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayOptCalls++; 8853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.opt(index); 8953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 9053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public boolean optBoolean(int index, boolean fallback) { 9153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayOptTypeCalls++; 9253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optBoolean(index, fallback); 9353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 9453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public double optDouble(int index, double fallback) { 9553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayOptTypeCalls++; 9653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optDouble(index, fallback); 9753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 9853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public long optLong(int index, long fallback) { 9953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayOptTypeCalls++; 10053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optLong(index, fallback); 10153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 10253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public String optString(int index, String fallback) { 10353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayOptTypeCalls++; 10453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optString(index, fallback); 10553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 10653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson @Override public int optInt(int index, int fallback) { 10753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson arrayOptTypeCalls++; 10853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson return super.optInt(index, fallback); 10953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 11053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson }; 11153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 11251a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson private final JSONTokener tokener = new JSONTokener("{\"foo\": [true]}") { 11351a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson @Override public char next() { 11451a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson tokenerNextCalls++; 11551a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson return super.next(); 11651a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson } 11751a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson @Override public Object nextValue() throws JSONException { 11851a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson tokenerNextValueCalls++; 11951a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson return super.nextValue(); 12051a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson } 12151a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson }; 12251a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson 12351a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson 12453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testObjectPut() throws JSONException { 12553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.putOpt("foo", "bar"); 12653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, objectPutCalls); 12753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 12853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 12953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testObjectAccumulate() throws JSONException { 13053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.accumulate("foo", "bar"); 13153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, objectPutCalls); 13253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 13353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 13453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testObjectGetBoolean() throws JSONException { 13553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.put("foo", "true"); 13653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.getBoolean("foo"); 13753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, objectGetCalls); 13853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 13953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 14053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testObjectOptType() throws JSONException { 14153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.optBoolean("foo"); 14253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, objectOptCalls); 14353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, objectOptTypeCalls); 14453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.optDouble("foo"); 14553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(2, objectOptCalls); 14653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(2, objectOptTypeCalls); 14753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.optInt("foo"); 14853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, objectOptCalls); 14953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, objectOptTypeCalls); 15053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.optLong("foo"); 15153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(4, objectOptCalls); 15253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(4, objectOptTypeCalls); 15353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.optString("foo"); 15453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(5, objectOptCalls); 15553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(5, objectOptTypeCalls); 15653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 15753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 15853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testToJSONArray() throws JSONException { 15953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.put("foo", 5); 16053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.put("bar", 10); 16153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put("foo"); 16253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put("baz"); 16353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put("bar"); 16453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson object.toJSONArray(array); 16553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, arrayOptCalls); 16653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(0, arrayOptTypeCalls); 16753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, objectOptCalls); 16853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(0, objectOptTypeCalls); 16953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 17053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 17153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testPutAtIndex() throws JSONException { 17253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put(10, false); 17353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, arrayPutCalls); 17453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 17553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 17653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testIsNull() { 17753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.isNull(5); 17853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, arrayOptCalls); 17953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 18053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 18153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testArrayGetType() throws JSONException { 18253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put(true); 18353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.getBoolean(0); 18453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, arrayGetCalls); 18553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 18653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 18753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testArrayOptType() throws JSONException { 18853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.optBoolean(3); 18953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, arrayOptCalls); 19053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(1, arrayOptTypeCalls); 19153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.optDouble(3); 19253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(2, arrayOptCalls); 19353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(2, arrayOptTypeCalls); 19453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.optInt(3); 19553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, arrayOptCalls); 19653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, arrayOptTypeCalls); 19753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.optLong(3); 19853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(4, arrayOptCalls); 19953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(4, arrayOptTypeCalls); 20053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.optString(3); 20153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(5, arrayOptCalls); 20253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(5, arrayOptTypeCalls); 20353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 20453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 20553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson public void testToJSONObject() throws JSONException { 20653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put("foo"); 20753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put("baz"); 20853c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson array.put("bar"); 20953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson JSONArray values = new JSONArray(); 21053c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson values.put(5.5d); 21153c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson values.put(11d); 21253c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson values.put(30); 21353c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson values.toJSONObject(array); 21453c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(3, arrayOptCalls); 21553c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson assertEquals(0, arrayOptTypeCalls); 21653c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson } 21753c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson 21851a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson public void testNextExpecting() throws JSONException { 21951a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson tokener.next('{'); 22051a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson assertEquals(1, tokenerNextCalls); 22151a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson tokener.next('\"'); 22251a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson assertEquals(2, tokenerNextCalls); 22351a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson } 22451a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson 22551a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson public void testNextValue() throws JSONException { 22651a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson tokener.nextValue(); 22751a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson assertEquals(4, tokenerNextValueCalls); 22851a095f0bc7aadfcc7e6b3873b97c050c523d102Jesse Wilson } 22953c13031e4b68645b0ca7c7a335aae41d0b84276Jesse Wilson} 230