Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions sentry/src/test/java/io/sentry/util/UUIDStringUtilsTest.kt
Original file line number Diff line number Diff line change
@@ -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)
}
}