From 5a737b7af9ce6aca0ed0fffce18d97a91a6d7dff Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Tue, 11 Nov 2025 11:42:23 -0400 Subject: [PATCH] Exercise precise `double`s in the test suite as much as possible Signed-off-by: Juan Cruz Viotti --- .../alterschema_lint_2019_09_test.cc | 4 +- .../alterschema_lint_2020_12_test.cc | 4 +- .../alterschema_lint_draft1_test.cc | 4 +- .../alterschema_lint_draft2_test.cc | 4 +- .../alterschema_lint_draft3_test.cc | 4 +- .../alterschema_lint_draft4_test.cc | 4 +- .../alterschema_lint_draft6_test.cc | 4 +- .../alterschema_lint_draft7_test.cc | 4 +- test/json/json_number_test.cc | 8 +-- test/json/json_parse_callback_test.cc | 12 ++-- test/json/json_parse_test.cc | 56 +++++++++---------- test/numeric/numeric_decimal_test.cc | 4 +- test/yaml/yaml_parse_callback_test.cc | 9 ++- 13 files changed, 60 insertions(+), 61 deletions(-) diff --git a/test/alterschema/alterschema_lint_2019_09_test.cc b/test/alterschema/alterschema_lint_2019_09_test.cc index d3685be17..6f7cc98eb 100644 --- a/test/alterschema/alterschema_lint_2019_09_test.cc +++ b/test/alterschema/alterschema_lint_2019_09_test.cc @@ -1061,7 +1061,7 @@ TEST(AlterSchema_lint_2019_09, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -1079,7 +1079,7 @@ TEST(AlterSchema_lint_2019_09, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_2020_12_test.cc b/test/alterschema/alterschema_lint_2020_12_test.cc index 74a172ae3..b6dbef0b0 100644 --- a/test/alterschema/alterschema_lint_2020_12_test.cc +++ b/test/alterschema/alterschema_lint_2020_12_test.cc @@ -861,7 +861,7 @@ TEST(AlterSchema_lint_2020_12, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -879,7 +879,7 @@ TEST(AlterSchema_lint_2020_12, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_draft1_test.cc b/test/alterschema/alterschema_lint_draft1_test.cc index 8297e8c68..dda2b9298 100644 --- a/test/alterschema/alterschema_lint_draft1_test.cc +++ b/test/alterschema/alterschema_lint_draft1_test.cc @@ -432,7 +432,7 @@ TEST(AlterSchema_lint_draft1, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-01/schema#", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -450,7 +450,7 @@ TEST(AlterSchema_lint_draft1, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-01/schema#", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_draft2_test.cc b/test/alterschema/alterschema_lint_draft2_test.cc index 8393dfb60..3d7b63590 100644 --- a/test/alterschema/alterschema_lint_draft2_test.cc +++ b/test/alterschema/alterschema_lint_draft2_test.cc @@ -432,7 +432,7 @@ TEST(AlterSchema_lint_draft2, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-02/schema#", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -450,7 +450,7 @@ TEST(AlterSchema_lint_draft2, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-02/schema#", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_draft3_test.cc b/test/alterschema/alterschema_lint_draft3_test.cc index b8bd8c238..27d455e5a 100644 --- a/test/alterschema/alterschema_lint_draft3_test.cc +++ b/test/alterschema/alterschema_lint_draft3_test.cc @@ -432,7 +432,7 @@ TEST(AlterSchema_lint_draft3, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-03/schema#", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -450,7 +450,7 @@ TEST(AlterSchema_lint_draft3, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-03/schema#", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_draft4_test.cc b/test/alterschema/alterschema_lint_draft4_test.cc index 82e530348..a59d6074b 100644 --- a/test/alterschema/alterschema_lint_draft4_test.cc +++ b/test/alterschema/alterschema_lint_draft4_test.cc @@ -540,7 +540,7 @@ TEST(AlterSchema_lint_draft4, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -558,7 +558,7 @@ TEST(AlterSchema_lint_draft4, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-04/schema#", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_draft6_test.cc b/test/alterschema/alterschema_lint_draft6_test.cc index cb7bb1234..bf992c0e4 100644 --- a/test/alterschema/alterschema_lint_draft6_test.cc +++ b/test/alterschema/alterschema_lint_draft6_test.cc @@ -728,7 +728,7 @@ TEST(AlterSchema_lint_draft6, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -746,7 +746,7 @@ TEST(AlterSchema_lint_draft6, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-06/schema#", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/alterschema/alterschema_lint_draft7_test.cc b/test/alterschema/alterschema_lint_draft7_test.cc index 6d49f70bf..c5719fb8f 100644 --- a/test/alterschema/alterschema_lint_draft7_test.cc +++ b/test/alterschema/alterschema_lint_draft7_test.cc @@ -826,7 +826,7 @@ TEST(AlterSchema_lint_draft7, maximum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "type": "integer", - "maximum": 3.2 + "maximum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); @@ -844,7 +844,7 @@ TEST(AlterSchema_lint_draft7, minimum_real_for_integer_1) { sourcemeta::core::JSON document = sourcemeta::core::parse_json(R"JSON({ "$schema": "http://json-schema.org/draft-07/schema#", "type": "integer", - "minimum": 3.2 + "minimum": 3.5 })JSON"); LINT_AND_FIX_FOR_READABILITY(document); diff --git a/test/json/json_number_test.cc b/test/json/json_number_test.cc index 31706017b..f8649fe22 100644 --- a/test/json/json_number_test.cc +++ b/test/json/json_number_test.cc @@ -220,20 +220,20 @@ TEST(JSON_number, add_integer_real_within_object) { TEST(JSON_number, add_real_integer_within_object) { sourcemeta::core::JSON document = - sourcemeta::core::parse_json("{\"foo\": 3.2}"); + sourcemeta::core::parse_json("{\"foo\": 3.5}"); const sourcemeta::core::JSON value{2}; document.at("foo") += value; EXPECT_TRUE(document.at("foo").is_real()); - EXPECT_EQ(document.at("foo").to_real(), 5.2); + EXPECT_EQ(document.at("foo").to_real(), 5.5); } TEST(JSON_number, add_real_real_within_object) { sourcemeta::core::JSON document = - sourcemeta::core::parse_json("{\"foo\": 3.2}"); + sourcemeta::core::parse_json("{\"foo\": 3.5}"); const sourcemeta::core::JSON value{2.0}; document.at("foo") += value; EXPECT_TRUE(document.at("foo").is_real()); - EXPECT_EQ(document.at("foo").to_real(), 5.2); + EXPECT_EQ(document.at("foo").to_real(), 5.5); } TEST(JSON_number, divisible_by_integer_integer_true) { diff --git a/test/json/json_parse_callback_test.cc b/test/json/json_parse_callback_test.cc index 9a817a5a3..d7c92c104 100644 --- a/test/json/json_parse_callback_test.cc +++ b/test/json/json_parse_callback_test.cc @@ -94,10 +94,10 @@ TEST(JSON_parse_callback, integer) { } TEST(JSON_parse_callback, real) { - const auto input{"3.14"}; + const auto input{"3.5"}; PARSE_WITH_TRACES(document, input, 2); EXPECT_TRACE(0, Pre, Real, 1, 1, sourcemeta::core::JSON{nullptr}); - EXPECT_TRACE(1, Post, Real, 1, 4, sourcemeta::core::JSON{3.14}); + EXPECT_TRACE(1, Post, Real, 1, 3, sourcemeta::core::JSON{3.5}); } TEST(JSON_parse_callback, empty_array) { @@ -153,13 +153,13 @@ TEST(JSON_parse_callback, array_integers) { } TEST(JSON_parse_callback, array_reals) { - const auto input{"[\n 1.0,\n 2.34\n]"}; + const auto input{"[\n 1.0,\n 2.5\n]"}; PARSE_WITH_TRACES(document, input, 6); EXPECT_TRACE(0, Pre, Array, 1, 1, sourcemeta::core::JSON{nullptr}); EXPECT_TRACE(1, Pre, Real, 2, 3, sourcemeta::core::JSON{0}); EXPECT_TRACE(2, Post, Real, 2, 5, sourcemeta::core::JSON{1.0}); EXPECT_TRACE(3, Pre, Real, 3, 3, sourcemeta::core::JSON{1}); - EXPECT_TRACE(4, Post, Real, 3, 6, sourcemeta::core::JSON{2.34}); + EXPECT_TRACE(4, Post, Real, 3, 5, sourcemeta::core::JSON{2.5}); EXPECT_TRACE(5, Post, Array, 4, 1, sourcemeta::core::parse_json(input)); } @@ -237,13 +237,13 @@ TEST(JSON_parse_callback, object_integers) { } TEST(JSON_parse_callback, object_reals) { - const auto input{"{\n \"foo\": 1.0,\n \"bar\": 2.34\n}"}; + const auto input{"{\n \"foo\": 1.0,\n \"bar\": 2.5\n}"}; PARSE_WITH_TRACES(document, input, 6); EXPECT_TRACE(0, Pre, Object, 1, 1, sourcemeta::core::JSON{nullptr}); EXPECT_TRACE(1, Pre, Real, 2, 3, sourcemeta::core::JSON{"foo"}); EXPECT_TRACE(2, Post, Real, 2, 12, sourcemeta::core::JSON{1.0}); EXPECT_TRACE(3, Pre, Real, 3, 3, sourcemeta::core::JSON{"bar"}); - EXPECT_TRACE(4, Post, Real, 3, 13, sourcemeta::core::JSON{2.34}); + EXPECT_TRACE(4, Post, Real, 3, 12, sourcemeta::core::JSON{2.5}); EXPECT_TRACE(5, Post, Object, 4, 1, sourcemeta::core::parse_json(input)); } diff --git a/test/json/json_parse_test.cc b/test/json/json_parse_test.cc index 7749ca4df..8ddd7957d 100644 --- a/test/json/json_parse_test.cc +++ b/test/json/json_parse_test.cc @@ -349,21 +349,21 @@ TEST(JSON_parse, array_one_negative_integer_item) { } TEST(JSON_parse, array_one_positive_real_item) { - std::istringstream input{"[5.2]"}; + std::istringstream input{"[5.5]"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_array()); EXPECT_EQ(document.size(), 1); EXPECT_TRUE(document.at(0).is_real()); - EXPECT_EQ(document.at(0).to_real(), 5.2); + EXPECT_EQ(document.at(0).to_real(), 5.5); } TEST(JSON_parse, array_one_negative_real_item) { - std::istringstream input{"[-5.2]"}; + std::istringstream input{"[-5.5]"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_array()); EXPECT_EQ(document.size(), 1); EXPECT_TRUE(document.at(0).is_real()); - EXPECT_EQ(document.at(0).to_real(), -5.2); + EXPECT_EQ(document.at(0).to_real(), -5.5); } TEST(JSON_parse, array_comma_within_string) { @@ -755,10 +755,10 @@ TEST(JSON_parse, negative_real) { } TEST(JSON_parse, real_leading_decimal_zero) { - std::istringstream input{"1.0005"}; + std::istringstream input{"1.125"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 1.0005); + EXPECT_EQ(document.to_real(), 1.125); } TEST(JSON_parse, real_multi_left_digit_positive_real) { @@ -818,10 +818,10 @@ TEST(JSON_parse, single_digit_negative_real_integer_trailing_zero) { } TEST(JSON_parse, leading_zero_real_number) { - std::istringstream input{"-0.2"}; + std::istringstream input{"-0.125"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), -0.2); + EXPECT_EQ(document.to_real(), -0.125); } TEST(JSON_parse, zero_integer_with_exponent) { @@ -839,24 +839,24 @@ TEST(JSON_parse, zero_real_with_exponent) { } TEST(JSON_parse, large_negative_exponential_number) { - std::istringstream input{"-1.0e28"}; + std::istringstream input{"-1.0e10"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), -1e28); + EXPECT_EQ(document.to_real(), -1e10); } TEST(JSON_parse, large_positive_exponential_number_with_plus_exponent) { - std::istringstream input{"1.0e+28"}; + std::istringstream input{"1.0e+10"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 1e28); + EXPECT_EQ(document.to_real(), 1e10); } TEST(JSON_parse, large_negative_exponential_number_with_plus_exponent) { - std::istringstream input{"-1.0e+28"}; + std::istringstream input{"-1.0e+10"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), -1e28); + EXPECT_EQ(document.to_real(), -1e10); } TEST(JSON_parse, number_exponential_notation_plus_after_e) { @@ -902,24 +902,24 @@ TEST(JSON_parse, exponential_notation_integer_5_upper) { } TEST(JSON_parse, exponential_notation_integer_6_upper) { - std::istringstream input{"2E-1"}; + std::istringstream input{"5E-1"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 0.2); + EXPECT_EQ(document.to_real(), 0.5); } TEST(JSON_parse, exponential_notation_integer_7_upper) { - std::istringstream input{"9.87E2"}; + std::istringstream input{"9.5E2"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 987); + EXPECT_EQ(document.to_real(), 950); } TEST(JSON_parse, exponential_notation_integer_8_upper) { - std::istringstream input{"7.51E-9"}; + std::istringstream input{"5E-1"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 0.00000000751); + EXPECT_EQ(document.to_real(), 0.5); } TEST(JSON_parse, exponential_notation_integer_1_lower) { @@ -958,24 +958,24 @@ TEST(JSON_parse, exponential_notation_integer_5_lower) { } TEST(JSON_parse, exponential_notation_integer_6_lower) { - std::istringstream input{"2e-1"}; + std::istringstream input{"5e-1"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 0.2); + EXPECT_EQ(document.to_real(), 0.5); } TEST(JSON_parse, exponential_notation_integer_7_lower) { - std::istringstream input{"9.87e2"}; + std::istringstream input{"9.5e2"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 987); + EXPECT_EQ(document.to_real(), 950); } TEST(JSON_parse, exponential_notation_integer_8_lower) { - std::istringstream input{"7.51e-9"}; + std::istringstream input{"5e-1"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 0.00000000751); + EXPECT_EQ(document.to_real(), 0.5); } TEST(JSON_parse, exponential_notation_integer_1_real) { @@ -993,10 +993,10 @@ TEST(JSON_parse, exponential_notation_integer_2_real) { } TEST(JSON_parse, exponential_notation_integer_3_real) { - std::istringstream input{"2.0e-1"}; + std::istringstream input{"5.0e-1"}; const sourcemeta::core::JSON document = sourcemeta::core::parse_json(input); EXPECT_TRUE(document.is_real()); - EXPECT_EQ(document.to_real(), 0.2); + EXPECT_EQ(document.to_real(), 0.5); } TEST(JSON_parse, integer_equality) { diff --git a/test/numeric/numeric_decimal_test.cc b/test/numeric/numeric_decimal_test.cc index b1aa0b67f..91a8b0dcb 100644 --- a/test/numeric/numeric_decimal_test.cc +++ b/test/numeric/numeric_decimal_test.cc @@ -550,8 +550,8 @@ TEST(Numeric_decimal, to_float_integer) { } TEST(Numeric_decimal, to_double_simple) { - const sourcemeta::core::Decimal value{"3.14159"}; - EXPECT_DOUBLE_EQ(value.to_double(), 3.14159); + const sourcemeta::core::Decimal value{"3.5"}; + EXPECT_DOUBLE_EQ(value.to_double(), 3.5); } TEST(Numeric_decimal, to_double_integer) { diff --git a/test/yaml/yaml_parse_callback_test.cc b/test/yaml/yaml_parse_callback_test.cc index 44187acc7..1f502fb4a 100644 --- a/test/yaml/yaml_parse_callback_test.cc +++ b/test/yaml/yaml_parse_callback_test.cc @@ -81,10 +81,10 @@ TEST(YAML_parse_callback, yaml_integer) { } TEST(YAML_parse_callback, yaml_real) { - const auto input{"3.14"}; + const auto input{"3.5"}; PARSE_YAML_WITH_TRACES(document, input, 2); EXPECT_TRACE(0, Pre, Real, 1, 1, sourcemeta::core::JSON{nullptr}); - EXPECT_TRACE(1, Post, Real, 1, 4, sourcemeta::core::JSON{3.14}); + EXPECT_TRACE(1, Post, Real, 1, 3, sourcemeta::core::JSON{3.5}); } TEST(YAML_parse_callback, yaml_empty_array) { @@ -260,14 +260,13 @@ TEST(YAML_parse_callback, yaml_unquoted_strings) { } TEST(YAML_parse_callback, yaml_numbers_various_formats) { - const auto input{ - "decimal: 42\nfloat: 3.14\nnegative: -10\nexponential: 1e10"}; + const auto input{"decimal: 42\nfloat: 3.5\nnegative: -10\nexponential: 1e10"}; PARSE_YAML_WITH_TRACES(document, input, 10); EXPECT_TRACE(0, Pre, Object, 1, 1, sourcemeta::core::JSON{nullptr}); EXPECT_TRACE(1, Pre, Integer, 1, 1, sourcemeta::core::JSON{"decimal"}); EXPECT_TRACE(2, Post, Integer, 1, 11, sourcemeta::core::JSON{42}); EXPECT_TRACE(3, Pre, Real, 2, 1, sourcemeta::core::JSON{"float"}); - EXPECT_TRACE(4, Post, Real, 2, 11, sourcemeta::core::JSON{3.14}); + EXPECT_TRACE(4, Post, Real, 2, 10, sourcemeta::core::JSON{3.5}); EXPECT_TRACE(5, Pre, Integer, 3, 1, sourcemeta::core::JSON{"negative"}); EXPECT_TRACE(6, Post, Integer, 3, 13, sourcemeta::core::JSON{-10}); EXPECT_TRACE(7, Pre, Real, 4, 1, sourcemeta::core::JSON{"exponential"});