diff --git a/test/cases/cells.bqn b/test/cases/cells.bqn index 69faab23..f040f42f 100644 --- a/test/cases/cells.bqn +++ b/test/cases/cells.bqn @@ -1,5 +1,10 @@ +%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 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}} +%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}} %DEF k _k ← {𝔽○•internal.Keep} -%DEF tcc %USE k ⋄ _tcc ← { ! ∧´ (<𝕨 𝔽_k˘⎊'e' 𝕩) ≡¨ (𝕨 𝔽˘⎊'e'•internal.Variation⟜𝕩)¨ "i"•internal.ListVariations 𝕩} +%DEF tcc %USE k ⋄ %USE var ⋄ _tcc ← { ! ∧´ (<𝕨 𝔽_k˘⎊'e' 𝕩) ≡¨ (𝕨 𝔽˘⎊'e'V⟜𝕩)¨ "i"LV𝕩} 1‿2 1⎉0 1 %% 1‿1 1 1⎉0 1‿2 %% 1‿1 @@ -78,6 +83,11 @@ %USE tcc ⋄ ⊏_tcc 4‿2⥊↕8 ⋄ 1⊏_tcc 4‿2⥊↕8 ⋄ ⊏_tcc ↕4‿2 ⋄ 1⊏_tcc ↕4‿2 %USE tcc ⋄ ⊑_tcc 4‿2⥊↕8 ⋄ 1⊑_tcc 4‿2⥊↕8 ⋄ ⊑_tcc ↕4‿2 ⋄ 1⊑_tcc ↕4‿2 +%USE eqvar ⋄ 0‿0‿0‿0 {𝕨⊸⊏˘𝕩}_eqvar ≍˘↕5 %% 5‿4⥊⌊4÷˜↕20 +%USE eqvar ⋄ 0‿¯1‿0‿¯1 {𝕨⊸⊏˘𝕩}_eqvar ≍˘↕5 %% 5‿4⥊⌊4÷˜↕20 +!"⊏: Indexing out-of-bounds (1∊𝕨, 1≡≠𝕩)" % %USE evar ⋄ 0‿¯1‿1‿¯1 {𝕨⊸⊏˘𝕩}_evar ≍˘↕5 +!"⊏: Indexing out-of-bounds (¯2∊𝕨, 1≡≠𝕩)" % %USE evar ⋄ 0‿¯1‿¯2‿¯1 {𝕨⊸⊏˘𝕩}_evar ≍˘↕5 + ( %USE IS_HEAPVERIFY # big ˝˘ & `˘ tester diff --git a/test/cases/fuzz/select-cells.bqn b/test/cases/fuzz/select-cells.bqn new file mode 100644 index 00000000..2c834d8a --- /dev/null +++ b/test/cases/fuzz/select-cells.bqn @@ -0,0 +1,35 @@ +%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} + +( + %USE eqvar + LV ↩ ""⊸LV + Test ← { 𝕊: + x ← (2•rand.Range 50)•rand.Range 100 + w ← {0: ↕0; (1+•rand.Range 50) •rand.Range 𝕩} 1⊑≢x + w {𝕨⊸⊏˘ 𝕩}_eqvar x + } + + Test¨ ↕1000 +) + +( + Test ← {𝕊 gen: + { 𝕊 cam: + { + i ← •rand.Range∘3◶⟨⊢, ¯1⊸-, {𝕩 - (1+2×𝕩) × 2•rand.Range˜≠𝕩}⟩ 𝕨 •rand.Range 𝕩 + ! (i⊸⊏˘ ≡ i⊸⊏○•internal.Keep˘) Gen cam‿𝕩 + }⌜˜ 1↓⍷(↕20)∾⌊(√2)⋆↕16 + }¨ 1‿6‿100 + } + + Test {{0 + 𝕩 •rand.Range 100}} + Test {{0 + 𝕩 •rand.Range 1000}} + Test {{0 + 𝕩 •rand.Range 1e9}} + Test {{0 + 𝕩 •rand.Range 0}} + + Test {{@ + 𝕩 •rand.Range 100}} + Test {{@ + 𝕩 •rand.Range 1000}} + Test {{@ + 𝕩 •rand.Range 1114111}} +)