1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Wed Apr 03 11:37:52 2013 +0200
1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Fri Apr 05 12:43:17 2013 +0200
1.3 @@ -18,16 +18,26 @@
1.4 package org.apidesign.bck2brwsr.htmlpage;
1.5
1.6 import java.util.Iterator;
1.7 +import org.apidesign.bck2brwsr.htmlpage.api.OnReceive;
1.8 +import org.apidesign.bck2brwsr.htmlpage.api.Page;
1.9 +import org.apidesign.bck2brwsr.htmlpage.api.Property;
1.10 +import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
1.11 +import org.apidesign.bck2brwsr.vmtest.Http;
1.12 +import org.apidesign.bck2brwsr.vmtest.VMTest;
1.13 import org.json.JSONException;
1.14 import org.json.JSONObject;
1.15 import org.json.JSONTokener;
1.16 import org.testng.annotations.Test;
1.17 import static org.testng.Assert.*;
1.18 +import org.testng.annotations.Factory;
1.19
1.20 /** Need to verify that models produce reasonable JSON objects.
1.21 *
1.22 * @author Jaroslav Tulach <jtulach@netbeans.org>
1.23 */
1.24 +@Page(xhtml = "Empty.html", className = "JSONik", properties = {
1.25 + @Property(name = "fetched", type = PersonImpl.class)
1.26 +})
1.27 public class JSONTest {
1.28
1.29 @Test public void personToString() throws JSONException {
1.30 @@ -108,4 +118,60 @@
1.31 assertEquals(o.getJSONArray("nicknames").getString(1), n2);
1.32 assertEquals(o.getJSONArray("age").getInt(1), 73);
1.33 }
1.34 +
1.35 +
1.36 + @OnReceive(url="/{url}")
1.37 + static void fetch(Person p, JSONik model) {
1.38 + model.setFetched(p);
1.39 + throw new IllegalStateException("Got him: " + p);
1.40 + }
1.41 +
1.42 + @Http(@Http.Resource(
1.43 + content = "{'firstName': 'Sitar', 'sex': 'MALE'}",
1.44 + path="/person.json",
1.45 + mimeType = "application/json"
1.46 + ))
1.47 + @BrwsrTest public void loadAndParseJSON() {
1.48 + JSONik js = new JSONik();
1.49 + js.applyBindings();
1.50 +
1.51 + js.fetch("person.json");
1.52 +
1.53 + Person p = null;
1.54 + for (int i = 0; i < 10000000; i++) {
1.55 + if (js.getFetched() != null) {
1.56 + p = js.getFetched();
1.57 + }
1.58 + }
1.59 + assert p != null : "We should get our person back: " + p;
1.60 + assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
1.61 + assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
1.62 + }
1.63 +
1.64 + @Http(@Http.Resource(
1.65 + content = "[{'firstName': 'Sitar', 'sex': 'MALE'}]",
1.66 + path="/person.json",
1.67 + mimeType = "application/json"
1.68 + ))
1.69 + @BrwsrTest public void loadAndParseJSONArray() {
1.70 + JSONik js = new JSONik();
1.71 + js.applyBindings();
1.72 +
1.73 + js.fetch("person.json");
1.74 +
1.75 + Person p = null;
1.76 + for (int i = 0; i < 10000000; i++) {
1.77 + if (js.getFetched() != null) {
1.78 + p = js.getFetched();
1.79 + }
1.80 + }
1.81 + assert p != null : "We should get our person back: " + p;
1.82 + assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
1.83 + assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
1.84 + }
1.85 +
1.86 + @Factory public static Object[] create() {
1.87 + return VMTest.create(JSONTest.class);
1.88 + }
1.89 +
1.90 }