mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
72 lines
1.2 KiB
V
72 lines
1.2 KiB
V
module picohttpparser
|
|
|
|
// Test various values under 10,000
|
|
pub fn test_u64toa_small_values() {
|
|
for v in [u64(0), 1, 10, 99, 100, 999, 1000, 9999] {
|
|
mut buf := [10]u8{}
|
|
len := unsafe { u64toa(&buf[0], v) or { 0 } }
|
|
|
|
assert len == expected_len(v)
|
|
|
|
// Check the actual string for accuracy
|
|
assert buf[0..len] == v.str().bytes()
|
|
}
|
|
}
|
|
|
|
// Test various values above 10,000 and error handling
|
|
pub fn test_u64toa_large_values() {
|
|
for i, v in [u64(10000), 12345, 99999, 100000, 999999, 12345678, 99_999_999, 100_000_000] {
|
|
mut buf := [20]u8{}
|
|
|
|
len := unsafe {
|
|
u64toa(&buf[0], v) or {
|
|
assert err.msg() == 'Maximum size of 100MB exceeded!'
|
|
0
|
|
}
|
|
}
|
|
|
|
if v < 100_000_000 {
|
|
assert len == expected_len(v)
|
|
|
|
assert buf[0..len] == v.str().bytes()
|
|
} else {
|
|
assert len == 0
|
|
}
|
|
}
|
|
}
|
|
|
|
// Test edge cases
|
|
pub fn test_u64toa_edge_cases() {
|
|
mut buf := [10]u8{}
|
|
|
|
// Test zero value
|
|
len := unsafe {
|
|
u64toa(&buf[0], 0) or {
|
|
assert false
|
|
0
|
|
}
|
|
}
|
|
|
|
assert len == 1
|
|
assert buf[0] == `0`
|
|
}
|
|
|
|
// Helper functions for expected values
|
|
fn expected_len(v u64) int {
|
|
if v == 0 {
|
|
return 1
|
|
}
|
|
|
|
// return int(math.ceil(math.log10(f64(v + 1))))
|
|
|
|
mut count := 0
|
|
mut temp := v
|
|
|
|
for temp > 0 {
|
|
temp /= 10
|
|
count++
|
|
}
|
|
|
|
return count
|
|
}
|