Skip to content

Commit 7848f96

Browse files
authored
Fix multipleOf incorrect negative exponent of 10 cases (#685)
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
1 parent a284cbb commit 7848f96

7 files changed

Lines changed: 82 additions & 15 deletions

File tree

DEPENDENCIES

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
vendorpull https://github.com/sourcemeta/vendorpull 1dcbac42809cf87cb5b045106b863e17ad84ba02
2-
core https://github.com/sourcemeta/core 57e8c91ed68e3ee903526fd2f45cb16ca46759d8
2+
core https://github.com/sourcemeta/core 94b0c4860231adfb18bb8d16951089f95bc3cc4c
33
jsonschema-test-suite https://github.com/json-schema-org/JSON-Schema-Test-Suite 06481b143722c8c06671bd40dcde99b422ffd531

test/evaluator/evaluator_draft4.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9622,6 +9622,30 @@
96229622
"descriptions": [ "The integer value 3 was expected to be divisible by the number 1.5" ]
96239623
}
96249624
},
9625+
{
9626+
"description": "multipleOf_23",
9627+
"schema": { "$schema": "http://json-schema.org/draft-04/schema#", "multipleOf": 0.01 },
9628+
"instance": 1280.32,
9629+
"valid": true,
9630+
"fast": {
9631+
"pre": [
9632+
[ "AssertionDivisible", "/multipleOf", "#/multipleOf", "" ]
9633+
],
9634+
"post": [
9635+
[ true, "AssertionDivisible", "/multipleOf", "#/multipleOf", "" ]
9636+
],
9637+
"descriptions": [ "The number value 1280.32 was expected to be divisible by the number 0.01" ]
9638+
},
9639+
"exhaustive": {
9640+
"pre": [
9641+
[ "AssertionDivisible", "/multipleOf", "#/multipleOf", "" ]
9642+
],
9643+
"post": [
9644+
[ true, "AssertionDivisible", "/multipleOf", "#/multipleOf", "" ]
9645+
],
9646+
"descriptions": [ "The number value 1280.32 was expected to be divisible by the number 0.01" ]
9647+
}
9648+
},
96259649
{
96269650
"description": "metadata",
96279651
"schema": {

test/evaluator/evaluator_draft4_test.cc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,6 +1066,27 @@ TEST(Evaluator_draft4, multipleOf_19) {
10661066
"The number value 0.3 was expected to be divisible by the number 0.1");
10671067
}
10681068

1069+
TEST(Evaluator_draft4, multipleOf_20) {
1070+
auto schema{sourcemeta::core::JSON::make_object()};
1071+
schema.assign_assume_new(
1072+
"$schema",
1073+
sourcemeta::core::JSON{"http://json-schema.org/draft-04/schema#"});
1074+
schema.assign_assume_new(
1075+
"multipleOf", sourcemeta::core::JSON{sourcemeta::core::Decimal{"0.01"}});
1076+
1077+
const sourcemeta::core::JSON instance{sourcemeta::core::Decimal{"1280.32"}};
1078+
EVALUATE_WITH_TRACE_FAST_SUCCESS(schema, instance, 1, "");
1079+
1080+
EVALUATE_TRACE_PRE(0, AssertionDivisible, "/multipleOf", "#/multipleOf", "");
1081+
EVALUATE_TRACE_POST_SUCCESS(0, AssertionDivisible, "/multipleOf",
1082+
"#/multipleOf", "");
1083+
1084+
EVALUATE_TRACE_POST_DESCRIBE(
1085+
instance, 0,
1086+
"The number value 1280.32 was expected to be divisible by the number "
1087+
"0.01");
1088+
}
1089+
10691090
TEST(Evaluator_draft4, minimum_18) {
10701091
auto schema{sourcemeta::core::JSON::make_object()};
10711092
schema.assign_assume_new(

vendor/core/src/core/json/json_value.cc

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/core/src/core/jsonschema/frame.cc

Lines changed: 10 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/core/src/lang/numeric/decimal.cc

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/core/src/lang/numeric/include/sourcemeta/core/numeric_decimal.h

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)