stage2 更多的工具库 stage1 修复问题

This commit is contained in:
zzy committed 2026-09-18 10:10:53 +08:00
1 parent 16a1f030d4
commit b3e38ba7e4
28 files changed
+2274 -523

No files matched your search

+8 -10
View File
@@ -138,6 +138,7 @@ fn expect_text(s: *Str, expected: []u8) {
fn test_construction() {
var s = new();
defer { drop(&s); }
@assert(is_empty(s) && size(s) == 0, "empty new");
expect_ok(append(&s, "hello"));
expect_ok(append_byte(&s, ' '));
@@ -154,18 +155,19 @@ fn test_construction() {
},
.Err(error) => { @assert(false, "from_slice"); },
}
drop(&s);
}
fn test_compare_and_search() {
var hello_r = from_slice("hello");
var hello: Str = new();
defer { drop(&hello); }
match hello_r {
.Ok(v) => { hello = v; },
.Err(error) => { @assert(false, "hello"); },
}
var help_r = from_slice("help");
var help: Str = new();
defer { drop(&help); }
match help_r {
.Ok(v) => { help = v; },
.Err(error) => { @assert(false, "help"); },
@@ -181,12 +183,14 @@ fn test_compare_and_search() {
@assert(ends_with(hello, hello), "ends_with");
var pre_r = from_slice("he");
var pre: Str = new();
defer { drop(&pre); }
match pre_r { .Ok(v) => { pre = v; }, .Err(e) => { @assert(false, "pre"); } }
@assert(starts_with(hello, pre), "starts he");
@assert(!ends_with(hello, pre), "!ends he");
var needle_r = from_slice("ll");
var needle: Str = new();
defer { drop(&needle); }
match needle_r { .Ok(v) => { needle = v; }, .Err(e) => { @assert(false, "needle"); } }
match find(hello, needle) {
.Found(index) => { @assert(index == 2, "find ll"); },
@@ -196,18 +200,15 @@ fn test_compare_and_search() {
.Found(index) => { @assert(index == 0, "find he"); },
.NotFound => { @assert(false, "he not found"); },
}
drop(&needle);
drop(&pre);
drop(&help);
drop(&hello);
}
fn test_clone_take_and_failures() {
var source = new();
defer { drop(&source); }
expect_ok(append(&source, "owned"));
var copy = new();
defer { drop(&copy); }
expect_ok(clone(&copy, source));
expect_text(&copy, "owned");
expect_ok(append_byte(&source, '!')); // '!'
@@ -219,16 +220,13 @@ fn test_clone_take_and_failures() {
expect_text(&copy, "owned");
var moved = take(&copy);
defer { drop(&moved); }
@assert(ByteBuffer.size(copy.storage) == 0 && ByteBuffer.capacity(copy.storage) == 0,
"take empties source");
expect_text(&moved, "owned");
clear(&moved);
@assert(is_empty(moved) && ByteBuffer.capacity(moved.storage) != 0, "clear keeps capacity");
drop(&moved);
drop(&copy);
drop(&source);
}
fn main() {