From 4c7dfcd372731b487abe5e44b81744c57e30b7d2 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Tue, 17 Dec 2024 15:33:03 -0500 Subject: [PATCH 1/3] simplifying the json logic --- tests/wpt_urlpattern_tests.cpp | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/tests/wpt_urlpattern_tests.cpp b/tests/wpt_urlpattern_tests.cpp index a18ed8efd..4d2de7bd4 100644 --- a/tests/wpt_urlpattern_tests.cpp +++ b/tests/wpt_urlpattern_tests.cpp @@ -111,28 +111,23 @@ TEST(wpt_urlpattern_tests, urlpattern_test_data) { } ondemand::object main_object = element.get_object(); - - for (auto mainfield : main_object) { - auto key = mainfield.key().value(); - auto value = mainfield.value(); - auto value_type = value.type().value(); - - if (key == "expected_obj") { - if (value_type == ondemand::json_type::string && - value.value() == "error") { - ondemand::array patterns; - ASSERT_FALSE( - main_object.find_field_unordered("pattern").get_array().get( - patterns)); - auto init = parse_pattern_field(patterns); - std::cout << "patterns: " << patterns.raw_json().value() - << std::endl; - ASSERT_FALSE(ada::parse_url_pattern(init)); - } + std::string_view expected_obj; + if (!main_object["expected_obj"].get_string().get(expected_obj) && + expected_obj == "error") { + ondemand::array patterns; + if (!main_object["pattern"].get_array().get(patterns)) { + auto init = parse_pattern_field(patterns); + std::cout << "patterns: " << patterns.raw_json().value() << std::endl; + ASSERT_FALSE(ada::parse_url_pattern(init)); + } else { + std::cerr << "expected_obj does not have an array in pattern" + << std::endl; + FAIL(); } } } } catch (simdjson_error& error) { + std::abort(); std::cerr << "JSON error: " << error.what() << " near " << doc.current_location() << " in " << URL_PATTERN_TEST_DATA << std::endl; From ccc8ae378a105308ec3eb2083f4137b529e5017e Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Tue, 17 Dec 2024 15:34:03 -0500 Subject: [PATCH 2/3] trimming --- tests/wpt_urlpattern_tests.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/wpt_urlpattern_tests.cpp b/tests/wpt_urlpattern_tests.cpp index 4d2de7bd4..bd840cf95 100644 --- a/tests/wpt_urlpattern_tests.cpp +++ b/tests/wpt_urlpattern_tests.cpp @@ -127,7 +127,6 @@ TEST(wpt_urlpattern_tests, urlpattern_test_data) { } } } catch (simdjson_error& error) { - std::abort(); std::cerr << "JSON error: " << error.what() << " near " << doc.current_location() << " in " << URL_PATTERN_TEST_DATA << std::endl; From bfc1ad897cf85e6c1b2587227257e6f41f1eb7b3 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Tue, 17 Dec 2024 15:35:36 -0500 Subject: [PATCH 3/3] adding comment --- tests/wpt_urlpattern_tests.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/wpt_urlpattern_tests.cpp b/tests/wpt_urlpattern_tests.cpp index bd840cf95..cea1fe62a 100644 --- a/tests/wpt_urlpattern_tests.cpp +++ b/tests/wpt_urlpattern_tests.cpp @@ -111,6 +111,9 @@ TEST(wpt_urlpattern_tests, urlpattern_test_data) { } ondemand::object main_object = element.get_object(); + // If we have a key with 'expected_obj' and the value is 'error', then + // we expect the pattern to be invalid. There should be a key with + // 'pattern' and the value should be an array. std::string_view expected_obj; if (!main_object["expected_obj"].get_string().get(expected_obj) && expected_obj == "error") {