From 1e841cd453b80a9617f3703a220e833b533a51b2 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Fri, 21 Feb 2025 11:29:13 -0500 Subject: [PATCH] Tests: Add a test for moving an object out of a JSON value I recently questioned whether this would work as expected: JsonValue value { JsonObject {} }; auto object = move(value.as_object()); So this just adds a unit test to ensure that it does. --- Tests/AK/TestJSON.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Tests/AK/TestJSON.cpp b/Tests/AK/TestJSON.cpp index 2bb84107470..0dd9891312e 100644 --- a/Tests/AK/TestJSON.cpp +++ b/Tests/AK/TestJSON.cpp @@ -615,3 +615,27 @@ TEST_CASE(json_value_as_integer) EXPECT(!very_large_value.is_integer()); EXPECT(very_large_value.is_integer()); } + +TEST_CASE(json_object_move_from_value) +{ + JsonArray array; + array.must_append(false); + array.must_append("string"sv); + + JsonObject object; + object.set("foo"sv, "bar"sv); + object.set("baz"sv, move(array)); + + JsonValue value { move(object) }; + object = move(value.as_object()); + + EXPECT(value.is_object()); + EXPECT(value.as_object().is_empty()); + + EXPECT_EQ(object.size(), 2uz); + EXPECT_EQ(object.get_string("foo"sv), "bar"sv); + + auto array2 = object.get_array("baz"sv); + EXPECT_EQ(array2->at(0).as_bool(), false); + EXPECT_EQ(array2->at(1).as_string(), "string"sv); +}