lib+test: bufio rename bstream → stream
Validates the #15 same-leaf-name cross-module type fix (9d85aa4):
`bufio.stream` and `io.stream` now coexist on a `use bufio; use io;`
surface — bufiotest.ww references both in the same scope (e.g.
`let m: io.stream; let b: bufio.stream;`) and compiles clean.
Lifts the bufio-side workaround that bstream existed to dodge.
@test fns rename in lockstep (bstreamsmallwrite → streamsmallwrite,
etc.). Also tidies the stale "until #21 lands" parenthetical in
test/wcc/696_modtype_leaf_collision.c, since #21 is this commit.
make test: 54/54; bootstrap fixed-point 990–997 holds.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
// The scanner @tests enumerate parallel `[N]T` arrays of inputs and
|
||||
// expectations, then iterate one body across them. Parallel arrays
|
||||
// (rather than `[N]struct{...}`) match the same cgen workaround
|
||||
// memiotest leans on. The bstream @tests are one scenario per fn
|
||||
// memiotest leans on. The stream @tests are one scenario per fn
|
||||
// (the ww-stdlib idiom): the "table" is the fn list in main, not
|
||||
// a row array.
|
||||
|
||||
@@ -402,15 +402,15 @@ fn closedstream(s: *io.stream) void = {
|
||||
bufio.finish(&sc);
|
||||
};
|
||||
|
||||
// ---- bstream init + flush round-trip ---------------------------------
|
||||
// ---- stream init + flush round-trip ---------------------------------
|
||||
|
||||
@test fn bstreamsmallwrite() void = {
|
||||
@test fn streamsmallwrite() void = {
|
||||
let raw: [16]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:16]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [8]u8;
|
||||
let wb: [8]u8;
|
||||
bufio.init(&b, &m, rb[0:8], wb[0:8]);
|
||||
@@ -438,13 +438,13 @@ fn closedstream(s: *io.stream) void = {
|
||||
|
||||
// ---- write larger than wbuf → auto-flush -----------------------------
|
||||
|
||||
@test fn bstreamautoflush() void = {
|
||||
@test fn streamautoflush() void = {
|
||||
let raw: [32]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:32]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [4]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:4]);
|
||||
@@ -478,13 +478,13 @@ fn closedstream(s: *io.stream) void = {
|
||||
// the payload contains any byte from b.flush. No setflush call —
|
||||
// this exercises the default. Mirrors Hare's flag::NONE default
|
||||
// (ref/hare/bufio/stream.ha:75 + 100).
|
||||
@test fn bstreamlineflush() void = {
|
||||
@test fn streamlineflush() void = {
|
||||
let raw: [32]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:32]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [16]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:16]);
|
||||
@@ -520,13 +520,13 @@ fn closedstream(s: *io.stream) void = {
|
||||
// to drain after every write is a manual flush call. Setflush to
|
||||
// an empty byte-set first so the default '\n' detector doesn't
|
||||
// shadow what we're testing.
|
||||
@test fn bstreamflushonwrite() void = {
|
||||
@test fn streamflushonwrite() void = {
|
||||
let raw: [32]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:32]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [16]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:16]);
|
||||
@@ -563,15 +563,15 @@ fn closedstream(s: *io.stream) void = {
|
||||
if (raw[2] != 65u8) { fail(); };
|
||||
};
|
||||
|
||||
// ---- isbuffered: bstream → true, plain memio → false -----------------
|
||||
// ---- isbuffered: stream → true, plain memio → false -----------------
|
||||
|
||||
@test fn bstreamisbuffered() void = {
|
||||
@test fn streamisbuffered() void = {
|
||||
let raw: [8]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:8]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [4]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:4]);
|
||||
@@ -582,7 +582,7 @@ fn closedstream(s: *io.stream) void = {
|
||||
|
||||
// ---- bread + unread: pushed-back bytes come out first ----------------
|
||||
|
||||
@test fn bstreamunread() void = {
|
||||
@test fn streamunread() void = {
|
||||
let raw: [8]u8;
|
||||
let n: i32 = putstr("ABCDEFGH", raw[0:8], 0);
|
||||
|
||||
@@ -590,7 +590,7 @@ fn closedstream(s: *io.stream) void = {
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:n]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [8]u8;
|
||||
let wb: [4]u8;
|
||||
bufio.init(&b, &m, rb[0:8], wb[0:4]);
|
||||
@@ -634,14 +634,14 @@ fn closedstream(s: *io.stream) void = {
|
||||
if (out[3] != 71u8) { fail(); }; // 'G'
|
||||
};
|
||||
|
||||
// ---- scanner over a bstream-wrapped src: pre-read unread + scanline --
|
||||
// ---- scanner over a stream-wrapped src: pre-read unread + scanline --
|
||||
|
||||
// Push three bytes into a freshly-init'd bstream (rstart=rend=rbuf.len
|
||||
// Push three bytes into a freshly-init'd stream (rstart=rend=rbuf.len
|
||||
// post-init, per Hare bufio/stream.ha:101 — the unread budget before
|
||||
// the first read is the full rbuf), then scan a line through the
|
||||
// bstream. The scanner pulls "XYZ" from rbuf first, refills "hello\n"
|
||||
// stream. The scanner pulls "XYZ" from rbuf first, refills "hello\n"
|
||||
// from src, and scanline returns "XYZhello".
|
||||
@test fn bstreamscannerunread() void = {
|
||||
@test fn streamscannerunread() void = {
|
||||
let raw: [16]u8;
|
||||
let n: i32 = putstr("hello\n", raw[0:16], 0);
|
||||
|
||||
@@ -649,7 +649,7 @@ fn closedstream(s: *io.stream) void = {
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:n]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [16]u8;
|
||||
let wb: [4]u8;
|
||||
bufio.init(&b, &m, rb[0:16], wb[0:4]);
|
||||
@@ -679,13 +679,13 @@ fn closedstream(s: *io.stream) void = {
|
||||
|
||||
// ---- flush() on empty wbuf is a no-op --------------------------------
|
||||
|
||||
@test fn bstreamflushempty() void = {
|
||||
@test fn streamflushempty() void = {
|
||||
let raw: [8]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:8]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [4]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:4]);
|
||||
@@ -700,16 +700,16 @@ fn closedstream(s: *io.stream) void = {
|
||||
|
||||
// ---- bclose drains pending wbuf then forwards close to src ----------
|
||||
|
||||
// io.close on the bstream vtable must run the flush path (Hare
|
||||
// io.close on the stream vtable must run the flush path (Hare
|
||||
// stream.ha:188-202). Buffer two bytes, route io.close through the
|
||||
// bstream, and confirm both reach src.
|
||||
@test fn bstreamcloseflushes() void = {
|
||||
// stream, and confirm both reach src.
|
||||
@test fn streamcloseflushes() void = {
|
||||
let raw: [8]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:8]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [4]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:4]);
|
||||
@@ -741,13 +741,13 @@ fn closedstream(s: *io.stream) void = {
|
||||
// setflush installs a fresh byte-set (not just clears it). Use ' '
|
||||
// (space) as the trigger; "ab cd" must flush at the space, leaving
|
||||
// "cd" pending.
|
||||
@test fn bstreamsetflushcustom() void = {
|
||||
@test fn streamsetflushcustom() void = {
|
||||
let raw: [16]u8;
|
||||
let mem: memio.state;
|
||||
let m: io.stream;
|
||||
memio.fixed(&mem, &m, raw[0:16]);
|
||||
|
||||
let b: bufio.bstream;
|
||||
let b: bufio.stream;
|
||||
let rb: [4]u8;
|
||||
let wb: [16]u8;
|
||||
bufio.init(&b, &m, rb[0:4], wb[0:16]);
|
||||
@@ -780,15 +780,15 @@ export fn main() i32 = {
|
||||
signalled = 6; closedsource();
|
||||
signalled = 7; boundarycases();
|
||||
signalled = 8; multifill();
|
||||
signalled = 9; bstreamsmallwrite();
|
||||
signalled = 10; bstreamautoflush();
|
||||
signalled = 11; bstreamlineflush();
|
||||
signalled = 12; bstreamflushonwrite();
|
||||
signalled = 13; bstreamisbuffered();
|
||||
signalled = 14; bstreamunread();
|
||||
signalled = 15; bstreamscannerunread();
|
||||
signalled = 16; bstreamflushempty();
|
||||
signalled = 17; bstreamcloseflushes();
|
||||
signalled = 18; bstreamsetflushcustom();
|
||||
signalled = 9; streamsmallwrite();
|
||||
signalled = 10; streamautoflush();
|
||||
signalled = 11; streamlineflush();
|
||||
signalled = 12; streamflushonwrite();
|
||||
signalled = 13; streamisbuffered();
|
||||
signalled = 14; streamunread();
|
||||
signalled = 15; streamscannerunread();
|
||||
signalled = 16; streamflushempty();
|
||||
signalled = 17; streamcloseflushes();
|
||||
signalled = 18; streamsetflushcustom();
|
||||
return 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user