Search in sources :

Example 6 with Person

use of com.codename1.rad.schemas.Person in project CodenameOne by codenameone.

the class JavascriptTests method runTest.

@Override
public boolean runTest() throws Exception {
    Form f = new Form("Test Browser");
    if (!BrowserComponent.isNativeBrowserSupported()) {
        System.out.println("This platform doesn't support the native browser component.  Skipping JavascriptTests");
        return true;
    }
    f.setLayout(new BorderLayout());
    BrowserComponent bc = new BrowserComponent();
    bc.setPage("<!doctype html><html><head><title>Foo</title><body>Body</body></head></html>", "http://www.codenameone.com");
    final Res res = new Res();
    bc.addWebEventListener(BrowserComponent.onLoad, e -> {
        try {
            int timeout = 5000;
            bc.execute("window.person={name:'Steve', somefunc: function(a){this.someval = a}}");
            JSRef tmp = bc.executeAndWait(timeout, "callback.onSuccess(person.name)");
            TestUtils.assertEqual(JSType.STRING, tmp.getJSType(), "Wrong JSType for person.name");
            TestUtils.assertEqual("Steve", tmp.toString());
            bc.execute("person.age=${0}", new Object[] { 24 });
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(person.age)");
            TestUtils.assertEqual(JSType.NUMBER, tmp.getJSType(), "Wrong JSType for age");
            TestUtils.assertEqual(24, tmp.getInt(), "Age should be 24");
            bc.execute("person.enabled=${0}", new Object[] { true });
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(person.enabled)");
            TestUtils.assertEqual(JSType.BOOLEAN, tmp.getJSType(), "Wrong JSType for enabled");
            TestUtils.assertEqual(true, tmp.getBoolean(), "Wrong value for enabled");
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(person)");
            TestUtils.assertEqual(JSType.OBJECT, tmp.getJSType(), "Wrong type for person");
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(person.somefunc)");
            TestUtils.assertEqual(JSType.FUNCTION, tmp.getJSType(), "Wrong type for somefunc");
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(person.firstName)");
            TestUtils.assertEqual(JSType.UNDEFINED, tmp.getJSType(), "firstName should be undefined");
            bc.execute("window.person2={name:'Marlene'}");
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(48)");
            bc.execute("window.person2.age=${0}", new Object[] { tmp });
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(window.person2.age)");
            TestUtils.assertEqual(JSType.NUMBER, tmp.getJSType(), "Wrong type for age after setting with JSRef");
            TestUtils.assertEqual(48, tmp.getInt(), "Wrong value for age after setting with JSRef");
            tmp = bc.executeAndWait(timeout, "callback.onSuccess(${0} + ${1} + ${2} + ${3})", new Object[] { 1, 2, 3, 4 });
            TestUtils.assertEqual(JSType.NUMBER, tmp.getJSType(), "Wrong type for 1+2+3+4");
            TestUtils.assertEqual(10, tmp.getInt(), "Wrong value for 1+2+3+4");
            JSRef name1 = bc.executeAndWait(timeout, "callback.onSuccess(person.name)");
            JSRef name2 = bc.executeAndWait(timeout, "callback.onSuccess(person2.name)");
            JSRef name1name2 = bc.executeAndWait(timeout, "callback.onSuccess(${0} +' '+${1})", new Object[] { name1, name2 });
            TestUtils.assertEqual(JSType.STRING, name1name2.getJSType(), "Wrong type for name1name2");
            TestUtils.assertEqual("Steve Marlene", name1name2.toString(), "Wrong value for name1name2");
            // Steve
            JSProxy proxy = bc.createJSProxy("person.name");
            tmp = proxy.callAndWait(timeout, "indexOf", new Object[] { "e" });
            TestUtils.assertEqual(2, tmp.getInt(), "Wrong position for 'e'");
            tmp = proxy.getAndWait(timeout, "length");
            TestUtils.assertEqual(5, tmp.getInt(), "Wrong string length in proxy");
            synchronized (res) {
                res.complete = true;
                res.notifyAll();
            }
            res.complete = true;
        } catch (Throwable t) {
            synchronized (res) {
                res.complete = true;
                res.error = t;
                res.notifyAll();
            }
        }
    });
    f.add(BorderLayout.CENTER, bc);
    f.show();
    while (!res.complete) {
        Display.getInstance().invokeAndBlock(() -> {
            synchronized (res) {
                Util.wait(res, 1000);
            }
        });
    }
    if (res.error != null) {
        Log.e(res.error);
        throw new Exception(res.error.getMessage());
    }
    return true;
}
Also used : JSRef(com.codename1.ui.BrowserComponent.JSRef) BorderLayout(com.codename1.ui.layouts.BorderLayout) JSProxy(com.codename1.ui.BrowserComponent.JSProxy)

Example 7 with Person

use of com.codename1.rad.schemas.Person in project CodeRAD by shannah.

the class ResultParserTest method testResultJSON.

private void testResultJSON() throws Exception {
    String json = "{\"name\":\"Paul\", \"email\":\"paul@example.com\", \"dob\":\"December 27, 1978\" " + ", \"children\": [{\"name\":\"Jim\", \"email\":\"jim@example.com\", \"dob\":\"January 10, 1979\"}," + "{\"name\"=\"Jill\", \"email\"=\"jill@example.com\", \"dob\":\"January 11, 1979\"}]}";
    Result r = Result.fromContent(json, Result.JSON);
    assertEqual("Paul", r.get("name"));
    assertEqual("Paul", r.getAsString("name"));
    assertEqual("Paul", r.get("name"));
    assertEqual("Jim", r.get("./children[0]/name"));
    assertEqual("Jim", r.get("children[0]/name"));
    assertNull(r.get("./children/person[0]/name"));
    assertNull(r.getAsString("./children/person/name"));
    assertEqual("Jim", r.getAsString("./children[0]/name"));
    assertEqual(2, r.getAsStringArray("./children/name").length);
    assertArrayEqual(new String[] { "Jim", "Jill" }, r.getAsStringArray("./children/name"));
    assertEqual("Jim", r.get("./children/name"));
    assertNull(r.getAsString("children/person/name"));
    assertNull(r.getAsString("children[0]/person/name"));
    assertEqual(0, r.getAsStringArray("children/person/name").length);
    json = "{\"numbers\" : [1, 2, 3, 4]}";
    r = Result.fromContent(json, Result.JSON);
    assertEqual(1, r.getAsInteger("numbers[0]"));
    String jsonData = "{\n" + "  \"colors\": [\n" + "    {\n" + "      \"color\": \"black\",\n" + "      \"category\": \"hue\",\n" + "      \"type\": \"primary\",\n" + "      \"code\": {\n" + "        \"rgba\": [255,255,255,1],\n" + "        \"hex\": \"#000\"\n" + "      }\n" + "    },\n" + "    {\n" + "      \"color\": \"white\",\n" + "      \"category\": \"value\",\n" + "      \"code\": {\n" + "        \"rgba\": [0,0,0,1],\n" + "        \"hex\": \"#FFF\"\n" + "      }\n" + "    },\n" + "    {\n" + "      \"color\": \"red\",\n" + "      \"category\": \"hue\",\n" + "      \"type\": \"primary\",\n" + "      \"code\": {\n" + "        \"rgba\": [255,0,0,1],\n" + "        \"hex\": \"#FF0\"\n" + "      }\n" + "    },\n" + "    {\n" + "      \"color\": \"blue\",\n" + "      \"category\": \"hue\",\n" + "      \"type\": \"primary\",\n" + "      \"code\": {\n" + "        \"rgba\": [0,0,255,1],\n" + "        \"hex\": \"#00F\"\n" + "      }\n" + "    },\n" + "    {\n" + "      \"color\": \"yellow\",\n" + "      \"category\": \"hue\",\n" + "      \"type\": \"primary\",\n" + "      \"code\": {\n" + "        \"rgba\": [255,255,0,1],\n" + "        \"hex\": \"#FF0\"\n" + "      }\n" + "    },\n" + "    {\n" + "      \"color\": \"green\",\n" + "      \"category\": \"hue\",\n" + "      \"type\": \"secondary\",\n" + "      \"code\": {\n" + "        \"rgba\": [0,255,0,1],\n" + "        \"hex\": \"#0F0\"\n" + "      }\n" + "    },\n" + "  ]\n" + "}";
    r = Result.fromContent(jsonData, Result.JSON);
    assertEqual("black", r.getAsString("colors[0]/color"));
    assertEqual(255, r.getAsInteger("colors[0]/code/rgba[0]"));
}
Also used : Result(com.codename1.rad.processing.Result)

Example 8 with Person

use of com.codename1.rad.schemas.Person in project CodeRAD by shannah.

the class ResultParserTest method testResult.

private void testResult() throws Exception {
    String json = "<person name=\"Paul\" email=\"paul@example.com\" dob=\"December 27, 1978\">" + "<children><person name=\"Jim\" email=\"jim@example.com\" dob=\"January 10, 1979\"/>" + "<person name=\"Jill\" email=\"jill@example.com\" dob=\"January 11, 1979\"/></children></person>";
    XMLParser xparser = new XMLParser();
    Element root = xparser.parse(new StringReader("<?xml version='1.0'?>\n" + json));
    assertEqual("Paul", root.getAttribute("name"));
    Result r = Result.fromContent(root);
    assertEqual("Paul", r.get("/person/@name"));
    assertEqual("Paul", r.getAsString("./@name"));
    assertEqual("Paul", r.getAsString("@name"));
    assertEqual("Paul", r.get("/person[0]/@name"));
    assertEqual("Jim", r.get("./children/person[0]/@name"));
    assertEqual("Jim", r.getAsString("./children/person/@name"));
    assertEqual("Jim", r.getAsString("./children[0]/person/@name"));
    assertEqual(2, r.getAsStringArray("./children/person/@name").length);
    assertEqual("Jim", r.get("/person/children/person[0]/@name"));
    assertEqual("Jim", r.getAsString("/person[0]/children/person/@name"));
    assertEqual("Jim", r.getAsString("children[0]/person/@name"));
    assertEqual(2, r.getAsStringArray("children/person/@name").length);
}
Also used : Element(com.codename1.xml.Element) StringReader(java.io.StringReader) XMLParser(com.codename1.xml.XMLParser) Result(com.codename1.rad.processing.Result)

Example 9 with Person

use of com.codename1.rad.schemas.Person in project CodeRAD by shannah.

the class ResultParserTest method nestedXMLAttsTest.

// Disabling nested XML Atts tests because I can't figure out how
// Result works with XML...
private void nestedXMLAttsTest() throws Exception {
    assertTrue(personType.newInstance() instanceof PersonModel, "persontype should create a Person, but created " + personType.newInstance());
    ResultParser parser = new ResultParser(personType).property("@name", Person.name).property("@email", Person.email).property("@dob", Person.birthDate, new SimpleDateFormat("MMM d, yyyy")).property("./children/person", Person.children).property("./publication", publications);
    ResultParser publicationParser = new ResultParser(publicationType).property("@name", Thing.name).property(".", Thing.description);
    parser.add(publicationParser);
    String json = "<person name=\"Paul\" email=\"paul@example.com\" dob=\"December 27, 1978\">" + "<children><person name=\"Jim\" email=\"jim@example.com\" dob=\"January 10, 1979\"/>" + "<person name=\"Jill\" email=\"jill@example.com\" dob=\"January 11, 1979\"/></children><publication name=\"Time Magazine\">Political and current event stories</publication>" + "<publication name=\"Vancouver Sun\"/></person>";
    XMLParser xparser = new XMLParser();
    Element root = xparser.parse(new StringReader("<?xml version='1.0'?>\n" + json));
    Entity person = parser.parseRow(Result.fromContent(root), personType.newInstance());
    assertEqual("Paul", person.getEntity().getText(Person.name));
    assertEqual("paul@example.com", person.getEntity().getText(Person.email));
    People children = (People) person.getEntity().get(Person.children);
    assertEqual(2, children.size());
    assertEqual("Jim", children.get(0).get(Person.name));
    assertEqual("jim@example.com", children.get(0).get(Person.email));
    assertEqual("Jill", children.get(1).get(Person.name));
    assertEqual("jill@example.com", children.get(1).get(Person.email));
    Publications pubs = (Publications) person.getEntity().get(publications);
    assertEqual(2, pubs.size());
    assertEqual("Time Magazine", pubs.get(0).get(Thing.name));
    assertEqual("Vancouver Sun", pubs.get(1).get(Thing.name));
    assertEqual("Political and current event stories", pubs.get(0).get(Thing.description));
}
Also used : Entity(com.codename1.rad.models.Entity) Element(com.codename1.xml.Element) StringReader(java.io.StringReader) ResultParser(com.codename1.rad.io.ResultParser) XMLParser(com.codename1.xml.XMLParser) SimpleDateFormat(com.codename1.l10n.SimpleDateFormat)

Example 10 with Person

use of com.codename1.rad.schemas.Person in project CodeRAD by shannah.

the class ResultParserTest method nestedJSONTest.

private void nestedJSONTest() throws Exception {
    EntityType personType = new EntityTypeBuilder().string(Person.name).string(Person.email).Date(Person.birthDate).list(Publications.class, publications).build();
    ResultParser parser = new ResultParser(personType).property("name", Person.name).property("email", Person.email).property("dob", Person.birthDate, dateStr -> {
        if (!(dateStr instanceof String)) {
            return null;
        }
        String str = (String) dateStr;
        if (str.isEmpty()) {
            return null;
        }
        SimpleDateFormat fmt = new SimpleDateFormat("MMM d, yyyy");
        try {
            return fmt.parse(str);
        } catch (ParseException ex) {
            Log.e(ex);
            return null;
        }
    }).property("publications", publications);
    ResultParser publicationParser = new ResultParser(publicationType).property("name", Thing.name).property("description", Thing.description);
    parser.add(publicationParser);
    String json = "{\"name\":\"Paul\", " + "\"email\":\"paul@example.com\", " + "\"dob\" : \"December 27, 1978\", " + "\"publications\" : [" + "  {\"name\":\"Time Magazine\", \"description\" : \"Political and current event stories\"}, " + "  {\"name\":\"Vancouver Sun\"}" + "]" + "}";
    Entity person = parser.parseRow(Result.fromContent(json, Result.JSON), personType.newInstance());
    assertEqual("Paul", person.getEntity().getText(Person.name));
    assertEqual("paul@example.com", person.getEntity().getText(Person.email));
    Publications pubs = (Publications) person.getEntity().get(publications);
    assertEqual(2, pubs.size());
    assertEqual("Time Magazine", pubs.get(0).get(Thing.name));
    assertEqual("Vancouver Sun", pubs.get(1).get(Thing.name));
    assertEqual("Political and current event stories", pubs.get(0).get(Thing.description));
}
Also used : AbstractTest(com.codename1.testing.AbstractTest) Person(com.codename1.rad.schemas.Person) SimpleDateFormat(com.codename1.l10n.SimpleDateFormat) BaseEntity.entityTypeBuilder(com.codename1.rad.models.BaseEntity.entityTypeBuilder) Element(com.codename1.xml.Element) Log(com.codename1.io.Log) ParseException(com.codename1.l10n.ParseException) com.codename1.rad.models(com.codename1.rad.models) PropertyParserCallback(com.codename1.rad.io.ResultParser.PropertyParserCallback) XMLParser(com.codename1.xml.XMLParser) List(java.util.List) ResultParser.resultParser(com.codename1.rad.io.ResultParser.resultParser) StringReader(java.io.StringReader) ParsingService(com.codename1.rad.io.ParsingService) Product(com.codename1.rad.schemas.Product) Map(java.util.Map) Thing(com.codename1.rad.schemas.Thing) Result(com.codename1.rad.processing.Result) ResultParser(com.codename1.rad.io.ResultParser) Entity(com.codename1.rad.models.Entity) Entity(com.codename1.rad.models.Entity) ResultParser(com.codename1.rad.io.ResultParser) ParseException(com.codename1.l10n.ParseException) SimpleDateFormat(com.codename1.l10n.SimpleDateFormat)

Aggregations

Entity (com.codename1.rad.models.Entity)9 SimpleDateFormat (com.codename1.l10n.SimpleDateFormat)6 ResultParser (com.codename1.rad.io.ResultParser)6 Element (com.codename1.xml.Element)6 XMLParser (com.codename1.xml.XMLParser)6 StringReader (java.io.StringReader)6 Thing (com.codename1.rad.schemas.Thing)4 Log (com.codename1.io.Log)3 EntityList (com.codename1.rad.models.EntityList)3 Result (com.codename1.rad.processing.Result)3 ProfileListView (com.codename1.rad.ui.entityviews.ProfileListView)3 BorderLayout (com.codename1.ui.layouts.BorderLayout)3 List (java.util.List)3 NetworkEvent (com.codename1.io.NetworkEvent)2 ParseException (com.codename1.l10n.ParseException)2 ViewController (com.codename1.rad.controllers.ViewController)2 BaseEntity.entityTypeBuilder (com.codename1.rad.models.BaseEntity.entityTypeBuilder)2 EntityTypeBuilder.entityTypeBuilder (com.codename1.rad.models.EntityTypeBuilder.entityTypeBuilder)2 ActionNode (com.codename1.rad.nodes.ActionNode)2 ListNode (com.codename1.rad.nodes.ListNode)2