From c4c3538f5eb311091a96acc67042eac9a38b0fbe Mon Sep 17 00:00:00 2001 From: leadpony Date: Sat, 31 Oct 2020 21:41:15 +0900 Subject: [PATCH] Update official test suite --- JSON-Schema-Test-Suite | 2 +- .../tests/extra/json/Draft04OfficialTest.java | 3 ++- .../tests/extra/json/Draft06OfficialTest.java | 3 ++- .../tests/extra/json/Draft07OfficialTest.java | 1 + .../tests/extra/json/Draft201909OfficialTest.java | 1 + .../internal/keyword/validation/Draft04Type.java | 14 ++++++++++++-- .../justify/internal/keyword/validation/Type.java | 2 +- 7 files changed, 20 insertions(+), 6 deletions(-) diff --git a/JSON-Schema-Test-Suite b/JSON-Schema-Test-Suite index ea415537..71ba357b 160000 --- a/JSON-Schema-Test-Suite +++ b/JSON-Schema-Test-Suite @@ -1 +1 @@ -Subproject commit ea415537dda2613f3cd5df1f219f84086f75a7dc +Subproject commit 71ba357bd6422f722854a2a7fea8b4f3dbc3e107 diff --git a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft04OfficialTest.java b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft04OfficialTest.java index f0d4233d..6b742da5 100644 --- a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft04OfficialTest.java +++ b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft04OfficialTest.java @@ -67,9 +67,10 @@ public static Stream mandatory() { } private static final String[] OPTIONAL = { - "optional/bignum.json", // Draft-04 does not have the "regex" format. + "optional/bignum.json", "optional/ecmascript-regex.json", + "optional/float-overflow.json", "optional/non-bmp-regex.json", "optional/zeroTerminatedFloats.json", diff --git a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft06OfficialTest.java b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft06OfficialTest.java index 3a973097..ab4bde1a 100644 --- a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft06OfficialTest.java +++ b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft06OfficialTest.java @@ -73,9 +73,10 @@ public static Stream mandatory() { } private static final String[] OPTIONAL = { - "optional/bignum.json", // Draft-06 does not have the "regex" format. + "optional/bignum.json", "optional/ecmascript-regex.json", + "optional/float-overflow.json", "optional/non-bmp-regex.json", "optional/format/date-time.json", diff --git a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft07OfficialTest.java b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft07OfficialTest.java index ece242c9..ff7fc7c1 100644 --- a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft07OfficialTest.java +++ b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft07OfficialTest.java @@ -77,6 +77,7 @@ public static Stream mandatory() { "optional/bignum.json", "optional/content.json", "optional/ecmascript-regex.json", + "optional/float-overflow.json", "optional/non-bmp-regex.json", "optional/format/date.json", diff --git a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft201909OfficialTest.java b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft201909OfficialTest.java index feae5d28..771f8f76 100644 --- a/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft201909OfficialTest.java +++ b/justify-tests/src/test/java/org/leadpony/justify/tests/extra/json/Draft201909OfficialTest.java @@ -84,6 +84,7 @@ public static Stream mandatory() { "optional/bignum.json", "optional/content.json", "optional/ecmascript-regex.json", + "optional/float-overflow.json", "optional/non-bmp-regex.json", "optional/refOfUnknownKeyword.json", diff --git a/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Draft04Type.java b/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Draft04Type.java index a3e949a7..8a4ddd4a 100644 --- a/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Draft04Type.java +++ b/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Draft04Type.java @@ -15,9 +15,12 @@ */ package org.leadpony.justify.internal.keyword.validation; +import java.math.BigDecimal; import java.util.Set; import jakarta.json.JsonValue; +import jakarta.json.stream.JsonParser; + import org.leadpony.justify.api.EvaluatorContext; import org.leadpony.justify.api.InstanceType; import org.leadpony.justify.api.SpecVersion; @@ -47,10 +50,17 @@ protected Keyword map(JsonValue jsonValue, Set types) { }; private static InstanceType getNarrowType(InstanceType type, EvaluatorContext context) { - if (type == InstanceType.NUMBER - && context.getParser().isIntegralNumber()) { + if (type != InstanceType.NUMBER) { + return type; + } + JsonParser parser = context.getParser(); + if (parser.isIntegralNumber()) { return InstanceType.INTEGER; } else { + BigDecimal value = parser.getBigDecimal(); + if (value.scale() <= 0) { + return InstanceType.INTEGER; + } return type; } } diff --git a/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Type.java b/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Type.java index a08dc82b..f1484124 100644 --- a/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Type.java +++ b/justify/src/main/java/org/leadpony/justify/internal/keyword/validation/Type.java @@ -131,7 +131,7 @@ protected InstanceType toNarrowType(InstanceType type, EvaluatorContext context) return InstanceType.INTEGER; } else { BigDecimal value = parser.getBigDecimal().stripTrailingZeros(); - if (value.scale() == 0) { + if (value.scale() <= 0) { return InstanceType.INTEGER; } return type;