lib/test: Go external-test packages (<mod>_test); retire decimaltest (#16 PREP-a)

30 lib test files: package <mod> -> <mod>_test, the sanctioned Go-over-Hare
departure (CLAUDE.md rule-9 carve-out; white-box testing deferred, not
forbidden). decimaltest retired per .ai/rob-16-decimaltest-ruling.md: Hare
ships no decimal_test.ha (engine covered transitively); coverage migrated
losslessly into stoftest rows (all-9s carry, nd>19 pure-decimal) + ftostest
f64_roundtrip mirroring ref/hare strconv ftos_test.ha tcsf64; k=0 micro-gap
documented at site. regex_test keeps its white-box internal probes under a
documented rule-7 divergence (rehome = task #9). 922_decimal_run + its 989
byte-id row removed with the fixture.
This commit is contained in:
2026-06-10 12:11:11 +09:00
parent b795c320c9
commit 99e3393048
35 changed files with 77 additions and 306 deletions

View File

@@ -15,7 +15,7 @@
// DIRECTORY (full package: strconv.ww + decimal.ww + stof_data.ww +
// stof.ww), not the strconv.ww FILE — same rationale as decimaltest.
package strconv;
package strconv_test;
import strconv;
import os;
@@ -123,6 +123,18 @@ fn nan32(s: str) bool = {
if (!chk64("-1e-324", base.DEC, nzero)) { fail(); };
if (!chk64("5e-324", base.DEC, subn)) { fail(); };
// Decimal-engine edge probes migrated here when the white-box
// decimaltest.ww retired (#16): the external-test idiom can't reach
// strconv's unexported decimal fns, so these two black-box rows pin
// the only edges not already guaranteed transitively. C1: all-9s
// round-up carry + decimal_round dp>18 boundary. C2: nd>19 skips
// eisel-lemire, forcing the pure-decimal slow path (extra trim).
// Micro-gap (rule-7, honest): decimal_shift's k=0 early-return no-op
// is a trivial guard, not reached transitively by any slow-path input
// — consciously un-migrated, not silently dropped.
if (!chk64("9999999999999999", base.DEC, 1.0e16)) { fail(); };
if (!chk64("100000000000000000001", base.DEC, 1.0e20)) { fail(); };
if (inv64("") != 0) { fail(); };
if (inv64("0ZO") != 1) { fail(); };
if (inv64("1.23ezz") != 5) { fail(); };