-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
misc_test.v
65 lines (50 loc) · 1.2 KB
/
misc_test.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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!' }
}
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 }
}
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
}