| Index: runtime/vm/json_test.cc
|
| ===================================================================
|
| --- runtime/vm/json_test.cc (revision 27342)
|
| +++ runtime/vm/json_test.cc (working copy)
|
| @@ -139,143 +139,176 @@
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_Primitives) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| -
|
| - js.OpenObject();
|
| - js.CloseObject();
|
| -
|
| - EXPECT_STREQ("{}", tb.buf());
|
| -
|
| - js.Clear();
|
| - js.OpenArray();
|
| - js.CloseArray();
|
| - EXPECT_STREQ("[]", tb.buf());
|
| -
|
| - js.Clear();
|
| - js.PrintValueBool(true);
|
| - EXPECT_STREQ("true", tb.buf());
|
| -
|
| - js.Clear();
|
| - js.PrintValueBool(false);
|
| - EXPECT_STREQ("false", tb.buf());
|
| -
|
| - js.Clear();
|
| - js.PrintValue(static_cast<intptr_t>(4));
|
| - EXPECT_STREQ("4", tb.buf());
|
| -
|
| - js.Clear();
|
| - js.PrintValue(1.0);
|
| - EXPECT_STREQ("1.000000", tb.buf());
|
| -
|
| - js.Clear();
|
| - js.PrintValue("hello");
|
| - EXPECT_STREQ("\"hello\"", tb.buf());
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONObject jsobj(&js);
|
| + }
|
| + EXPECT_STREQ("{}", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + }
|
| + EXPECT_STREQ("[]", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue(true);
|
| + }
|
| + EXPECT_STREQ("[true]", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue(false);
|
| + }
|
| + EXPECT_STREQ("[false]", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue(static_cast<intptr_t>(4));
|
| + }
|
| + EXPECT_STREQ("[4]", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue(1.0);
|
| + }
|
| + EXPECT_STREQ("[1.000000]", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue("hello");
|
| + }
|
| + EXPECT_STREQ("[\"hello\"]", js.ToCString());
|
| + }
|
| + {
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValueF("h%s", "elo");
|
| + }
|
| + EXPECT_STREQ("[\"helo\"]", js.ToCString());
|
| + }
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_Array) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.Clear();
|
| - js.OpenArray();
|
| - js.PrintValueBool(true);
|
| - js.PrintValueBool(false);
|
| - js.CloseArray();
|
| - EXPECT_STREQ("[true,false]", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue(true);
|
| + jsarr.AddValue(false);
|
| + }
|
| + EXPECT_STREQ("[true,false]", js.ToCString());
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_Object) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.Clear();
|
| - js.OpenObject();
|
| - js.PrintProperty("key1", "a");
|
| - js.PrintProperty("key2", "b");
|
| - js.CloseObject();
|
| - EXPECT_STREQ("{\"key1\":\"a\",\"key2\":\"b\"}", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONObject jsobj(&js);
|
| + jsobj.AddProperty("key1", "a");
|
| + jsobj.AddProperty("key2", "b");
|
| + }
|
| + EXPECT_STREQ("{\"key1\":\"a\",\"key2\":\"b\"}", js.ToCString());
|
| }
|
|
|
| TEST_CASE(JSON_JSONStream_NestedObject) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.OpenObject();
|
| - js.OpenObject("key");
|
| - js.PrintProperty("key1", "d");
|
| - js.CloseObject();
|
| - js.CloseObject();
|
| - EXPECT_STREQ("{\"key\":{\"key1\":\"d\"}}", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONObject jsobj(&js);
|
| + JSONObject jsobj1(jsobj, "key");
|
| + jsobj1.AddProperty("key1", "d");
|
| + }
|
| + EXPECT_STREQ("{\"key\":{\"key1\":\"d\"}}", js.ToCString());
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_ObjectArray) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.OpenArray();
|
| - js.OpenObject();
|
| - js.PrintProperty("key", "e");
|
| - js.CloseObject();
|
| - js.OpenObject();
|
| - js.PrintProperty("yek", "f");
|
| - js.CloseObject();
|
| - js.CloseArray();
|
| - EXPECT_STREQ("[{\"key\":\"e\"},{\"yek\":\"f\"}]", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + {
|
| + JSONObject jsobj(jsarr);
|
| + jsobj.AddProperty("key", "e");
|
| + }
|
| + {
|
| + JSONObject jsobj(jsarr);
|
| + jsobj.AddProperty("yek", "f");
|
| + }
|
| + }
|
| + EXPECT_STREQ("[{\"key\":\"e\"},{\"yek\":\"f\"}]", js.ToCString());
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_ArrayArray) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.OpenArray();
|
| - js.OpenArray();
|
| - js.PrintValue((intptr_t)4);
|
| - js.CloseArray();
|
| - js.OpenArray();
|
| - js.PrintValueBool(false);
|
| - js.CloseArray();
|
| - js.CloseArray();
|
| - EXPECT_STREQ("[[4],[false]]", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + {
|
| + JSONArray jsarr1(jsarr);
|
| + jsarr1.AddValue(static_cast<intptr_t>(4));
|
| + }
|
| + {
|
| + JSONArray jsarr1(jsarr);
|
| + jsarr1.AddValue(false);
|
| + }
|
| + }
|
| + EXPECT_STREQ("[[4],[false]]", js.ToCString());
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_Printf) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.OpenArray();
|
| - js.PrintfValue("%d %s", 2, "hello");
|
| - js.CloseArray();
|
| - EXPECT_STREQ("[\"2 hello\"]", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValueF("%d %s", 2, "hello");
|
| + }
|
| + EXPECT_STREQ("[\"2 hello\"]", js.ToCString());
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_ObjectPrintf) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.OpenObject();
|
| - js.PrintfProperty("key", "%d %s", 2, "hello");
|
| - js.CloseObject();
|
| - EXPECT_STREQ("{\"key\":\"2 hello\"}", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONObject jsobj(&js);
|
| + jsobj.AddPropertyF("key", "%d %s", 2, "hello");
|
| + }
|
| + EXPECT_STREQ("{\"key\":\"2 hello\"}", js.ToCString());
|
| }
|
|
|
|
|
| TEST_CASE(JSON_JSONStream_DartObject) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.OpenArray();
|
| - js.PrintValue(Object::Handle(Object::null()));
|
| - js.OpenObject();
|
| - js.PrintProperty("object_key", Object::Handle(Object::null()));
|
| - js.CloseArray();
|
| - EXPECT_STREQ("[{\"type\":\"null\"},{\"object_key\":{\"type\":\"null\"}]",
|
| - tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue(Object::Handle(Object::null()));
|
| + JSONObject jsobj(jsarr);
|
| + jsobj.AddProperty("object_key", Object::Handle(Object::null()));
|
| + }
|
| + EXPECT_STREQ("[{\"type\":\"null\"},{\"object_key\":{\"type\":\"null\"}}]",
|
| + js.ToCString());
|
| }
|
|
|
| TEST_CASE(JSON_JSONStream_EscapedString) {
|
| - TextBuffer tb(256);
|
| - JSONStream js(&tb);
|
| - js.PrintValue("Hel\"\"lo\r\n\t");
|
| - EXPECT_STREQ("\"Hel\\\"\\\"lo\\r\\n\\t\"", tb.buf());
|
| + JSONStream js;
|
| + {
|
| + JSONArray jsarr(&js);
|
| + jsarr.AddValue("Hel\"\"lo\r\n\t");
|
| + }
|
| + EXPECT_STREQ("[\"Hel\\\"\\\"lo\\r\\n\\t\"]", js.ToCString());
|
| }
|
|
|
|
|
|
|