///|
/// Tests for internal helper functions using snapshot testing
test "str_compare basic" {
// Equal strings
assert_eq(str_compare("abc", "abc"), 0)
assert_eq(str_compare("", ""), 0)
// Different lengths
assert_eq(str_compare("", "a"), -1)
assert_eq(str_compare("a", ""), 1)
// Lexicographic order
assert_eq(str_compare("a", "b"), -1)
assert_eq(str_compare("b", "a"), 1)
}
///|
test "base62_index_of basic" {
// Digits 0-9 -> indices 0-9
assert_eq(base62_index_of('0'), 0)
assert_eq(base62_index_of('9'), 9)
// Uppercase A-Z -> indices 10-35
assert_eq(base62_index_of('A'), 10)
assert_eq(base62_index_of('Z'), 35)
// Lowercase a-z -> indices 36-61
assert_eq(base62_index_of('a'), 36)
assert_eq(base62_index_of('z'), 61)
// Invalid character
assert_eq(base62_index_of('!'), -1)
}
///|
test "base62_char_at basic" {
assert_eq(base62_char_at(0), '0')
assert_eq(base62_char_at(9), '9')
assert_eq(base62_char_at(10), 'A')
assert_eq(base62_char_at(35), 'Z')
assert_eq(base62_char_at(36), 'a')
assert_eq(base62_char_at(61), 'z')
}
///|
test "get_int_len snapshot" {
inspect(try? get_int_len('a'), content="Ok(2)")
inspect(try? get_int_len('b'), content="Ok(3)")
inspect(try? get_int_len('z'), content="Ok(27)")
inspect(try? get_int_len('A'), content="Ok(27)")
inspect(try? get_int_len('Z'), content="Ok(2)")
inspect(
try? get_int_len('0'),
content=(
#|Err(KeyError("invalid order key head: 0"))
),
)
}
///|
test "midpoint basic snapshot" {
inspect(midpoint("", ""), content="V")
inspect(midpoint("", "V"), content="G")
inspect(midpoint("V", ""), content="l")
inspect(midpoint("0", "2"), content="1")
}
///|
test "increment_int snapshot" {
inspect(
try? increment_int("a0"),
content=(
#|Ok("a1")
),
)
inspect(
try? increment_int("az"),
content=(
#|Ok("b00")
),
)
inspect(
try? increment_int("Zz"),
content=(
#|Ok("a0")
),
)
}
///|
test "decrement_int snapshot" {
inspect(
try? decrement_int("a1"),
content=(
#|Ok("a0")
),
)
inspect(
try? decrement_int("a0"),
content=(
#|Ok("Zz")
),
)
inspect(
try? decrement_int("b00"),
content=(
#|Ok("az")
),
)
}
///|
test "key_between snapshot" {
inspect(
try? key_between(None, None),
content=(
#|Ok("a0")
),
)
inspect(
try? key_between(Some("a0"), None),
content=(
#|Ok("a1")
),
)
inspect(
try? key_between(None, Some("a0")),
content=(
#|Ok("Zz")
),
)
inspect(
try? key_between(Some("a0"), Some("a1")),
content=(
#|Ok("a0V")
),
)
}
///|
test "n_keys_between snapshot" {
inspect(
try? n_keys_between(None, None, 3),
content=(
#|Ok(["a0", "a1", "a2"])
),
)
inspect(
try? n_keys_between(Some("a0"), Some("a2"), 5),
content=(
#|Ok(["a0G", "a0V", "a1", "a1G", "a1V"])
),
)
}
///|
test "float64_approx snapshot" {
inspect(try? float64_approx("a0"), content="Ok(0)")
inspect(try? float64_approx("a1"), content="Ok(1)")
inspect(try? float64_approx("Z1"), content="Ok(-1)")
inspect(try? float64_approx("a0V"), content="Ok(0.5)")
}