jaroslav@919: /** jaroslav@919: * Back 2 Browser Bytecode Translator jaroslav@919: * Copyright (C) 2012 Jaroslav Tulach jaroslav@919: * jaroslav@919: * This program is free software: you can redistribute it and/or modify jaroslav@919: * it under the terms of the GNU General Public License as published by jaroslav@919: * the Free Software Foundation, version 2 of the License. jaroslav@919: * jaroslav@919: * This program is distributed in the hope that it will be useful, jaroslav@919: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@919: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@919: * GNU General Public License for more details. jaroslav@919: * jaroslav@919: * You should have received a copy of the GNU General Public License jaroslav@919: * along with this program. Look for COPYING file in the top folder. jaroslav@919: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@919: */ jaroslav@919: package org.apidesign.bck2brwsr.htmlpage; jaroslav@919: jaroslav@919: import java.util.Iterator; jaroslav@919: import org.json.JSONException; jaroslav@919: import org.json.JSONObject; jaroslav@919: import org.json.JSONTokener; jaroslav@919: import org.testng.annotations.Test; jaroslav@919: import static org.testng.Assert.*; jaroslav@919: jaroslav@919: /** Need to verify that models produce reasonable JSON objects. jaroslav@919: * jaroslav@919: * @author Jaroslav Tulach jaroslav@919: */ jaroslav@919: public class JSONTest { jaroslav@919: jaroslav@919: @Test public void personToString() throws JSONException { jaroslav@919: Person p = new Person(); jaroslav@919: p.setSex(Sex.MALE); jaroslav@919: p.setFirstName("Jarda"); jaroslav@919: p.setLastName("Tulach"); jaroslav@919: jaroslav@919: JSONTokener t = new JSONTokener(p.toString()); jaroslav@919: JSONObject o; jaroslav@919: try { jaroslav@919: o = new JSONObject(t); jaroslav@919: } catch (JSONException ex) { jaroslav@919: throw new AssertionError("Can't parse " + p.toString(), ex); jaroslav@919: } jaroslav@919: jaroslav@919: Iterator it = o.sortedKeys(); jaroslav@919: assertEquals(it.next(), "firstName"); jaroslav@919: assertEquals(it.next(), "lastName"); jaroslav@919: assertEquals(it.next(), "sex"); jaroslav@919: jaroslav@919: assertEquals(o.getString("firstName"), "Jarda"); jaroslav@919: assertEquals(o.getString("lastName"), "Tulach"); jaroslav@919: assertEquals(o.getString("sex"), "MALE"); jaroslav@919: } jaroslav@919: jaroslav@920: @Test public void personWithWildCharactersAndNulls() throws JSONException { jaroslav@920: Person p = new Person(); jaroslav@920: p.setFirstName("'\"\n"); jaroslav@920: p.setLastName("\t\r\u0002"); jaroslav@920: jaroslav@920: JSONTokener t = new JSONTokener(p.toString()); jaroslav@920: JSONObject o; jaroslav@920: try { jaroslav@920: o = new JSONObject(t); jaroslav@920: } catch (JSONException ex) { jaroslav@920: throw new AssertionError("Can't parse " + p.toString(), ex); jaroslav@920: } jaroslav@920: jaroslav@920: Iterator it = o.sortedKeys(); jaroslav@920: assertEquals(it.next(), "firstName"); jaroslav@920: assertEquals(it.next(), "lastName"); jaroslav@920: assertEquals(it.next(), "sex"); jaroslav@920: jaroslav@920: assertEquals(o.getString("firstName"), p.getFirstName()); jaroslav@920: assertEquals(o.getString("lastName"), p.getLastName()); jaroslav@920: assertEquals(o.get("sex"), JSONObject.NULL); jaroslav@920: } jaroslav@920: jaroslav@921: @Test public void personsInArray() throws JSONException { jaroslav@921: Person p1 = new Person(); jaroslav@921: p1.setFirstName("One"); jaroslav@921: jaroslav@921: Person p2 = new Person(); jaroslav@921: p2.setFirstName("Two"); jaroslav@921: jaroslav@921: People arr = new People(); jaroslav@921: arr.getInfo().add(p1); jaroslav@921: arr.getInfo().add(p2); jaroslav@921: arr.getNicknames().add("Prvn\u00ed k\u016f\u0148"); jaroslav@921: final String n2 = "Druh\u00fd hlem\u00fd\u017e\u010f, star\u0161\u00ed"; jaroslav@921: arr.getNicknames().add(n2); jaroslav@921: arr.getAge().add(33); jaroslav@921: arr.getAge().add(73); jaroslav@921: jaroslav@921: jaroslav@921: final String json = arr.toString(); jaroslav@921: jaroslav@921: JSONTokener t = new JSONTokener(json); jaroslav@921: JSONObject o; jaroslav@921: try { jaroslav@921: o = new JSONObject(t); jaroslav@921: } catch (JSONException ex) { jaroslav@921: throw new AssertionError("Can't parse " + json, ex); jaroslav@921: } jaroslav@921: jaroslav@921: assertEquals(o.getJSONArray("info").getJSONObject(0).getString("firstName"), "One"); jaroslav@921: assertEquals(o.getJSONArray("nicknames").getString(1), n2); jaroslav@921: assertEquals(o.getJSONArray("age").getInt(1), 73); jaroslav@921: } jaroslav@919: }