bool testJSON()

in unmaintained/modules/json/json-test.cpp [78:133]


bool testJSON() {
    gc_scoped_pool pool;
    const js::JSContext cx;

    {
        const list<value> ad = mklist<value>(mklist<value>(attribute, "city", string("san francisco")), mklist<value>(attribute, "state", string("ca")));
        const list<value> ac = mklist<value>(mklist<value>(element, "id", string("1234")), mklist<value>(attribute, "balance", 1000));
        const list<value> cr = mklist<value>(mklist<value> (attribute, "name", string("jdoe")), cons<value>(element, cons<value>("address", ad)), cons<value>(element, cons<value>("account", ac)));
        const list<value> c = mklist<value>(cons<value>(element, cons<value>("customer", cr)));

        ostringstream os;
        writeJSON<ostream*>(jsonWriter, &os, c, cx);
        assert(str(os) == jscustomer);
    }
    {
        const list<value> phones = mklist<value> (string("408-1234"), string("650-1234"));
        const list<value> l = mklist<value> (mklist<value> (element, "phones", phones), mklist<value> (element, "lastName", string("test\ttab")), mklist<value> (attribute, "firstName", string("test1")));

        ostringstream os;
        writeJSON<ostream*>(jsonWriter, &os, l, cx);
        assert(str(os) == jsphones);

        istringstream is(str(os));
        const list<string> il = streamList(is);
        const list<value> r = content(readJSON(il, cx));
        assert(r == l);

        ostringstream wos;
        write(content(writeJSON(r, cx)), wos);
        assert(str(wos) == str(os));
    }
    {
        const list<value> l = mklist<value>(list<value>() + "ns1:echoString" + (list<value>() + "@xmlns:ns1" + string("http://ws.apache.org/axis2/services/echo")) + (list<value>() + "text" + string("Hello World!")));
        ostringstream wos;
        write(content(writeJSON(valuesToElements(l), cx)), wos);
        assert(str(wos) == jsecho);

        istringstream is(str(wos));
        const list<string> il = streamList(is);
        const list<value> r = elementsToValues(content(readJSON(il, cx)));
        assert(r == l);
    }
    {
        const list<value> l = mklist<value>((list<value>() + "fruit" + string("Apple")), (list<value>() + "fruit" + string("Orange")));
        ostringstream wos;
        write(content(writeJSON(valuesToElements(l), cx)), wos);
        assert(str(wos) == jsarray);

        istringstream is(str(wos));
        const list<string> il = streamList(is);
        const list<value> r = elementsToValues(content(readJSON(il, cx)));
        const list<value> l2 = mklist<value>(list<value>() + "fruit" + (list<value>() + string("Apple") + string("Orange")));
        assert(r == l2);
    }
    return true;
}