From 9aac0fd369b87e965fb34b5168646387de7ea1cd Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Mon, 23 Feb 2026 11:19:52 +0100 Subject: implement yaml generation (#774) this implements a yaml generation strategy similar to the JSON generation where we just build a string instead of building a ryml tree. This also removes the dependency on ryml for reduced binary/build times. --- thirdparty/ryml/test/test_number.cpp | 217 ----------------------------------- 1 file changed, 217 deletions(-) delete mode 100644 thirdparty/ryml/test/test_number.cpp (limited to 'thirdparty/ryml/test/test_number.cpp') diff --git a/thirdparty/ryml/test/test_number.cpp b/thirdparty/ryml/test/test_number.cpp deleted file mode 100644 index 41c388ae6..000000000 --- a/thirdparty/ryml/test/test_number.cpp +++ /dev/null @@ -1,217 +0,0 @@ -#include "./test_group.hpp" - -namespace c4 { -namespace yml { - -template -auto mkvals() -> typename std::enable_if::value, std::vector>::type -{ - return std::vector({std::numeric_limits::min(), -10, -5, -1, 0, 1, 5, 10, std::numeric_limits::max(),}); -} -template -auto mkvals() -> typename std::enable_if::value, std::vector>::type -{ - return std::vector({0, 1, 5, 10, std::numeric_limits::max(),}); -} -template -void test_ints() -{ - C4_SUPPRESS_WARNING_GCC_WITH_PUSH("-Wuseless-cast") - std::vector values = mkvals(); - Tree t = parse_in_arena("{dec: [], hex: [], bin: [], oct: [], versions: ['0.1', 0.1.2, 0.1.2.3, 0.1.2.3.4]}"); - NodeRef r = t.rootref(); - for(I val : values) - { - I out; - r["dec"].append_child() << val; - r["hex"].append_child() << fmt::hex(val); - r["bin"].append_child() << fmt::bin(val); - r["oct"].append_child() << fmt::oct(val); - out = (I)(val + I(1)); - r["dec"].last_child() >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - r["hex"].last_child() >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - r["bin"].last_child() >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - r["oct"].last_child() >> out; - EXPECT_EQ(out, val); - } - { - std::string emitted = emitrs_yaml(t); - Tree parsed = parse_in_place(to_substr(emitted)); - ASSERT_EQ(parsed["dec"].num_children(), values.size()); - ASSERT_EQ(parsed["hex"].num_children(), values.size()); - ASSERT_EQ(parsed["bin"].num_children(), values.size()); - ASSERT_EQ(parsed["oct"].num_children(), values.size()); - ASSERT_EQ(parsed["versions"].num_children(), 4u); - size_t pos = 0; - for(I val : values) - { - I out = (I)(val + I(1)); - parsed["dec"][pos] >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - parsed["hex"][pos] >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - parsed["bin"][pos]>> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - parsed["oct"][pos] >> out; - EXPECT_EQ(out, val); - ++pos; - } - EXPECT_EQ(parsed["versions"][0], "0.1"); - EXPECT_EQ(parsed["versions"][1], "0.1.2"); - EXPECT_EQ(parsed["versions"][2], "0.1.2.3"); - EXPECT_EQ(parsed["versions"][3], "0.1.2.3.4"); - } - { - std::string emitted = emitrs_json(t); - Tree parsed = parse_in_place(to_substr(emitted)); - ASSERT_EQ(parsed["dec"].num_children(), values.size()); - ASSERT_EQ(parsed["hex"].num_children(), values.size()); - ASSERT_EQ(parsed["bin"].num_children(), values.size()); - ASSERT_EQ(parsed["oct"].num_children(), values.size()); - ASSERT_EQ(parsed["versions"].num_children(), 4u); - size_t pos = 0; - for(I val : values) - { - I out = (I)(val + I(1)); - parsed["dec"][pos] >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - parsed["hex"][pos] >> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - parsed["bin"][pos]>> out; - EXPECT_EQ(out, val); - out = (I)(val + I(1)); - parsed["oct"][pos] >> out; - EXPECT_EQ(out, val); - ++pos; - } - EXPECT_EQ(parsed["versions"][0], "0.1"); - EXPECT_EQ(parsed["versions"][1], "0.1.2"); - EXPECT_EQ(parsed["versions"][2], "0.1.2.3"); - EXPECT_EQ(parsed["versions"][3], "0.1.2.3.4"); - } - C4_SUPPRESS_WARNING_GCC_POP -} - -TEST(number, idec) -{ - test_ints(); - test_ints(); - test_ints(); - test_ints(); - test_ints(); - test_ints(); - test_ints(); - test_ints(); -} - - - -CASE_GROUP(NUMBER) -{ - -ADD_CASE_TO_GROUP("integer numbers, flow", JSON_ALSO, -R"(translation: [-2, -2, 5, 0xa, -0xb, 0XA, -0XA, 0b10, -0b10, 0B10, -0B10, 0o17, -0o17, 0O17, -0O17])", -L{N("translation", L{ - N("-2"), N("-2"), N("5"), - N("0xa"), N("-0xb"), - N("0XA"), N("-0XA"), - N("0b10"), N("-0b10"), - N("0B10"), N("-0B10"), - N("0o17"), N("-0o17"), - N("0O17"), N("-0O17"), -})}); - -ADD_CASE_TO_GROUP("integer numbers, block", JSON_ALSO, -R"(translation: - - -2 - - -2 - - -5 -)", -L{N("translation", L{N("-2"), N("-2"), N("-5")})} -); - -ADD_CASE_TO_GROUP("floating point numbers, flow", JSON_ALSO, -R"([-2.0, -2.1, 0.1, .1, -.2, -2.e+6, -3e-6, 1.12345e+011])", -L{N("-2.0"), N("-2.1"), N("0.1"), N(".1"), N("-.2"), N("-2.e+6"), N("-3e-6"), N("1.12345e+011")} -); - -ADD_CASE_TO_GROUP("floating point numbers, block", JSON_ALSO, -R"( -- -2.0 -- -2.1 -- 0.1 -- .1 -- -.2 -- -2.e+6 -- -3e-6 -- 1.12345e+011 -)", -L{N("-2.0"), N("-2.1"), N("0.1"), N(".1"), N("-.2"), N("-2.e+6"), N("-3e-6"), N("1.12345e+011")} -); - -ADD_CASE_TO_GROUP("hex floating point numbers, block", JSON_ALSO, -R"( -- -2.0 -- -2.1 -- 0.1 -- .1 -- -.2 -- -2.e+6 -- -3e-6 -- 1.12345e+011 -)", -L{N("-2.0"), N("-2.1"), N("0.1"), N(".1"), N("-.2"), N("-2.e+6"), N("-3e-6"), N("1.12345e+011")} -); - -ADD_CASE_TO_GROUP("version numbers", JSON_ALSO, -R"( -- 1.2.3 -- 1.2.3.4 -- [1.2.3, 4.5.6] -- [1.2.3.4, 4.5.6.7] -- - 1.2.3 - - 4.5.6 -- - 1.2.3.4 - - 4.5.6.7 -- a: 1.2.3 -- a: 1.2.3.4 -- {a: 1.2.3} -- {a: 1.2.3.4} -- a: 1.2.3 - b: 4.5.6 -- a: 1.2.3.4 - b: 4.5.6.7 -- {a: 1.2.3, b: 4.5.6} -- {a: 1.2.3.4, b: 4.5.6.7} -)", -L{ - N("1.2.3"), - N("1.2.3.4"), - N(L{N("1.2.3"), N("4.5.6")}), - N(L{N("1.2.3.4"), N("4.5.6.7")}), - N(L{N("1.2.3"), N("4.5.6")}), - N(L{N("1.2.3.4"), N("4.5.6.7")}), - N(L{N("a", "1.2.3")}), - N(L{N("a", "1.2.3.4")}), - N(L{N("a", "1.2.3")}), - N(L{N("a", "1.2.3.4")}), - N(L{N("a", "1.2.3"), N("b", "4.5.6")}), - N(L{N("a", "1.2.3.4"), N("b", "4.5.6.7")}), - N(L{N("a", "1.2.3"), N("b", "4.5.6")}), - N(L{N("a", "1.2.3.4"), N("b", "4.5.6.7")}), -}); -} - -} // namespace yml -} // namespace c4 -- cgit v1.2.3