From d7b5c9656b7f1c2ea8d9936e81087d4b22b51517 Mon Sep 17 00:00:00 2001 From: carldenigma Date: Mon, 3 Nov 2025 08:32:00 +0000 Subject: [PATCH] Fixed issue with invalid CUID when generating v1 --- src/main/java/io/github/thibaultmeyer/cuid/CUID.java | 2 +- .../java/io/github/thibaultmeyer/cuid/CUIDv1Test.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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())); + } + } }