14558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson/* 28d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * Copyright (C) 2010 The Android Open Source Project 38d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * 48d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 58d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * you may not use this file except in compliance with the License. 68d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * You may obtain a copy of the License at 78d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * 84558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 98d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * 108d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * Unless required by applicable law or agreed to in writing, software 118d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 128d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * See the License for the specific language governing permissions and 148d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * limitations under the License. 158d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson */ 168d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 178d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilsonpackage org.json; 188d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 198d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilsonimport junit.framework.TestCase; 208d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 218d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson/** 224558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson * These tests checks self use calls. For the most part we doesn't attempt to 234558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson * cover self-use, except in those cases where our clean room implementation 244558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson * does it. 258d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * 268d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * <p>This black box test was written without inspecting the non-free org.json 278d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson * sourcecode. 288d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson */ 298d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilsonpublic class SelfUseTest extends TestCase { 308d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 318d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int objectPutCalls = 0; 328d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int objectGetCalls = 0; 338d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int objectOptCalls = 0; 348d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int objectOptTypeCalls = 0; 358d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int arrayPutCalls = 0; 368d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int arrayGetCalls = 0; 378d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int arrayOptCalls = 0; 388d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private int arrayOptTypeCalls = 0; 394558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson private int tokenerNextCalls = 0; 404558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson private int tokenerNextValueCalls = 0; 418d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 428d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private final JSONObject object = new JSONObject() { 438d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public JSONObject put(String name, Object value) throws JSONException { 448d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectPutCalls++; 458d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.put(name, value); 468d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 478d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public Object get(String name) throws JSONException { 488d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectGetCalls++; 498d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.get(name); 508d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 518d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public Object opt(String name) { 528d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectOptCalls++; 538d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.opt(name); 548d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 558d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public boolean optBoolean(String key, boolean defaultValue) { 568d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectOptTypeCalls++; 578d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optBoolean(key, defaultValue); 588d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 598d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public double optDouble(String key, double defaultValue) { 608d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectOptTypeCalls++; 618d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optDouble(key, defaultValue); 628d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 638d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public int optInt(String key, int defaultValue) { 648d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectOptTypeCalls++; 658d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optInt(key, defaultValue); 668d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 678d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public long optLong(String key, long defaultValue) { 688d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectOptTypeCalls++; 698d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optLong(key, defaultValue); 708d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 718d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public String optString(String key, String defaultValue) { 728d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson objectOptTypeCalls++; 738d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optString(key, defaultValue); 748d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 758d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson }; 768d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 778d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson private final JSONArray array = new JSONArray() { 788d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public JSONArray put(int index, Object value) throws JSONException { 798d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayPutCalls++; 808d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.put(index, value); 818d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 828d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public Object get(int index) throws JSONException { 838d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayGetCalls++; 848d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.get(index); 858d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 868d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public Object opt(int index) { 878d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayOptCalls++; 888d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.opt(index); 898d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 908d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public boolean optBoolean(int index, boolean fallback) { 918d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayOptTypeCalls++; 928d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optBoolean(index, fallback); 938d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 948d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public double optDouble(int index, double fallback) { 958d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayOptTypeCalls++; 968d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optDouble(index, fallback); 978d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 988d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public long optLong(int index, long fallback) { 998d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayOptTypeCalls++; 1008d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optLong(index, fallback); 1018d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1028d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public String optString(int index, String fallback) { 1038d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayOptTypeCalls++; 1048d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optString(index, fallback); 1058d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1068d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson @Override public int optInt(int index, int fallback) { 1078d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson arrayOptTypeCalls++; 1088d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson return super.optInt(index, fallback); 1098d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1108d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson }; 1118d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1124558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson private final JSONTokener tokener = new JSONTokener("{\"foo\": [true]}") { 1134558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson @Override public char next() { 1144558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson tokenerNextCalls++; 1154558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson return super.next(); 1164558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson } 1174558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson @Override public Object nextValue() throws JSONException { 1184558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson tokenerNextValueCalls++; 1194558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson return super.nextValue(); 1204558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson } 1214558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson }; 1224558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson 1234558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson 1248d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testObjectPut() throws JSONException { 1258d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.putOpt("foo", "bar"); 1268d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, objectPutCalls); 1278d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1288d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1298d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testObjectAccumulate() throws JSONException { 1308d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.accumulate("foo", "bar"); 1318d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, objectPutCalls); 1328d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1338d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1348d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testObjectGetBoolean() throws JSONException { 1358d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.put("foo", "true"); 1368d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.getBoolean("foo"); 1378d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, objectGetCalls); 1388d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1398d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1408d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testObjectOptType() throws JSONException { 1418d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.optBoolean("foo"); 1428d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, objectOptCalls); 1438d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, objectOptTypeCalls); 1448d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.optDouble("foo"); 1458d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(2, objectOptCalls); 1468d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(2, objectOptTypeCalls); 1478d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.optInt("foo"); 1488d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, objectOptCalls); 1498d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, objectOptTypeCalls); 1508d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.optLong("foo"); 1518d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(4, objectOptCalls); 1528d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(4, objectOptTypeCalls); 1538d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.optString("foo"); 1548d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(5, objectOptCalls); 1558d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(5, objectOptTypeCalls); 1568d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1578d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1588d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testToJSONArray() throws JSONException { 1598d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.put("foo", 5); 1608d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.put("bar", 10); 1618d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put("foo"); 1628d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put("baz"); 1638d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put("bar"); 1648d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson object.toJSONArray(array); 1658d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, arrayOptCalls); 1668d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(0, arrayOptTypeCalls); 1678d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, objectOptCalls); 1688d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(0, objectOptTypeCalls); 1698d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1708d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1718d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testPutAtIndex() throws JSONException { 1728d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put(10, false); 1738d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, arrayPutCalls); 1748d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1758d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1768d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testIsNull() { 1778d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.isNull(5); 1788d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, arrayOptCalls); 1798d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1808d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1818d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testArrayGetType() throws JSONException { 1828d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put(true); 1838d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.getBoolean(0); 1848d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, arrayGetCalls); 1858d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 1868d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 1878d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testArrayOptType() throws JSONException { 1888d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.optBoolean(3); 1898d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, arrayOptCalls); 1908d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(1, arrayOptTypeCalls); 1918d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.optDouble(3); 1928d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(2, arrayOptCalls); 1938d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(2, arrayOptTypeCalls); 1948d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.optInt(3); 1958d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, arrayOptCalls); 1968d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, arrayOptTypeCalls); 1978d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.optLong(3); 1988d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(4, arrayOptCalls); 1998d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(4, arrayOptTypeCalls); 2008d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.optString(3); 2018d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(5, arrayOptCalls); 2028d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(5, arrayOptTypeCalls); 2038d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 2048d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 2058d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson public void testToJSONObject() throws JSONException { 2068d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put("foo"); 2078d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put("baz"); 2088d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson array.put("bar"); 2098d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson JSONArray values = new JSONArray(); 2108d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson values.put(5.5d); 2118d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson values.put(11d); 2128d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson values.put(30); 2138d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson values.toJSONObject(array); 2148d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(3, arrayOptCalls); 2158d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson assertEquals(0, arrayOptTypeCalls); 2168d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson } 2178d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson 2184558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson public void testNextExpecting() throws JSONException { 2194558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson tokener.next('{'); 2204558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson assertEquals(1, tokenerNextCalls); 2214558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson tokener.next('\"'); 2224558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson assertEquals(2, tokenerNextCalls); 2234558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson } 2244558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson 2254558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson public void testNextValue() throws JSONException { 2264558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson tokener.nextValue(); 2274558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson assertEquals(4, tokenerNextValueCalls); 2284558195b4a7ee014517f1aa3c59bc6c561baa2efJesse Wilson } 2298d7ee1eb0c3fe903d3546def87b6812754b1ba07Jesse Wilson} 230