diff options
Diffstat (limited to 'modules/skjson/src/SkJSONTest.cpp')
-rw-r--r-- | modules/skjson/src/SkJSONTest.cpp | 128 |
1 files changed, 13 insertions, 115 deletions
diff --git a/modules/skjson/src/SkJSONTest.cpp b/modules/skjson/src/SkJSONTest.cpp index 6d4338cbbb..8b876ddf4e 100644 --- a/modules/skjson/src/SkJSONTest.cpp +++ b/modules/skjson/src/SkJSONTest.cpp @@ -7,9 +7,7 @@ #include "Test.h" -#include "SkArenaAlloc.h" #include "SkJSON.h" -#include "SkString.h" #include "SkStream.h" using namespace skjson; @@ -109,29 +107,18 @@ static void check_primitive(skiatest::Reporter* reporter, const Value& v, T pv, bool is_type) { REPORTER_ASSERT(reporter, v.is<VT>() == is_type); - const VT* cast_t = v; - REPORTER_ASSERT(reporter, (cast_t != nullptr) == is_type); - - if (is_type) { - REPORTER_ASSERT(reporter, &v.as<VT>() == cast_t); - REPORTER_ASSERT(reporter, *v.as<VT>() == pv); - } + REPORTER_ASSERT(reporter, *v.as<VT>() == pv); } template <typename T> static void check_vector(skiatest::Reporter* reporter, const Value& v, size_t expected_size, bool is_vector) { REPORTER_ASSERT(reporter, v.is<T>() == is_vector); - const T* cast_t = v; - REPORTER_ASSERT(reporter, (cast_t != nullptr) == is_vector); - - if (is_vector) { - const auto& vec = v.as<T>(); - REPORTER_ASSERT(reporter, &vec == cast_t); - REPORTER_ASSERT(reporter, vec.size() == expected_size); - REPORTER_ASSERT(reporter, vec.begin() != nullptr); - REPORTER_ASSERT(reporter, vec.end() == vec.begin() + expected_size); - } + + const auto& vec = v.as<T>(); + REPORTER_ASSERT(reporter, vec.size() == expected_size); + REPORTER_ASSERT(reporter, (vec.begin() != nullptr) == is_vector); + REPORTER_ASSERT(reporter, vec.end() == vec.begin() + expected_size); } static void check_string(skiatest::Reporter* reporter, const Value& v, const char* s) { @@ -141,7 +128,7 @@ static void check_string(skiatest::Reporter* reporter, const Value& v, const cha } } -DEF_TEST(SkJSON_DOM_visit, reporter) { +DEF_TEST(SkJSON_DOM, reporter) { static constexpr char json[] = "{ \n\ \"k1\": null, \n\ \"k2\": false, \n\ @@ -244,6 +231,7 @@ DEF_TEST(SkJSON_DOM_visit, reporter) { check_primitive<float, NumberValue>(reporter, v.as<ArrayValue>()[0], 1, true); check_primitive<bool, BoolValue>(reporter, v.as<ArrayValue>()[1], true, true); check_vector<StringValue>(reporter, v.as<ArrayValue>()[2], 3, true); + REPORTER_ASSERT(reporter, v.as<ArrayValue>()[3].is<NullValue>()); } { @@ -275,100 +263,10 @@ DEF_TEST(SkJSON_DOM_visit, reporter) { check_string(reporter, v.as<ObjectValue>()["kk1"], "baz"); check_primitive<bool, BoolValue>(reporter, v.as<ObjectValue>()["kk2"], false, true); } -} - -template <typename T> -void check_value(skiatest::Reporter* reporter, const Value& v, const char* expected_string) { - REPORTER_ASSERT(reporter, v.is<T>()); - - const T* cast_t = v; - REPORTER_ASSERT(reporter, cast_t == &v.as<T>()); - - const auto vstr = v.toString(); - REPORTER_ASSERT(reporter, 0 == strcmp(expected_string, vstr.c_str())); -} - -DEF_TEST(SkJSON_DOM_build, reporter) { - SkArenaAlloc alloc(4096); - - const auto v0 = NullValue(); - check_value<NullValue>(reporter, v0, "null"); - - const auto v1 = BoolValue(true); - check_value<BoolValue>(reporter, v1, "true"); - - const auto v2 = BoolValue(false); - check_value<BoolValue>(reporter, v2, "false"); - const auto v3 = NumberValue(0); - check_value<NumberValue>(reporter, v3, "0"); - - const auto v4 = NumberValue(42); - check_value<NumberValue>(reporter, v4, "42"); - - const auto v5 = NumberValue(42.75f); - check_value<NumberValue>(reporter, v5, "42.75"); - - const auto v6 = StringValue(nullptr, 0, alloc); - check_value<StringValue>(reporter, v6, "\"\""); - - const auto v7 = StringValue(" foo ", 5, alloc); - check_value<StringValue>(reporter, v7, "\" foo \""); - - const auto v8 = StringValue(" foo bar baz ", 13, alloc); - check_value<StringValue>(reporter, v8, "\" foo bar baz \""); - - const auto v9 = ArrayValue(nullptr, 0, alloc); - check_value<ArrayValue>(reporter, v9, "[]"); - - const Value values0[] = { v0, v3, v9 }; - const auto v10 = ArrayValue(values0, SK_ARRAY_COUNT(values0), alloc); - check_value<ArrayValue>(reporter, v10, "[null,0,[]]"); - - const auto v11 = ObjectValue(nullptr, 0, alloc); - check_value<ObjectValue>(reporter, v11, "{}"); - - const Member members0[] = { - { StringValue("key_0", 5, alloc), v1 }, - { StringValue("key_1", 5, alloc), v4 }, - { StringValue("key_2", 5, alloc), v11 }, - }; - const auto v12 = ObjectValue(members0, SK_ARRAY_COUNT(members0), alloc); - check_value<ObjectValue>(reporter, v12, "{" - "\"key_0\":true," - "\"key_1\":42," - "\"key_2\":{}" - "}"); - - const Value values1[] = { v2, v6, v12 }; - const auto v13 = ArrayValue(values1, SK_ARRAY_COUNT(values1), alloc); - check_value<ArrayValue>(reporter, v13, "[" - "false," - "\"\"," - "{" - "\"key_0\":true," - "\"key_1\":42," - "\"key_2\":{}" - "}" - "]"); - - const Member members1[] = { - { StringValue("key_00", 6, alloc), v5 }, - { StringValue("key_01", 6, alloc), v7 }, - { StringValue("key_02", 6, alloc), v13 }, - }; - const auto v14 = ObjectValue(members1, SK_ARRAY_COUNT(members1), alloc); - check_value<ObjectValue>(reporter, v14, "{" - "\"key_00\":42.75," - "\"key_01\":\" foo \"," - "\"key_02\":[" - "false," - "\"\"," - "{" - "\"key_0\":true," - "\"key_1\":42," - "\"key_2\":{}" - "}" - "]" - "}"); + { + const auto& v = + jroot["foo"].as<ObjectValue>()["bar"].as<ObjectValue>()["baz"]; + REPORTER_ASSERT(reporter, v.is<NullValue>()); + } } |