vlib/bytes/bytes_test.v
Rama master · réplica de lectura del repositorio original.
module bytes
fn test_compare_equal() {
assert compare([u8(1), 2], [u8(1), 2]) == 0
assert compare([u8(1)], [u8(2)]) == -1
assert compare([u8(2)], [u8(1)]) == 1
assert compare([u8(1)], [u8(1), 2]) == -1
}
fn test_equal_contains() {
assert equal([u8(1), 2], [u8(1), 2])
assert !equal([u8(1)], [u8(2)])
assert contains([u8(1), 2, 3], [u8(2), 3])
assert !contains([u8(1), 2], [u8(3)])
}
fn test_count() {
assert count([u8(1), 2, 1, 2], [u8(1), 2]) == 2
assert count([u8(1), 2, 3], [u8(9)]) == 0
assert count([u8(1), 2], []u8{}) == 3
}
fn test_prefix_suffix_index() {
assert has_prefix([u8(1), 2, 3], [u8(1), 2])
assert !has_prefix([u8(1), 2, 3], [u8(2)])
assert has_suffix([u8(1), 2, 3], [u8(2), 3])
assert index([u8(1), 2, 3, 2], [u8(2)]) == 1
assert index_byte([u8(1), 2, 3], 3) == 2
assert index([u8(1), 2], [u8(9)]) == -1
}
fn test_join_repeat() {
assert join([[u8(1)], [u8(2), 3]], [u8(0)]) == [u8(1), 0, 2, 3]
assert repeat([u8(1), 2], 2) == [u8(1), 2, 1, 2]
assert repeat([u8(1)], 0) == []u8{}
}
fn test_replace() {
assert replace([u8(1), 2, 1], [u8(1)], [u8(9)], -1) == [u8(9), 2, 9]
assert replace([u8(1), 2, 1], [u8(1)], [u8(9)], 1) == [u8(9), 2, 1]
}
fn test_split() {
assert split([u8(1), 0, 2, 0, 3], [u8(0)]) == [[u8(1)], [u8(2)], [u8(3)]]
n := split_n([u8(1), 0, 2, 0, 3], [u8(0)], 2)
assert n == [[u8(1)], [u8(2), 0, 3]]
}
fn test_case_trim() {
assert to_lower([u8(65), 98]) == [u8(97), 98]
assert to_upper([u8(97), 66]) == [u8(65), 66]
assert trim_space([u8(32), 65, 32]) == [u8(65)]
assert trim([u8(1), 2, 3, 1], [u8(1)]) == [u8(2), 3]
assert trim_prefix([u8(1), 2, 3], [u8(1)]) == [u8(2), 3]
assert trim_suffix([u8(1), 2, 3], [u8(3)]) == [u8(1), 2]
}
fn test_clone() {
a := [u8(1), 2]
b := clone(a)
assert equal(a, b)
}
fn test_split_empty_separator_preserves_remainder() {
s := [u8(0), 0xff, 0xc3, 0xa9]
assert split_n(s, []u8{}, 1) == [s]
assert split_n(s, []u8{}, 2) == [[u8(0)], [u8(0xff), 0xc3, 0xa9]]
assert split_n(s, []u8{}, 0) == [][]u8{}
assert split_n(s, []u8{}, 10) == [[u8(0)], [u8(0xff)], [u8(0xc3)], [u8(0xa9)]]
assert join(split(s, []u8{}), []u8{}) == s
assert split([]u8{}, []u8{}) == [][]u8{}
assert split([]u8{}, [u8(1)]) == [[]u8{}]
}
fn test_replace_empty_pattern_matches_byte_boundaries() {
s := [u8(0xc3), 0xa9, 0xff]
assert replace(s, []u8{}, [u8(0)], -1) == [u8(0), 0xc3, 0, 0xa9, 0, 0xff, 0]
assert replace(s, []u8{}, [u8(0)], 2) == [u8(0), 0xc3, 0, 0xa9, 0xff]
assert replace(s, []u8{}, [u8(0)], 0) == s
assert replace([]u8{}, []u8{}, [u8(7)], -1) == [u8(7)]
assert replace(s, []u8{}, []u8{}, -1) == s
}
fn test_raw_bytes_and_empty_inputs() {
s := [u8(0), 0xff, 0xc3, 0xa9, `A`, `z`]
assert count(s, []u8{}) == 7
assert index(s, [u8(0xa9)]) == 3
assert index(s, []u8{}) == 0
assert contains([]u8{}, []u8{})
assert has_prefix(s, []u8{})
assert has_suffix(s, []u8{})
assert to_lower(s) == [u8(0), 0xff, 0xc3, 0xa9, `a`, `z`]
assert to_upper(s) == [u8(0), 0xff, 0xc3, 0xa9, `A`, `Z`]
assert trim_space([u8(0xc2), 0xa0, ` `]) == [u8(0xc2), 0xa0]
assert trim([u8(0xc3), 0xa9, 0xc3], [u8(0xc3)]) == [u8(0xa9)]
assert repeat(s, -1) == []u8{}
assert repeat([]u8{}, 100) == []u8{}
assert repeat([]u8{}, 2147483647) == []u8{}
assert join([][]u8{}, [u8(1)]) == []u8{}
assert replace([u8(1), 1, 1], [u8(1), 1], [u8(2)], -1) == [u8(2), 1]
assert count([u8(1), 1, 1], [u8(1), 1]) == 1
}
fn test_results_do_not_alias_inputs() {
s := [u8(1), 2, 3]
mut copies := [clone(s), join([s], []u8{}), repeat(s, 1), replace(s, [u8(9)], []u8{}, -1),
replace(s, []u8{}, []u8{}, 0), to_lower(s), to_upper(s), trim_space(s), trim(s, []u8{}),
trim_prefix(s, [u8(9)]), trim_suffix(s, [u8(9)])]
for mut copy in copies {
copy[0] = 9
assert s == [u8(1), 2, 3]
}
mut parts := split_n(s, []u8{}, 2)
parts[1][0] = 9
assert s == [u8(1), 2, 3]
mut separated := split(s, [u8(2)])
separated[0][0] = 9
assert s == [u8(1), 2, 3]
}