diff --git a/src/main/java/io/github/thibaultmeyer/cuid/CUID.java b/src/main/java/io/github/thibaultmeyer/cuid/CUID.java index 8ad5a48..7388498 100644 --- a/src/main/java/io/github/thibaultmeyer/cuid/CUID.java +++ b/src/main/java/io/github/thibaultmeyer/cuid/CUID.java @@ -225,7 +225,7 @@ private static synchronized int nextCounterValue() { */ private static String getRandomBlock() { - return Common.padWithZero(Integer.toString(Common.nextIntValue() * DISCRETE_VALUE, NUMBER_BASE), BLOCK_SIZE); + return Common.padWithZero(Integer.toString(safeAbs(Common.nextIntValue() * DISCRETE_VALUE), NUMBER_BASE), BLOCK_SIZE); } } diff --git a/src/test/java/io/github/thibaultmeyer/cuid/CUIDv1Test.java b/src/test/java/io/github/thibaultmeyer/cuid/CUIDv1Test.java index d7cd0d5..17d9fb7 100644 --- a/src/test/java/io/github/thibaultmeyer/cuid/CUIDv1Test.java +++ b/src/test/java/io/github/thibaultmeyer/cuid/CUIDv1Test.java @@ -132,4 +132,13 @@ void unicityOver500000() { // Assert Assertions.assertEquals(500000, cuidSet.size()); } + + @Test + void validCreation500000() { + // Act & Assert + for (int i = 0; i < 500000; i += 1) { + final CUID cuid = CUID.randomCUID1(); + Assertions.assertTrue(CUID.isValid(cuid.toString())); + } + } }