Skip to content

Commit

Permalink
picohttpparser: add tests for u64toa (#20822)
Browse files Browse the repository at this point in the history
  • Loading branch information
enghitalo committed Feb 16, 2024
1 parent 09c35ac commit 53733bd
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
65 changes: 65 additions & 0 deletions vlib/picohttpparser/misc_test.v
@@ -0,0 +1,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
}
4 changes: 4 additions & 0 deletions vlib/picohttpparser/response.c.v
@@ -1,5 +1,7 @@
module picohttpparser

#include <sys/socket.h>

pub struct Response {
pub:
fd int
Expand Down Expand Up @@ -105,6 +107,8 @@ pub fn (mut r Response) raw(response string) {
r.write_string(response)
}

fn C.send(sockfd int, buf voidptr, len usize, flags int) int

@[inline]
pub fn (mut r Response) end() int {
n := int(i64(r.buf) - i64(r.buf_start))
Expand Down

0 comments on commit 53733bd

Please sign in to comment.