•internal.Indistinguishable-based _eqvar

This commit is contained in:
dzaima 2025-05-28 00:10:53 +03:00
parent 650c5b9171
commit 46c2578c73
6 changed files with 44 additions and 8 deletions

View File

@ -1,6 +1,6 @@
%DEF var V•internal.Variation LV•internal.ListVariations CLR•internal.ClearRefs
%DEF tvar %USE var _tvar {F _𝕣 x: (CLR@) {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (CLR@) (LV 𝕨) {(𝕨 V w) F 𝕩 V x} LV 𝕩}
%DEF eqvar %USE tvar _eqvar {r 𝕨 𝔽 _tvar 𝕩 "failed eqvar"!•internal.EEqual(r)¨ r r}
%DEF eqvar LV•internal.ListVariations _eqvar0_•args _eqvar {𝔽 _eqvar0_ LV}
%DEF evar %USE tvar _evar {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} _tvar 𝕩 {okr? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF eqerr %USE eqvar _eqerr {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} 𝕩 {okr? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF k _k {𝔽•internal.Keep}

View File

@ -1,6 +1,6 @@
%DEF var V•internal.Variation LV•internal.ListVariations CLR•internal.ClearRefs
%DEF tvar %USE var _tvar {F _𝕣 x: (CLR@) {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (CLR@) (LV 𝕨) {(𝕨 V w) F 𝕩 V x} LV 𝕩}
%DEF eqvar %USE tvar _eqvar {r 𝕨 𝔽 _tvar 𝕩 !(r)¨ r r}
%DEF eqvar LV•internal.ListVariations _eqvar0_•args _eqvar {𝔽 _eqvar0_ LV}
(
%USE eqvar

View File

@ -1,6 +1,6 @@
%DEF var V•internal.Variation LV•internal.ListVariations CLR•internal.ClearRefs
%DEF tvar %USE var _tvar {F _𝕣 x: (CLR@) {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (CLR@) (LV 𝕨) {(𝕨 V w) F 𝕩 V x} LV 𝕩}
%DEF eqvar %USE tvar _eqvar {r 𝕨 𝔽 _tvar 𝕩 "failed eqvar"!•internal.EEqual(r)¨ r r}
%DEF eqvar LV•internal.ListVariations _eqvar0_•args _eqvar {𝔽 _eqvar0_ LV}
%DEF evar %USE tvar _evar {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} _tvar 𝕩 {okr? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF eqerr %USE eqvar _eqerr {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} 𝕩 {okr? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF k _k {𝔽•internal.Keep}

View File

@ -1,6 +1,6 @@
%DEF var V•internal.Variation LV•internal.ListVariations CLR•internal.ClearRefs
%DEF tvar %USE var _tvar {F _𝕣 x: (CLR@) {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (CLR@) (LV 𝕨) {(𝕨 V w) F 𝕩 V x} LV 𝕩}
%DEF eqvar %USE tvar _eqvar {r 𝕨 𝔽 _tvar 𝕩 "failed eqvar"!•internal.EEqual(r)¨ r r}
%DEF eqvar LV•internal.ListVariations _eqvar0_•args _eqvar {𝔽 _eqvar0_ LV}
# not tested here: •Out •Show •Exit •GetLine •Cmp •CurrentError •FFI •internal.HeapDump
@ -73,10 +73,10 @@ f←•ReBQN{system⇐⟨"e1"⋈↕0, "e2"⋈"", "e3"⋈0⥊<"hi"⟩ ⋄ primiti
!¨ (•Type¨1¨•primitives)345
# •state
6(1) •file.Name •state %% "testDir","system","arg0",1
6(1) 1(2) •file.Name •state %% "testDir","system","arg0",1
# •args
•args %% "arg0",1
1•args %% "arg0",1
# •path & •file.path
•file.Name •path %% "testDir"

View File

@ -1,6 +1,6 @@
%DEF var V•internal.Variation LV•internal.ListVariations CLR•internal.ClearRefs
%DEF tvar %USE var _tvar {F _𝕣 x: (CLR@) {F 𝕩 V x}¨ LV 𝕩; w F _𝕣 x: (CLR@) (LV 𝕨) {(𝕨 V w) F 𝕩 V x} LV 𝕩}
%DEF eqvar %USE tvar _eqvar {r 𝕨 𝔽 _tvar 𝕩 "failed eqvar"!•internal.EEqual(r)¨ r r}
%DEF eqvar LV•internal.ListVariations _eqvar0_•args _eqvar {𝔽 _eqvar0_ LV}
%DEF evar %USE tvar _evar {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} _tvar 𝕩 {okr? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
%DEF eqerr %USE eqvar _eqerr {ok{} r𝕨 ok𝔽{𝕊: •CurrentError@} 𝕩 {okr? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages" ! 1=)r (r)!0}}
# ¨ & ˘

View File

@ -148,7 +148,7 @@ Run ← { 𝕊 testname:
badCount+ 1
}
ErrMsg {𝕊: m•CurrentError@ {1==m? ´2=•Type¨m? m; •Repr"(unrepresentable)" m}}
Eval {dir, testname,"_line_",•Repr currLn+1,".bqn", "arg0",1 •BQN 𝕩}
Eval {dir, testname,"_line_",•Repr currLn+1,".bqn", helpers,"arg0",1 •BQN 𝕩}
EvalS •BQN{𝕊: Bad "Bad comparison value" "(bad)"}
toRun tests
toRun {{𝕩.enabled}¨/𝕩}
@ -207,6 +207,42 @@ Run ← { 𝕊 testname:
}
}o.run @
}
helpers {
TVVariation, CLRClearRefs, HasFill, EEqual •internal
indistinguishable {IIndistinguishable: I; EEqual} •internal
_tvar0_ {
F _𝕣_ LV x: (CLR@) { F 𝕩 TV x}¨ LV 𝕩;
w F _𝕣_ LV x: (CLR@) (LV 𝕨) {(𝕨 TV w) F 𝕩 TV x} LV 𝕩
}
{o.heapverify? IndistinguishableEEqual; @}
Classify {(𝕩) Indistinguishable˜ 𝕩}
_eqvar0_ { LV 𝔾
r 𝕨 𝔽 _tvar0_ 𝔾 𝕩
class {·𝕊·: 𝕨+2×𝕩; 𝕊·: 𝕩} c0(r) {HasFill 𝕩? 'h' = 1¨ LV 𝕩; 𝕨0}¨ args𝕨𝕩
(r)("failed eqvar eequal" ! EEqual)¨ 1r
{
c0 𝕩
{
c0 Indistinguishable 𝕩?
1;
classes {
a: (@+10) •Fmt "type""class" ˘ a Classify r;
wcxc:
wvxv LV¨ args
wcxc+'A'
"row=type of 𝕨, col=type of 𝕩:" @+10,' ',' '¨ "\|",xc," ==",' '¨xv (wc¨wv) {cv𝕊𝕩: c '|' 𝕩 ' ' v}¨ <˘ '0'+Classify r
} c0
! "TEST FAIL: _eqvar0_ failed: "classes
}¨ 𝕩
}¨ class r
r
}
}
Run¨ SearchRefine o.files
•Exit(0)(¬o.heapverify) exitCode