Pure move: the hasprefix/hassuffix, contains, byteindex/rbyteindex/
index/rindex, and compare sections of strings_test.ww become sibling
suffix_test.ww, contains_test.ww, index_test.ww, compare_test.ww,
mirroring ref/hare/strings/{suffix,contains,index,compare}.ha
ownership. Blocks are byte-identical; only the section banner lines
are deleted (the file names now carry them).
The remaining families (dup, concat, trim, sub, utf8, iter, tokenize,
pad, replace, cut) stay in strings_test.ww: they all consume the
file-local streq helper, and a helper cannot be shared across split
test files — a single-file test root does not pull same-package
siblings (undefined: helper), while dir-mode composes all package
test files into one unit (duplicate fn helper). Splitting them would
force either helper duplication or renames, both out of scope for a
pure move.
Consumers: Makefile LIBRARY_TESTS gains the four new entries beside
the strings_test.ww row; test/byteid/libbyteid_test.ww roster gains
four fx rows, NENTEXPECT 44->48 (+4).
34 lines
1.3 KiB
Plaintext
34 lines
1.3 KiB
Plaintext
// suffixtest — exercises strings.hasprefix/hassuffix. A failing row
|
|
// aborts via the assert/abort builtin (task #5 @test conversion).
|
|
// Vectors mirror ref/hare/strings/suffix.ha.
|
|
|
|
package strings_test;
|
|
|
|
import strings;
|
|
|
|
// ref/hare/strings/suffix.ha:18.
|
|
|
|
@test fn hasprefix_cases() void = {
|
|
assert(!(!strings.hasprefix("hello world", "hello")));
|
|
assert(!(!strings.hasprefix("hello world", 'h')));
|
|
assert(!( strings.hasprefix("hello world", "world")));
|
|
assert(!( strings.hasprefix("hello world", 'q')));
|
|
assert(!(!strings.hasprefix("hello", "hello"))); // equal-len
|
|
assert(!(!strings.hasprefix("anything", ""))); // empty prefix
|
|
assert(!( strings.hasprefix("", "x")));
|
|
// multibyte rune prefix — '\'é\'' literal blocked by single-byte
|
|
// lexrune (lib/ww/lex/lex.ww:659); pass codepoint directly.
|
|
assert(!(!strings.hasprefix("éclat", 0xE9u32: rune)));
|
|
assert(!(!strings.hasprefix("🦀rust", 0x1F980u32: rune)));
|
|
};
|
|
|
|
// ref/hare/strings/suffix.ha:36.
|
|
|
|
@test fn hassuffix_cases() void = {
|
|
assert(!(!strings.hassuffix("hello world", "world")));
|
|
assert(!(!strings.hassuffix("hello world", 'd')));
|
|
assert(!( strings.hassuffix("hello world", "hello")));
|
|
assert(!( strings.hassuffix("hello world", 'h')));
|
|
assert(!(!strings.hassuffix("café", 0xE9u32: rune))); // multibyte
|
|
};
|