lib: split bytes tests into equal/index/contains/tokenize/trim per ref/hare/bytes
Pure move: bytes_test.ww dissolves along its banner seams into sibling
equal_test.ww, index_test.ww (u8 + []u8 arms of index/rindex),
contains_test.ww (contains/hasprefix/hassuffix), tokenize_test.ww
(tokenize/rtokenize/peektoken/remainingtokens + splitn/rsplitn/split +
cut/rcut), and trim_test.ww, mirroring ref/hare/bytes/{equal,index,
contains,tokenize,trim}.ha ownership (Hare keeps splitn and cut in
tokenize.ha; contains.ha owns hasprefix/hassuffix). Blocks are
byte-identical; only the banner lines are deleted. Helpers stay with
their sole consumers: expect_token/expect_done/expect_tok in
tokenize_test.ww, beq in trim_test.ww.
Consumers: Makefile LIBRARY_TESTS replaces the bytes_test.ww entry
with the five new entries at the same position; the
test/byteid/libbyteid_test.ww roster row becomes five fx rows,
NENTEXPECT 48->52 (+4).
This commit is contained in:
59
lib/bytes/contains_test.ww
Normal file
59
lib/bytes/contains_test.ww
Normal file
@@ -0,0 +1,59 @@
|
||||
// containstest — exercises bytes.contains/hasprefix/hassuffix. A
|
||||
// failing row aborts via the assert/abort builtin (task #5 @test
|
||||
// conversion). Vectors mirror ref/hare/bytes/contains.ha.
|
||||
|
||||
package bytes_test;
|
||||
|
||||
import bytes;
|
||||
|
||||
@test fn contains_cases() void = {
|
||||
let a: [4]u8; a[0] = 1u8; a[1] = 3u8; a[2] = 3u8; a[3] = 7u8;
|
||||
assert(!(!bytes.contains(a[0:4], 7u8)));
|
||||
assert(!( bytes.contains(a[0:4], 42u8)));
|
||||
let n: [2]u8; n[0] = 3u8; n[1] = 3u8;
|
||||
assert(!(!bytes.contains(a[0:4], n[0:2])));
|
||||
let m: [2]u8; m[0] = 9u8; m[1] = 9u8;
|
||||
assert(!( bytes.contains(a[0:4], m[0:2])));
|
||||
|
||||
// Variadic rows. ref/hare/bytes/contains.ha:6.
|
||||
assert(!( bytes.contains(a[0:4])));
|
||||
assert(!(!bytes.contains(a[0:4], n[0:2])));
|
||||
assert(!(!bytes.contains(a[0:4], 7u8)));
|
||||
assert(!(!bytes.contains(a[0:4], m[0:2], n[0:2], 42u8)));
|
||||
assert(!( bytes.contains(a[0:4], m[0:2], 42u8, m[0:2])));
|
||||
};
|
||||
|
||||
// ref/hare/bytes/contains.ha:25.
|
||||
|
||||
@test fn hasprefix_cases() void = {
|
||||
let z: [1]u8;
|
||||
assert(!(!bytes.hasprefix(z[0:0], z[0:0])));
|
||||
let one: [1]u8; one[0] = 0u8;
|
||||
assert(!(!bytes.hasprefix(one[0:1], z[0:0])));
|
||||
assert(!( bytes.hasprefix(z[0:0], one[0:1])));
|
||||
let a: [3]u8; a[0] = 1u8; a[1] = 2u8; a[2] = 3u8;
|
||||
let p12: [2]u8; p12[0] = 1u8; p12[1] = 2u8;
|
||||
assert(!(!bytes.hasprefix(a[0:3], p12[0:2])));
|
||||
let p11: [2]u8; p11[0] = 1u8; p11[1] = 1u8;
|
||||
assert(!( bytes.hasprefix(a[0:3], p11[0:2])));
|
||||
let pl: [4]u8; pl[0] = 1u8; pl[1] = 2u8; pl[2] = 3u8; pl[3] = 4u8;
|
||||
assert(!( bytes.hasprefix(a[0:3], pl[0:4])));
|
||||
};
|
||||
|
||||
// ref/hare/bytes/contains.ha:40.
|
||||
|
||||
@test fn hassuffix_cases() void = {
|
||||
let z: [1]u8;
|
||||
assert(!(!bytes.hassuffix(z[0:0], z[0:0])));
|
||||
let one: [1]u8; one[0] = 0u8;
|
||||
assert(!(!bytes.hassuffix(one[0:1], z[0:0])));
|
||||
assert(!( bytes.hassuffix(z[0:0], one[0:1])));
|
||||
let a: [3]u8; a[0] = 1u8; a[1] = 2u8; a[2] = 3u8;
|
||||
let s23: [2]u8; s23[0] = 2u8; s23[1] = 3u8;
|
||||
assert(!(!bytes.hassuffix(a[0:3], s23[0:2])));
|
||||
let s22: [2]u8; s22[0] = 2u8; s22[1] = 2u8;
|
||||
assert(!( bytes.hassuffix(a[0:3], s22[0:2])));
|
||||
let a4: [4]u8; a4[0] = 1u8; a4[1] = 2u8; a4[2] = 3u8; a4[3] = 4u8;
|
||||
let s234: [3]u8; s234[0] = 2u8; s234[1] = 3u8; s234[2] = 4u8;
|
||||
assert(!(!bytes.hassuffix(a4[0:4], s234[0:3])));
|
||||
};
|
||||
Reference in New Issue
Block a user