•internal.Indistinguishable-based _eqvar
This commit is contained in:
parent
650c5b9171
commit
46c2578c73
@ -1,6 +1,6 @@
|
|||||||
%DEF var V←•internal.Variation ⋄ LV←•internal.ListVariations ⋄ CLR←•internal.ClearRefs
|
%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 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 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
%DEF evar %USE tvar ⋄ _evar ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@} _tvar 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
||||||
%DEF eqerr %USE eqvar ⋄ _eqerr ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@}⌜ 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
%DEF eqerr %USE eqvar ⋄ _eqerr ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@}⌜ 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
||||||
%DEF k _k ← {𝔽○•internal.Keep}
|
%DEF k _k ← {𝔽○•internal.Keep}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
%DEF var V←•internal.Variation ⋄ LV←•internal.ListVariations ⋄ CLR←•internal.ClearRefs
|
%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 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
|
%USE eqvar
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
%DEF var V←•internal.Variation ⋄ LV←•internal.ListVariations ⋄ CLR←•internal.ClearRefs
|
%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 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 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
%DEF evar %USE tvar ⋄ _evar ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@} _tvar 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
||||||
%DEF eqerr %USE eqvar ⋄ _eqerr ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@}⌜ 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
%DEF eqerr %USE eqvar ⋄ _eqerr ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@}⌜ 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
||||||
%DEF k _k ← {𝔽○•internal.Keep}
|
%DEF k _k ← {𝔽○•internal.Keep}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
%DEF var V←•internal.Variation ⋄ LV←•internal.ListVariations ⋄ CLR←•internal.ClearRefs
|
%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 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
|
# 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)∊3‿4‿5
|
!¨ (•Type¨1⊑¨•primitives)∊3‿4‿5
|
||||||
|
|
||||||
# •state
|
# •state
|
||||||
6⊸↑⌾(1⊸⊑) •file.Name⌾⊑ •state %% ⟨"testDir","system",⟨"arg0",1⟩⟩
|
6⊸↑⌾(1⊸⊑) 1⊸↓⌾(2⊸⊑) •file.Name⌾⊑ •state %% ⟨"testDir","system",⟨"arg0",1⟩⟩
|
||||||
|
|
||||||
# •args
|
# •args
|
||||||
•args %% ⟨"arg0",1⟩
|
1↓•args %% ⟨"arg0",1⟩
|
||||||
|
|
||||||
# •path & •file.path
|
# •path & •file.path
|
||||||
•file.Name •path %% "testDir"
|
•file.Name •path %% "testDir"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
%DEF var V←•internal.Variation ⋄ LV←•internal.ListVariations ⋄ CLR←•internal.ClearRefs
|
%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 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 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
%DEF evar %USE tvar ⋄ _evar ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@} _tvar 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: variation didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
||||||
%DEF eqerr %USE eqvar ⋄ _eqerr ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@}⌜ 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
%DEF eqerr %USE eqvar ⋄ _eqerr ← {ok←{⇐} ⋄ r←⥊𝕨 ok∘𝔽⎊{𝕊: •CurrentError@}⌜ 𝕩 ⋄ {⊑ok∊r? !"TEST FAIL: case didn't error"; ("TEST FAIL: varying error messages"⊸⋈ ! 1=≠)⍷r ⋄ (⊑r)!0}}
|
||||||
# ¨ & ˘
|
# ¨ & ˘
|
||||||
|
|||||||
38
test/run.bqn
38
test/run.bqn
@ -148,7 +148,7 @@ Run ← { 𝕊 testname:
|
|||||||
badCount+↩ 1
|
badCount+↩ 1
|
||||||
}
|
}
|
||||||
ErrMsg ← {𝕊: m←•CurrentError@ ⋄ {1==m? ∧´2=•Type¨m? m; •Repr⎊"(unrepresentable)" m}}
|
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)"}
|
EvalS ← •BQN⎊{𝕊: Bad "Bad comparison value" ⋄ "(bad)"}
|
||||||
toRun ← tests
|
toRun ← tests
|
||||||
toRun {{𝕩.enabled}∘⊑¨⊸/𝕩}↩
|
toRun {{𝕩.enabled}∘⊑¨⊸/𝕩}↩
|
||||||
@ -207,6 +207,42 @@ Run ← { 𝕊 testname:
|
|||||||
}
|
}
|
||||||
}⍟o.run @
|
}⍟o.run @
|
||||||
}
|
}
|
||||||
|
|
||||||
|
helpers ← {
|
||||||
|
⟨TV⇐Variation, CLR⇐ClearRefs, HasFill, EEqual⟩ ← •internal
|
||||||
|
indistinguishable ← {⟨I⇐Indistinguishable⟩: 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? Indistinguishable↩EEqual; @}
|
||||||
|
Classify ← {(≢𝕩)⥊ ⊐Indistinguishable⌜˜ ⥊𝕩}
|
||||||
|
|
||||||
|
_eqvar0_ ⇐ { LV ← 𝔾
|
||||||
|
r ← 𝕨 𝔽 _tvar0_ 𝔾 𝕩
|
||||||
|
class ← {·𝕊·: 𝕨+2×𝕩; 𝕊·: 𝕩} c0←(≢r) {HasFill 𝕩? 'h' = 1⊸⊑¨ LV 𝕩; 𝕨⥊0}¨ args←𝕨⋈𝕩
|
||||||
|
(⊑r)⊸("failed eqvar eequal" ! EEqual)¨ 1↓⥊r
|
||||||
|
{
|
||||||
|
c0 ← ⊑𝕩
|
||||||
|
{
|
||||||
|
c0 Indistinguishable 𝕩?
|
||||||
|
1;
|
||||||
|
|
||||||
|
classes ← {
|
||||||
|
⟨a⟩: (@+10)∾ •Fmt "type"‿"class" ∾˘ a ≍ Classify r;
|
||||||
|
wc‿xc:
|
||||||
|
wv‿xv ← LV¨ args
|
||||||
|
wc‿xc+↩'A'
|
||||||
|
"row=type of 𝕨, col=type of 𝕩:" ∾ ∾⟨@+10,' ',' '⟩⊸∾¨ ⟨∾⟨"\|",xc," ==",∾' '⊸∾¨xv⟩⟩ ∾ (wc⋈¨wv) {c‿v𝕊𝕩: c ∾ '|' ∾ 𝕩 ∾ ' ' ∾ v}¨ <˘ '0'+Classify r
|
||||||
|
} c0
|
||||||
|
! "TEST FAIL: _eqvar0_ failed: "∾classes
|
||||||
|
}¨ 𝕩
|
||||||
|
}¨ class ⊔ r
|
||||||
|
⊑r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Run¨ SearchRefine o.files
|
Run¨ SearchRefine o.files
|
||||||
|
|
||||||
•Exit⍟(0⊸≠)⍟(¬o.heapverify) exitCode
|
•Exit⍟(0⊸≠)⍟(¬o.heapverify) exitCode
|
||||||
Loading…
Reference in New Issue
Block a user