Ctrl K
ComunidadGuías…

vlib/bytes/bytes_test.v

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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]
}