javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java
branchmodel
changeset 936 6fe5b2b4b82e
parent 935 2cd6f67472c4
child 941 d1e482f73507
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java	Fri Apr 05 15:17:54 2013 +0200
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java	Fri Apr 05 17:55:23 2013 +0200
     1.3 @@ -17,7 +17,9 @@
     1.4   */
     1.5  package org.apidesign.bck2brwsr.htmlpage;
     1.6  
     1.7 +import java.util.Arrays;
     1.8  import java.util.Iterator;
     1.9 +import java.util.List;
    1.10  import org.apidesign.bck2brwsr.htmlpage.api.OnReceive;
    1.11  import org.apidesign.bck2brwsr.htmlpage.api.Page;
    1.12  import org.apidesign.bck2brwsr.htmlpage.api.Property;
    1.13 @@ -36,7 +38,8 @@
    1.14   * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.15   */
    1.16  @Page(xhtml = "Empty.html", className = "JSONik", properties = {
    1.17 -    @Property(name = "fetched", type = PersonImpl.class)
    1.18 +    @Property(name = "fetched", type = PersonImpl.class),
    1.19 +    @Property(name = "fetchedCount", type = int.class)
    1.20  })
    1.21  public class JSONTest {
    1.22      
    1.23 @@ -125,6 +128,13 @@
    1.24          model.setFetched(p);
    1.25          throw new IllegalStateException("Got him: " + p);
    1.26      }
    1.27 +
    1.28 +    @OnReceive(url="/{url}")
    1.29 +    static void fetchArray(Person[] p, JSONik model) {
    1.30 +        model.setFetchedCount(p.length);
    1.31 +        model.setFetched(p[0]);
    1.32 +        throw new IllegalStateException("Got in array him: " + Arrays.asList(p));
    1.33 +    }
    1.34      
    1.35      @Http(@Http.Resource(
    1.36          content = "{'firstName': 'Sitar', 'sex': 'MALE'}", 
    1.37 @@ -149,11 +159,33 @@
    1.38      }
    1.39      
    1.40      @Http(@Http.Resource(
    1.41 +        content = "{'firstName': 'Sitar', 'sex': 'MALE'}", 
    1.42 +        path="/person.json", 
    1.43 +        mimeType = "application/json"
    1.44 +    ))
    1.45 +    @BrwsrTest public void loadAndParseJSONSentToArray() {
    1.46 +        JSONik js = new JSONik();
    1.47 +        js.applyBindings();
    1.48 +        
    1.49 +        js.fetchArray("person.json");
    1.50 +        
    1.51 +        Person p = null;
    1.52 +        for (int i = 0; i < 10000000; i++) {
    1.53 +            if (js.getFetched() != null) {
    1.54 +                p = js.getFetched();
    1.55 +            }
    1.56 +        }
    1.57 +        assert p != null : "We should get our person back: " + p;
    1.58 +        assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
    1.59 +        assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
    1.60 +    }
    1.61 +    
    1.62 +    @Http(@Http.Resource(
    1.63          content = "[{'firstName': 'Gitar', 'sex': 'FEMALE'}]", 
    1.64          path="/person.json", 
    1.65          mimeType = "application/json"
    1.66      ))
    1.67 -    @BrwsrTest public void loadAndParseJSONArray() {
    1.68 +    @BrwsrTest public void loadAndParseJSONArraySingle() {
    1.69          JSONik js = new JSONik();
    1.70          js.applyBindings();
    1.71          
    1.72 @@ -170,6 +202,33 @@
    1.73          assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
    1.74      }
    1.75      
    1.76 +    
    1.77 +    @Http(@Http.Resource(
    1.78 +        content = "[{'firstName': 'Gitar', 'sex': 'FEMALE'}"
    1.79 +        + "{'firstName': 'Peter', 'sex': 'MALE'}"
    1.80 +        + "]", 
    1.81 +        path="/person.json", 
    1.82 +        mimeType = "application/json"
    1.83 +    ))
    1.84 +    @BrwsrTest public void loadAndParseJSONArray() {
    1.85 +        JSONik js = new JSONik();
    1.86 +        js.applyBindings();
    1.87 +        
    1.88 +        js.fetchArray("person.json");
    1.89 +        
    1.90 +        Person p = null;
    1.91 +        for (int i = 0; i < 10000000; i++) {
    1.92 +            if (js.getFetched() != null) {
    1.93 +                p = js.getFetched();
    1.94 +            }
    1.95 +        }
    1.96 +        
    1.97 +        assert js.getFetchedCount() == 2 : "We got two values: " + js.getFetchedCount();
    1.98 +        assert p != null : "We should get our person back: " + p;
    1.99 +        assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
   1.100 +        assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
   1.101 +    }
   1.102 +    
   1.103      @Factory public static Object[] create() {
   1.104          return VMTest.create(JSONTest.class);
   1.105      }