From d6518f7b5ffd3495b94be7f171f9bcb2b33673b6 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:06:31 +0000 Subject: [PATCH] test: add unit tests for UUIDStringUtils Co-Authored-By: aneesharma1 --- .../io/sentry/util/UUIDStringUtilsTest.kt | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 sentry/src/test/java/io/sentry/util/UUIDStringUtilsTest.kt diff --git a/sentry/src/test/java/io/sentry/util/UUIDStringUtilsTest.kt b/sentry/src/test/java/io/sentry/util/UUIDStringUtilsTest.kt new file mode 100644 index 00000000000..b335a7cc20d --- /dev/null +++ b/sentry/src/test/java/io/sentry/util/UUIDStringUtilsTest.kt @@ -0,0 +1,85 @@ +package io.sentry.util + +import java.util.UUID +import kotlin.test.Test +import kotlin.test.assertEquals + +class UUIDStringUtilsTest { + + @Test + fun `toSentryIdString produces 32-char lowercase hex without dashes`() { + val uuid = UUID.fromString("a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11") + val result = UUIDStringUtils.toSentryIdString(uuid) + assertEquals(32, result.length) + assertEquals("a0eebc999c0b4ef8bb6d6bb9bd380a11", result) + } + + @Test + fun `toSentryIdString handles all-zeros UUID`() { + val uuid = UUID(0L, 0L) + val result = UUIDStringUtils.toSentryIdString(uuid) + assertEquals("00000000000000000000000000000000", result) + } + + @Test + fun `toSentryIdString handles max-value UUID`() { + val uuid = UUID(-1L, -1L) // all bits set = ffffffff-ffff-ffff-ffff-ffffffffffff + val result = UUIDStringUtils.toSentryIdString(uuid) + assertEquals("ffffffffffffffffffffffffffffffff", result) + } + + @Test + fun `toSentryIdString from longs matches UUID overload`() { + val uuid = UUID.fromString("550e8400-e29b-41d4-a716-446655440000") + val fromUuid = UUIDStringUtils.toSentryIdString(uuid) + val fromLongs = + UUIDStringUtils.toSentryIdString(uuid.mostSignificantBits, uuid.leastSignificantBits) + assertEquals(fromUuid, fromLongs) + } + + @Test + fun `toSentrySpanIdString produces 16-char lowercase hex`() { + val uuid = UUID.fromString("a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11") + val result = UUIDStringUtils.toSentrySpanIdString(uuid) + assertEquals(16, result.length) + assertEquals("a0eebc999c0b4ef8", result) + } + + @Test + fun `toSentrySpanIdString handles all-zeros`() { + val uuid = UUID(0L, 0L) + val result = UUIDStringUtils.toSentrySpanIdString(uuid) + assertEquals("0000000000000000", result) + } + + @Test + fun `toSentrySpanIdString handles max-value`() { + val uuid = UUID(-1L, -1L) + val result = UUIDStringUtils.toSentrySpanIdString(uuid) + assertEquals("ffffffffffffffff", result) + } + + @Test + fun `toSentrySpanIdString from long matches UUID overload`() { + val uuid = UUID.fromString("550e8400-e29b-41d4-a716-446655440000") + val fromUuid = UUIDStringUtils.toSentrySpanIdString(uuid) + val fromLong = UUIDStringUtils.toSentrySpanIdString(uuid.mostSignificantBits) + assertEquals(fromUuid, fromLong) + } + + @Test + fun `toSentryIdString uses only lowercase hex digits`() { + // UUID with uppercase hex letters in standard form + val uuid = UUID.fromString("ABCDEF01-2345-6789-ABCD-EF0123456789") + val result = UUIDStringUtils.toSentryIdString(uuid) + assertEquals(result, result.lowercase()) + } + + @Test + fun `toSentrySpanIdString is first 16 chars of toSentryIdString`() { + val uuid = UUID.fromString("12345678-abcd-ef01-2345-6789abcdef01") + val fullId = UUIDStringUtils.toSentryIdString(uuid) + val spanId = UUIDStringUtils.toSentrySpanIdString(uuid) + assertEquals(fullId.substring(0, 16), spanId) + } +}