diff --git a/core/src/main/kotlin/in/specmatic/core/pattern/NumberPattern.kt b/core/src/main/kotlin/in/specmatic/core/pattern/NumberPattern.kt index aeb8d855e..0a41a3745 100644 --- a/core/src/main/kotlin/in/specmatic/core/pattern/NumberPattern.kt +++ b/core/src/main/kotlin/in/specmatic/core/pattern/NumberPattern.kt @@ -60,7 +60,7 @@ data class NumberPattern( if (sampleData.toStringLiteral().length > maxLength) return mismatchResult("number with maxLength $maxLength", sampleData, resolver.mismatchMessages) - val sampleNumber = BigDecimal(sampleData.number.toDouble()) + val sampleNumber = BigDecimal(sampleData.number.toString()) val minOp = if (exclusiveMinimum) ">" else ">=" if (!eval(sampleNumber, minOp, minimum)) diff --git a/core/src/test/kotlin/in/specmatic/core/pattern/NumberPatternTest.kt b/core/src/test/kotlin/in/specmatic/core/pattern/NumberPatternTest.kt index c10fbc636..541dd0369 100644 --- a/core/src/test/kotlin/in/specmatic/core/pattern/NumberPatternTest.kt +++ b/core/src/test/kotlin/in/specmatic/core/pattern/NumberPatternTest.kt @@ -216,6 +216,14 @@ internal class NumberPatternTest { assertThat(generated).isEqualTo(NumberValue(10)) } + @Test + fun `test`() { + val pointZeroOne = ".01" + val minimumPointZeroOne = NumberPattern(minimum = BigDecimal(pointZeroOne)) + val result = minimumPointZeroOne.matches(NumberValue(convertToNumber(pointZeroOne)), Resolver()) + assertThat(result.isSuccess()).withFailMessage(result.reportString()).isTrue() + } + @Test @Tag(GENERATION) fun `negative values should be generated`() {