lib/io tests: hand-main plumbing -> assert (@test conversion B5)
This commit is contained in:
@@ -15,13 +15,6 @@ import fmt;
|
||||
import io;
|
||||
import log;
|
||||
import memio;
|
||||
import os;
|
||||
|
||||
// signalled — bumped before each scenario so a failing exit code
|
||||
// pinpoints the offending case.
|
||||
let signalled: i32 = 0;
|
||||
|
||||
fn fail() void = { os.exit(signalled + 10); };
|
||||
|
||||
fn streq(a: str, b: str) bool = {
|
||||
if (a.len != b.len) { return false; };
|
||||
@@ -48,10 +41,10 @@ fn streq(a: str, b: str) bool = {
|
||||
let s = &mem.vt;
|
||||
let sl = log.new(s); // triggers ensureinit
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
if (log.default == nil) { fail(); };
|
||||
if (log.global == nil) { fail(); };
|
||||
if (log.global != log.default) { fail(); };
|
||||
assert(!(log.silent == nil));
|
||||
assert(!(log.default == nil));
|
||||
assert(!(log.global == nil));
|
||||
assert(!(log.global != log.default));
|
||||
};
|
||||
|
||||
// ---- lprintln to a memio sink: exact-byte assertion -------------------
|
||||
@@ -65,7 +58,7 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.lprintln(&sl.logger, "hello", 42i64);
|
||||
|
||||
if (!streq(memio.string(&mem), "hello 42\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem), "hello 42\n")));
|
||||
};
|
||||
|
||||
// ---- lprintln single-arg: no leading space, just trailing newline -----
|
||||
@@ -79,7 +72,7 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.lprintln(&sl.logger, "only");
|
||||
|
||||
if (!streq(memio.string(&mem), "only\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem), "only\n")));
|
||||
};
|
||||
|
||||
// ---- lprintln zero args: bare newline ---------------------------------
|
||||
@@ -93,7 +86,7 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.lprintln(&sl.logger);
|
||||
|
||||
if (!streq(memio.string(&mem), "\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem), "\n")));
|
||||
};
|
||||
|
||||
// ---- silent: lprintln through log.silent writes no bytes --------------
|
||||
@@ -111,11 +104,11 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
assert(!(log.silent == nil));
|
||||
|
||||
log.lprintln(log.silent, "ignored", 1i64, true);
|
||||
|
||||
if (mem.pos != 0) { fail(); };
|
||||
assert(!(mem.pos != 0));
|
||||
};
|
||||
|
||||
// ---- setlogger swap: global redirects to a new sink, then to silent --
|
||||
@@ -137,20 +130,20 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.setlogger(&sl1.logger);
|
||||
log.println("first");
|
||||
if (!streq(memio.string(&mem1), "first\n")) { fail(); };
|
||||
if (mem2.pos != 0) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem1), "first\n")));
|
||||
assert(!(mem2.pos != 0));
|
||||
|
||||
log.setlogger(&sl2.logger);
|
||||
log.println("second");
|
||||
if (!streq(memio.string(&mem2), "second\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem2), "second\n")));
|
||||
// mem1 must be unchanged.
|
||||
if (!streq(memio.string(&mem1), "first\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem1), "first\n")));
|
||||
|
||||
log.setlogger(log.silent);
|
||||
log.println("dropped");
|
||||
// Both sinks unchanged.
|
||||
if (!streq(memio.string(&mem1), "first\n")) { fail(); };
|
||||
if (!streq(memio.string(&mem2), "second\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem1), "first\n")));
|
||||
assert(!(!streq(memio.string(&mem2), "second\n")));
|
||||
};
|
||||
|
||||
// ---- lprintfln: {n}-placeholder render into a memio sink -------------
|
||||
@@ -164,7 +157,7 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.lprintfln(&sl.logger, "x={} y={}", 42i64, "hi");
|
||||
|
||||
if (!streq(memio.string(&mem), "x=42 y=hi\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem), "x=42 y=hi\n")));
|
||||
};
|
||||
|
||||
// ---- printfln through global: setlogger then dispatch ---------------
|
||||
@@ -184,8 +177,8 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.setlogger(&sl1.logger);
|
||||
log.printfln("v={}", 7i64);
|
||||
if (!streq(memio.string(&mem1), "v=7\n")) { fail(); };
|
||||
if (mem2.pos != 0) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem1), "v=7\n")));
|
||||
assert(!(mem2.pos != 0));
|
||||
};
|
||||
|
||||
// ---- silent.printfln writes nothing ---------------------------------
|
||||
@@ -200,11 +193,11 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
assert(!(log.silent == nil));
|
||||
|
||||
log.lprintfln(log.silent, "ignored={}", 1i64);
|
||||
|
||||
if (mem.pos != 0) { fail(); };
|
||||
assert(!(mem.pos != 0));
|
||||
};
|
||||
|
||||
// ---- lprintfln: indexed {N} placeholder across log → fmt seam -------
|
||||
@@ -221,7 +214,7 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.lprintfln(&sl.logger, "{1} {0}", "a", "b");
|
||||
|
||||
if (!streq(memio.string(&mem), "b a\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem), "b a\n")));
|
||||
};
|
||||
|
||||
// ---- lprintfln: {:mods} modifier across log → fmt seam --------------
|
||||
@@ -237,7 +230,7 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
log.lprintfln(&sl.logger, "{:5}", 42i64);
|
||||
|
||||
if (!streq(memio.string(&mem), " 42\n")) { fail(); };
|
||||
assert(!(!streq(memio.string(&mem), " 42\n")));
|
||||
};
|
||||
|
||||
// TODO subprocess: log.fatal / log.lfatal / log.fatalf / log.lfatalf
|
||||
@@ -247,16 +240,16 @@ fn streq(a: str, b: str) bool = {
|
||||
// when that lands.
|
||||
|
||||
export fn main() i32 = {
|
||||
signalled = 1; defaultwiredtoglobal();
|
||||
signalled = 2; lprintlnbasic();
|
||||
signalled = 3; lprintlnsingle();
|
||||
signalled = 4; lprintlnempty();
|
||||
signalled = 5; silentwritesnothing();
|
||||
signalled = 6; setloggerswap();
|
||||
signalled = 7; lprintflnbasic();
|
||||
signalled = 8; printflnglobal();
|
||||
signalled = 9; silentignoresprintfln();
|
||||
signalled = 10; lprintflnindexed();
|
||||
signalled = 11; lprintflnmods();
|
||||
defaultwiredtoglobal();
|
||||
lprintlnbasic();
|
||||
lprintlnsingle();
|
||||
lprintlnempty();
|
||||
silentwritesnothing();
|
||||
setloggerswap();
|
||||
lprintflnbasic();
|
||||
printflnglobal();
|
||||
silentignoresprintfln();
|
||||
lprintflnindexed();
|
||||
lprintflnmods();
|
||||
return 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user