diff --git a/src/test/java/tools/jackson/core/io/NumberOutputTest.java b/src/test/java/tools/jackson/core/io/NumberOutputTest.java index 3225a6ba9e..1b7b283b47 100644 --- a/src/test/java/tools/jackson/core/io/NumberOutputTest.java +++ b/src/test/java/tools/jackson/core/io/NumberOutputTest.java @@ -1,12 +1,65 @@ package tools.jackson.core.io; +import java.util.Random; + import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; class NumberOutputTest { + @Test + void intPrinting() throws Exception + { + assertIntPrint(0); + assertIntPrint(-3); + assertIntPrint(1234); + assertIntPrint(-1234); + assertIntPrint(56789); + assertIntPrint(-56789); + assertIntPrint(999999); + assertIntPrint(-999999); + assertIntPrint(1000000); + assertIntPrint(-1000000); + assertIntPrint(10000001); + assertIntPrint(-10000001); + assertIntPrint(-100000012); + assertIntPrint(100000012); + assertIntPrint(1999888777); + assertIntPrint(-1999888777); + assertIntPrint(Integer.MAX_VALUE); + assertIntPrint(Integer.MIN_VALUE); + + Random rnd = new Random(12345L); + for (int i = 0; i < 251000; ++i) { + assertIntPrint(rnd.nextInt()); + } + } + + @Test + void longPrinting() throws Exception + { + // First, let's just cover couple of edge cases + assertLongPrint(0L, 0); + assertLongPrint(1L, 0); + assertLongPrint(-1L, 0); + assertLongPrint(Long.MAX_VALUE, 0); + assertLongPrint(Long.MIN_VALUE, 0); + assertLongPrint(Long.MAX_VALUE-1L, 0); + assertLongPrint(Long.MIN_VALUE+1L, 0); + + Random rnd = new Random(12345L); + // Bigger value space, need more iterations for long + for (int i = 0; i < 678000; ++i) { + long l = ((long) rnd.nextInt() << 32) | rnd.nextInt(); + assertLongPrint(l, i); + } + } + + // // // Tests for divBy1000 + @Test void divBy1000Small() { @@ -45,4 +98,52 @@ void divBy1000FullRange() { } } } + + /* + /********************************************************** + /* Internal methods + /********************************************************** + */ + + private void assertIntPrint(int value) + { + String exp = ""+value; + String act = printToString(value); + + if (!exp.equals(act)) { + assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+")"); + } + String alt = NumberOutput.toString(value); + if (!exp.equals(alt)) { + assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+")"); + } + } + + private void assertLongPrint(long value, int index) + { + String exp = ""+value; + String act = printToString(value); + + if (!exp.equals(act)) { + assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+"; number index "+index+")"); + } + String alt = NumberOutput.toString(value); + if (!exp.equals(alt)) { + assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+"; number index "+index+")"); + } + } + + private String printToString(int value) + { + char[] buffer = new char[12]; + int offset = NumberOutput.outputInt(value, buffer, 0); + return new String(buffer, 0, offset); + } + + private String printToString(long value) + { + char[] buffer = new char[22]; + int offset = NumberOutput.outputLong(value, buffer, 0); + return new String(buffer, 0, offset); + } } \ No newline at end of file diff --git a/src/test/java/tools/jackson/core/util/TestCharTypes.java b/src/test/java/tools/jackson/core/util/CharTypesTest.java similarity index 96% rename from src/test/java/tools/jackson/core/util/TestCharTypes.java rename to src/test/java/tools/jackson/core/util/CharTypesTest.java index 63994bef2f..a8408961c7 100644 --- a/src/test/java/tools/jackson/core/util/TestCharTypes.java +++ b/src/test/java/tools/jackson/core/util/CharTypesTest.java @@ -6,7 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -class TestCharTypes +class CharTypesTest extends tools.jackson.core.JUnit5TestBase { @Test diff --git a/src/test/java/tools/jackson/core/util/TestDelegates.java b/src/test/java/tools/jackson/core/util/DelegatesTest.java similarity index 99% rename from src/test/java/tools/jackson/core/util/TestDelegates.java rename to src/test/java/tools/jackson/core/util/DelegatesTest.java index eaca14e566..e76f22c2c9 100644 --- a/src/test/java/tools/jackson/core/util/TestDelegates.java +++ b/src/test/java/tools/jackson/core/util/DelegatesTest.java @@ -14,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.*; -class TestDelegates extends JUnit5TestBase +class DelegatesTest extends JUnit5TestBase { static class POJO { public int x = 3; diff --git a/src/test/java/tools/jackson/core/util/TestNumberPrinting.java b/src/test/java/tools/jackson/core/util/TestNumberPrinting.java deleted file mode 100644 index 7fc0988a37..0000000000 --- a/src/test/java/tools/jackson/core/util/TestNumberPrinting.java +++ /dev/null @@ -1,113 +0,0 @@ -package tools.jackson.core.util; - -import java.util.Random; - -import tools.jackson.core.io.NumberOutput; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * Set of basic unit tests for verifying that the low-level number - * printing methods work as expected. - */ -class TestNumberPrinting - extends tools.jackson.core.JUnit5TestBase -{ - @Test - void intPrinting() throws Exception - { - assertIntPrint(0); - assertIntPrint(-3); - assertIntPrint(1234); - assertIntPrint(-1234); - assertIntPrint(56789); - assertIntPrint(-56789); - assertIntPrint(999999); - assertIntPrint(-999999); - assertIntPrint(1000000); - assertIntPrint(-1000000); - assertIntPrint(10000001); - assertIntPrint(-10000001); - assertIntPrint(-100000012); - assertIntPrint(100000012); - assertIntPrint(1999888777); - assertIntPrint(-1999888777); - assertIntPrint(Integer.MAX_VALUE); - assertIntPrint(Integer.MIN_VALUE); - - Random rnd = new Random(12345L); - for (int i = 0; i < 251000; ++i) { - assertIntPrint(rnd.nextInt()); - } - } - - @Test - void longPrinting() throws Exception - { - // First, let's just cover couple of edge cases - assertLongPrint(0L, 0); - assertLongPrint(1L, 0); - assertLongPrint(-1L, 0); - assertLongPrint(Long.MAX_VALUE, 0); - assertLongPrint(Long.MIN_VALUE, 0); - assertLongPrint(Long.MAX_VALUE-1L, 0); - assertLongPrint(Long.MIN_VALUE+1L, 0); - - Random rnd = new Random(12345L); - // Bigger value space, need more iterations for long - for (int i = 0; i < 678000; ++i) { - long l = ((long) rnd.nextInt() << 32) | rnd.nextInt(); - assertLongPrint(l, i); - } - } - - /* - /********************************************************** - /* Internal methods - /********************************************************** - */ - - private void assertIntPrint(int value) - { - String exp = ""+value; - String act = printToString(value); - - if (!exp.equals(act)) { - assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+")"); - } - String alt = Integer.toString(value); - if (!exp.equals(alt)) { - assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+")"); - } - } - - private void assertLongPrint(long value, int index) - { - String exp = ""+value; - String act = printToString(value); - - if (!exp.equals(act)) { - assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+"; number index "+index+")"); - } - String alt = Long.toString(value); - if (!exp.equals(alt)) { - assertEquals(exp, act, "Expected conversion (exp '"+exp+"', len "+exp.length()+"; act len "+act.length()+"; number index "+index+")"); - } - } - - private String printToString(int value) - { - char[] buffer = new char[12]; - int offset = NumberOutput.outputInt(value, buffer, 0); - return new String(buffer, 0, offset); - } - - private String printToString(long value) - { - char[] buffer = new char[22]; - int offset = NumberOutput.outputLong(value, buffer, 0); - return new String(buffer, 0, offset); - } -} diff --git a/src/test/java/tools/jackson/core/util/TestVersionUtil.java b/src/test/java/tools/jackson/core/util/TestVersionUtil.java deleted file mode 100644 index 5491aa0d3e..0000000000 --- a/src/test/java/tools/jackson/core/util/TestVersionUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -package tools.jackson.core.util; - -import tools.jackson.core.json.PackageVersion; - -import org.junit.jupiter.api.Test; - -import tools.jackson.core.Version; -import tools.jackson.core.json.UTF8JsonGenerator; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -class TestVersionUtil extends tools.jackson.core.JUnit5TestBase -{ - @Test - void versionPartParsing() - { - assertEquals(13, VersionUtil.parseVersionPart("13")); - assertEquals(27, VersionUtil.parseVersionPart("27.8")); - assertEquals(0, VersionUtil.parseVersionPart("-3")); - } - - @Test - void versionParsing() - { - assertEquals(new Version(1, 2, 15, "foo", "group", "artifact"), - VersionUtil.parseVersion("1.2.15-foo", "group", "artifact")); - } - - @Test - void packageVersionMatches() { - assertEquals(PackageVersion.VERSION, VersionUtil.versionFor(UTF8JsonGenerator.class)); - } - - // [core#248]: make sure not to return `null` but `Version.unknownVersion()` - @Test - void versionForUnknownVersion() { - // expecting return version.unknownVersion() instead of null - assertEquals(Version.unknownVersion(), VersionUtil.versionFor(TestVersionUtil.class)); - } -} diff --git a/src/test/java/tools/jackson/core/util/VersionUtilTest.java b/src/test/java/tools/jackson/core/util/VersionUtilTest.java index ac201cb362..df65a60ab7 100644 --- a/src/test/java/tools/jackson/core/util/VersionUtilTest.java +++ b/src/test/java/tools/jackson/core/util/VersionUtilTest.java @@ -3,6 +3,8 @@ import org.junit.jupiter.api.Test; import tools.jackson.core.Version; +import tools.jackson.core.json.PackageVersion; +import tools.jackson.core.json.UTF8JsonGenerator; import static org.junit.jupiter.api.Assertions.*; @@ -14,39 +16,60 @@ class VersionUtilTest { @Test - void parseVersionSimple() { - Version v = VersionUtil.parseVersion("1.2.3-SNAPSHOT", "group", "artifact"); - assertEquals("group/artifact/1.2.3-SNAPSHOT", v.toFullString()); - } + void versionPartParsing() + { + assertEquals(13, VersionUtil.parseVersionPart("13")); + assertEquals(27, VersionUtil.parseVersionPart("27.8")); + assertEquals(0, VersionUtil.parseVersionPart("-3")); + } + + @Test + void versionParsing() + { + assertEquals(new Version(1, 2, 15, "foo", "group", "artifact"), + VersionUtil.parseVersion("1.2.15-foo", "group", "artifact")); + Version v = VersionUtil.parseVersion("1.2.3-SNAPSHOT", "group", "artifact"); + assertEquals("group/artifact/1.2.3-SNAPSHOT", v.toFullString()); + } @Test void parseVersionPartReturningPositive() { - assertEquals(66, VersionUtil.parseVersionPart("66R")); - } + assertEquals(66, VersionUtil.parseVersionPart("66R")); + } @Test void parseVersionReturningVersionWhereGetMajorVersionIsZero() { - Version version = VersionUtil.parseVersion("#M&+m@569P", "#M&+m@569P", "com.fasterxml.jackson.core.util.VersionUtil"); + Version version = VersionUtil.parseVersion("#M&+m@569P", "#M&+m@569P", "com.fasterxml.jackson.core.util.VersionUtil"); - assertEquals(0, version.getMinorVersion()); - assertEquals(0, version.getPatchLevel()); - assertEquals(0, version.getMajorVersion()); - assertFalse(version.isSnapshot()); - assertFalse(version.isUnknownVersion()); - } + assertEquals(0, version.getMinorVersion()); + assertEquals(0, version.getPatchLevel()); + assertEquals(0, version.getMajorVersion()); + assertFalse(version.isSnapshot()); + assertFalse(version.isUnknownVersion()); + } @Test void parseVersionWithEmptyStringAndEmptyString() { - Version version = VersionUtil.parseVersion("", "", "\"g2AT"); - - assertTrue(version.isUnknownVersion()); - } + Version version = VersionUtil.parseVersion("", "", "\"g2AT"); + assertTrue(version.isUnknownVersion()); + } @Test void parseVersionWithNullAndEmptyString() { - Version version = VersionUtil.parseVersion(null, "/nUmRN)3", ""); + Version version = VersionUtil.parseVersion(null, "/nUmRN)3", ""); - assertFalse(version.isSnapshot()); - } + assertFalse(version.isSnapshot()); + } -} \ No newline at end of file + @Test + void packageVersionMatches() { + assertEquals(PackageVersion.VERSION, VersionUtil.versionFor(UTF8JsonGenerator.class)); + } + + // [core#248]: make sure not to return `null` but `Version.unknownVersion()` + @Test + void versionForUnknownVersion() { + // expecting return version.unknownVersion() instead of null + assertEquals(Version.unknownVersion(), VersionUtil.versionFor(VersionUtilTest.class)); + } +}