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;
}