aboutsummaryrefslogtreecommitdiff
path: root/test/cases
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-12-14 20:21:15 -0500
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-12-14 20:21:15 -0500
commitd4702524bc6f8279a9fe6f6739183216c07913bf (patch)
treefc5d66563fb8f465fd286c1aba41b31265ba762b /test/cases
parent5157ac6cb4518c152a2124c73241dc62cf19e59b (diff)
Move test cases to their own directory
Diffstat (limited to 'test/cases')
-rw-r--r--test/cases/prim.bqn300
-rw-r--r--test/cases/simple.bqn20
-rw-r--r--test/cases/syntax.bqn48
3 files changed, 368 insertions, 0 deletions
diff --git a/test/cases/prim.bqn b/test/cases/prim.bqn
new file mode 100644
index 00000000..03df0500
--- /dev/null
+++ b/test/cases/prim.bqn
@@ -0,0 +1,300 @@
+# Tests of primitive functionality
+# Ordering matches the reference implementations
+
+# LAYER 0
+0≡¯2+2
+1e4≡5e3+5e3
+¯∞≡1e6-∞
+4≡-¯4
+¯∞≡-∞
+∞≡-¯∞
+4≡9-5
+1.5≡3×0.5
+4≡÷0.25
+∞≡÷0
+0≡÷∞
+1≡⋆0
+¯1≡¯1⋆5
+1≡¯1⋆¯6
+3≡⌊3.9
+¯4≡⌊¯3.9
+∞≡⌊∞
+¯∞≡⌊¯∞
+¯1e30≡⌊¯1e30
+1≡1=1
+0≡¯1=∞
+1≡1≤1
+1≡¯∞≤¯1e3
+0≡∞≤¯∞
+⟨⟩≡≢<2
+⟨3⟩≡≢"abc"
+⟨2,3⟩≡≢>"abc"‿"fed"
+⟨2,3,4,5⟩≡≢2‿3‿4‿5⥊↕120
+⟨6⟩≡≢⥊>"abc"‿"fed"
+"abc"≡0⊑"abc"‿"de"
+"de"≡1⊑"abc"‿"de"
+⟨⟩≡↕0
+⟨0⟩≡↕1
+⟨0,1,2,3,4,5,6⟩≡↕7
+
+# LAYER 1
+3≡4>◶+‿-1
+3≡4⊢◶+‿-1
+3≡4 1◶+‿-1
+5≡4<◶+‿-1
+5≡4 0◶+‿-1
+1≡-⊘0 ¯1
+1≡¯1-⊘+2
+"abc"≡⊢"abc"
+""≡3⊢""
+⟨⟩≡⊣⟨⟩
+"ab"≡"ab"⊣⟨⟩
+4≡+˜2
+3≡1-˜4
+1≡-∘ׯ6
+¯6≡2-∘×3
+1≡-○ׯ7
+2≡5-○ׯ7
+¯20≡1⊸-⊸×5
+(0‿2+⌜0‿1)≡(>⟨"ab","cd"⟩)≢⊸⥊↕4
+20≡×⟜(-⟜1)5
+4≡5+⟜ׯ3
+7≡5+⟜2 ¯3
+2≡√4
+3≡3√27
+6≡2∧3
+0≡¯2∧0
+0.75≡∨˜0.5
+1.75≡2∨0.25
+0≡¬1
+1≡¬0
+2≡¬¯1
+0≡3¬4
+2≡4¬3
+4≡5¬2
+0≡|0
+5≡|¯5
+6≡|6
+∞≡|¯∞
+2≡3|8
+2≡3|¯7
+¯1≡¯3|8
+"a"≡⥊<'a'
+"abcd"≡⊑<"abcd"
+⟨⟩≡≢<⟨2,⟨3,4⟩⟩
+0≡4<2
+0≡5>5
+0≡3≥4
+0≡≠""
+1≡≠"a"
+1≡≠'a'
+2≡≠"ab"
+25≡≠↕25
+1≡×5
+¯1≡ׯ2.5
+3≡3⌊4
+¯3≡¯3⌊∞
+4≡3⌈4
+1≡1⌈¯1
+5≡⌈4.01
+⟨⟩≡≢'a'
+⟨⟩≡≢0
+⟨0⟩‿⟨1⟩‿⟨2⟩≡⥊¨↕3
+(↕6)≡⟜(≠¨)○(2‿3⊸⥊)⟨⟩‿"a"‿"ab"‿"abc"‿"abcd"‿"abcde"‿"abcdef"
+≡⟜(≠¨)4‿0‿2⥊↕0
+6≡+´↕4
+(⊑≡⊣´)"a"‿2‿(3‿"d")
+0(⊑≡⊣´)"a"‿2‿(3‿"d")
+(2⊸⊑≡⊢´)"a"‿2‿(3‿"d")
+2(⊣≡⊢´)"a"‿2‿(3‿"d")
+7‿10≡+¨´⟨⟨2,3⟩,⟨5,7⟩⟩
+
+# LAYER 2
+⟨⟩≡⟨⟩∾""
+"a"≡⟨⟩∾"a"
+"a"≡"a"∾⟨⟩
+"aBCD"≡"a"∾"BCD"
+((+⌜˜≠¨)≡(≠¨∾⌜˜))""‿⟨2,3⟩‿"abcde"
+(⥊⟜(↕×´)≡(×⟜4)⊸(+⌜)○↕´)3‿4
+(⥊⟜(↕×´)≡(×⟜4)⊸(+⌜)○↕´)0‿4
+(3‿2‿0⥊"")≡(3‿2⥊↕6)+⌜""
+(<<2)≡<¨2
+⟨1,⟨3,2,2‿2⥊⟨1,0,2,0⟩⟩,⟨5,4⟩⟩≡-⟨-1,⟨-3,-2,-¨2‿2⥊⟨1,0,2,0⟩⟩,⟨-5,-4⟩⟩
+3(+¨≡+⌜)↕6
+3‿4‿5‿6‿6≡{𝕊⍟(×≡)⊸∾⟜⥊´𝕩}⟨2,1⟩+⟨⟨⟨⟨1,2⟩,3⟩,4⟩,5⟩
+(=¨⟜(⥊⟜(↕×´)3‿4)≡(↕4)=⌜˜4|⊢)1‿6‿8
+
+# LAYER 3
+2≡⊑⟨2⟩
+"ab"≡⊑⟨"ab"⟩
+0≡⊑↕20
+4≡⊑3‿2‿1⥊4⥊⊸∾5⥊0
+'c'≡2⊑"abcd"
+'c'≡¯2⊑"abcd"
+7≡7⊑↕10
+21≡2‿¯3⊑(10×↕3)+⌜↕4
+21‿12‿03≡⟨2‿¯3,1‿2,0‿¯1⟩⊑(10×↕3)+⌜↕4
+"dfeb"≡(⥊¨-⟨3,1,2,5⟩)⊑"abcdef"
+"abc"≡⟨⟩⊑<"abc"
+⟨7,7‿7,7⟩≡⟨⟨⟩,⟨⟨⟩,⟨⟩⟩,⟨⟩⟩⊑<7
+⟨7,⟨7,<7⟩⟩≡⟨⟨⟩,⟨⟨⟩,<⟨⟩⟩⟩⊑7
+"abcfab"≡⥊(↕2‿3)⊑5‿5⥊"abcdef"
+"aedcaf"≡⥊(-↕2‿3)⊑5‿5⥊"abcdef"
+(<6⥊0)(⊑≡<∘⊑∘⊢)(6⥊1)⥊5
+¯6≡1‿0◶(2‿2⥊0‿0‿-‿0)6
+⟨3⟩≡⥊3
+⟨3,3,3⟩≡3⥊3
+6(⊢⌜≡∾○≢⥊⊢)○↕3
+(<≡↕)⟨⟩
+(↕∘⥊≡⥊¨∘↕)9
+¬'a'≡<'a'
+¬"a"≡≍"a"
+¬⟨1,2,⟨4,4⟩,5⟩≡○(2‿2⊸⥊)⟨1,2,⟨3,4⟩,5⟩
+¬2‿3‿4≡2‿3
+¬1.001≡1.002
+'a'≢2
+0≡≡'a'
+1≡≡↕6
+2≡≡↕2‿4
+3≡≡<<<4
+(1¨≡-○≡˜⟜↕¨)⟨0,⟨⟩,⟨1⟩,2,⟨3,4⟩⟩
+2≡≡⟨5,⟨'c',+,2⟩⟩
+0≡≡⊑⟨-⟩
+
+# LAYER 4
+≡⟜><'a'
+≡⟜><∞
+≡⟜>↕5
+≡⟜>5‿3⥊2
+2‿3‿2≡≢>↕2‿3
+((4⥊2)⊸⥊≡(>2‿2⥊·<2‿2⥊⊢))"abcd"
+(⊢≡>∘<)5‿3⥊↕15
+(⊢≡(><¨))5‿3⥊↕15
+(⥊≡≍)'a'
+(⥊≡≍)<'a'
+(1‿2⊸⥊≡≍)"ab"
+1‿2≡1≍2
+2‿1(≍≡2‿2⥊∾)4‿3
+(≍⟜<≡≍˜)'a'
+(≍˘˜⥊˘1‿5‿9)≡⌽⎉2⊸+⥊⟜(↕×´)3‿2‿1
+(↕4)(×⌜≡×⎉0‿2)↕5
+(↕4)(⋆˜⌜˜≡⋆⎉∞‿¯4)↕5
+(⟨2⟩⊸∾⍟(2‿2⥊0‿1‿1‿1)2‿3)≡≢¨≍⎉(⌊○=)⌜˜⟨↕3,2‿3⥊↕6⟩
+(2=⌜○↕3)≡(2‿4⥊"abc")≡⎉1(2‿3‿4⥊"abc")
+⟨0,0⟩≡(2‿4⥊"abc")≡⎉¯1(2‿3‿4⥊"abc")
+⟨5,⟨15,1⟩⟩≡+´⚇1⟨⟨3,2⟩,⟨⟨4,5,6⟩,⟨1⟩⟩⟩
+5‿6‿15≡∾´+´⚇1⟨⟨0,1⟩,⟨⟨⟩⟩⟩⥊⊸∾⚇¯2‿1⟨⟨2,3⟩,⟨4,5,6⟩⟩
+4≡2+⍟¯1 6
+(2×↕7)≡2+⍟(¯3+↕7)6
+(3⌊↕5)≡{i←0⋄r←{i+↩1⋄1+𝕩}⍟(↕4)𝕩⋄r∾i}0
+(+⌜˜≡·>1+⍟⊢⊢)↕5
+0‿1‿3‿6‿10≡+`↕5
+(-0‿1‿3‿6‿10)≡-`↕5
+((0∾¨↕3)≍3⥊0)≡≡`↕2‿3
+⟨⟩≡×`⟨⟩
+≡⟜(!∘0`)3‿0‿2⥊""
+
+# LAYER 5
+(<'a')≡⊏"abc"
+"a"≡⊏⥊˘"abc"
+(<'c')≡2⊏"abc"
+(<'c')≡¯1⊏"abc"
+"ccc"≡2‿¯1‿2⊏"abc"
+((3-˜↕5)⊸⊏≡2⊸⌽)↕5‿2
+(0‿3⥊0)≡⟨⟩⊏2‿3⥊↕6
+⟨3‿0,2‿1‿2⟩(×⟜5⊸+⌜´∘⊣≡⊏)⥊⟜(↕×´)6‿5
+(2‿0⥊0)≡⟨3‿¯1,⟨⟩⟩⊏4‿3⥊0
+5‿1(<⊸⊏≡⊏)↕6‿2
+⟨4‿0,1‿2‿3‿2‿1‿0⟩(+⌜´⊸(×⌜)≡⊏⟜(×⌜˜))+⌜˜↕5
+"abc"≡3↑"abce"
+"e"≡¯1↑"abce"
+""≡0↑"ab"
+(<⟜3⊸×↕5)≡5↑↕3
+(6⥊0)≡¯6↑↕0
+(≍↕3)≡1↑2‿3⥊↕6
+(↑⟜4≡⥊⟜0)↕3
+(≍"abc")≡1↑2‿3↑"abcd"
+(6⥊1)(↑≡⥊⟜⊑)2‿3⥊↕6
+(↕¨∘↕∘(1⊸+)≡↑∘↕)5
+(↑≡((↕4)≍¨2)⥊¨<)3‿2⥊"abcdef"
+"d"≡3↓"abcd"
+1‿2≡⟜(¯3⊸↓)○↕4‿2
+1‿1‿3‿2‿1≡≢(5⥊0)↓↕3‿2‿1
+(↓∘↕≡↕∘(1⊸+)+⟜⌽↑∘↕)5
+(↕3‿4)≡1↓¨⊏↕2‿3‿4
+(4+⌜○↕2)≡2↕↕5
+⟨⟩(↕≡⊢)4‿3⥊"abcd"
+(0⊸↕≡(0≍˜1+≠)⊸⥊)↕6
+(7↕6‿0⥊"")≡0‿7‿0⥊""
+≡⟜⌽⟨⟩
+≡⟜⌽"a"
+"ba"≡⟜⌽"ab"
+(⌽≡(1-˜≠)(-○⊑∾1↓⊢)⚇1⊢)↕3‿2‿4
+≡⟜⌽↕↕3
+∧´5(⌽≡⊢)¨⟨"",⥊∞,↕5,↕0‿4,2‿0‿3⥊""⟩
+∧´("bcdea"≡⌽⟜"abcde")¨1+5ׯ10‿¯2‿¯1‿0‿1‿6‿61
+∧´⟨1,0‿2,¯1‿1‿3⟩(⊑∘⌽≡(3⊸↑)⊸⊑)⚇¯1‿∞ 2‿3‿5⥊"abcdef"
+⟨⟩(⌽≡⊢)'a'
+0‿4≡/1‿0‿0‿0‿1‿0
+1‿1‿2≡/0‿2‿1
+≡⟜/⟨⟩
+"aabbcc"≡2/"abc"
+3‿3‿3‿2‿2‿1≡/˜3‿2‿1
+(≍1∾¨1‿2‿2)≡(↕¨/↕)2‿3
+⟨⟩(/≡⊢)≍"ab"
+
+# LAYER 6
+≡⟜(∾⥊¨)"abc"
+(∾´≡∾)"ab"‿"cde"‿""
+1‿2‿3‿4‿6‿9≡∾(⊢×≠↑↓)1+↕3
+≡⟜∾⟨⟩
+⟨1‿4,⥊2⟩((∾⋆⌜⌜)≡⋆⌜○∾)⟨2‿3‿4,⟨⟩,⥊5⟩
+"abcd"≡"abc"∾'d'
+"abcd"≡"abc"∾<'d'
+(↕4‿3)≡(↕3‿3)∾3∾¨↕3
+(∾˜≡·¯1⊸(×´∘↓∾↑)∘≢⊸⥊≍˜)2‿3⥊"abcdef"
+(∾´≡∾)⟨3‿2‿1,0‿2‿1⟩⥊¨<↕6
+⟨1‿2,⥊0,⥊3⟩≡⊔1‿0‿0‿2
+4‿3‿2(≍○<≡·(≠¨≍○<∾)/⊸⊔)"abcdefghi"
+⟨⟩≡(3⥊¯1)⊔"abc"
+(≍˘1‿1‿4<∘⥊⎉1 16‿4+⌜↕4)≡2↓⟨3‿2,¯1‿0‿¯1⟩⊔2‿3‿4⥊↕24
+⥊⚇0⊸≡○⊔⟜(⥊<)1‿2‿2‿¯1‿0
+(⊔≡·≍⍟2∘<·∾⌜´/∘(0⊸=)¨)⟨0‿¯1‿0‿0,¯1‿0‿0⟩
+2‿0‿4≡"abcd"⊐"cae"
+⟨1⟩≡"abcd"⊐"b"
+(<3)≡⊐⟜(3⊸⊏)"abcd"
+(5⌊3+↕5)≡⊐⟜(3‿0‿0+⚇1⊢)↕5‿2‿1
+1‿0‿0‿1≡"acef"∊"adf"
+(∊⟜(↕2)≡<⟜2)3⋆⌜○↕5
+(<1)≡3‿4‿5∊4+⌜○↕3
+('0'≠"11010001")≡∊"abacbacd"
+(↑⟜1≡⟜∊⥊⟜∞)9
+(⥊⟜1≡∊∘↕)6
+≡⟜∊⟨⟩
+≡○∊⟜(≍˜˘)"abcadbba"
+≡⟜⍷⟨⟩
+"ba"≡⍷"baa"
+0‿1‿0‿0≡"abc"⍷"aabcba"
+(0‿1≍0‿0)≡(1‿2≍4‿5)⍷3‿3⥊↕9
+(⌽¨≡⍉)↕2⥊3
+∧´⍉⊸≡¨⟨'a',<'a',"a","abc",""⟩
+(↕4)(-˜⌜˜≡·⍉-⌜)↕3‿2
+(2×↕3)≡0‿0⍉6+⌜○↕3
+⟨⟩(⍉≡⊢)<4
+(2‿0‿1⥊⟨⟩)≡1‿2‿0‿1⍉↕↕4
+2‿0‿3‿1‿4≡⍋"bdace"
+5‿2‿4‿3‿0‿1≡⍋↓"deabb"
+(⍋≡⍒)⟨"",↕0,0↑<"abc"⟩
+(⍒≡⌽∘↕∘≠)⟨¯∞,¯1.5,π,∞,'A','a','b'⟩
+(⍒≡⌽∘↕∘≠)⟨↕0,¯1.1,¯1,¯1‿¯∞,¯1‿0,¯1‿0‿0,¯1‿∞,0,6⥊0,1e¯20,1,1+1e¯15⟩
+(⍒≡⌽∘↕∘≠)(<∾⟨↕0,1,1‿1,2‿1‿1,2‿1,2,1‿2,2‿2,3⟩⥊¨<)'a'
+(⍋≡↕∘≠)⥊⍉(↕5)⥊⟜1⊸⥊⌜1‿'b'
+(⊢≡○⍋(0‿1+≠)⥊⊢)⟨¯2,'a',1,'f'⟩
+⟨1,2,3,1‿2,2‿1,1‿3,2‿2,3‿1⟩(⥊⊸(≠∘⊣∾˜¯1⊸⊑⊸(⌊∾⊣)∾×´⊸⌊)⌜≡○(⍋⥊)⥊⌜⟜(+`∘≠⟜(↕6)¨))↕4
+((⥊˜-⥊⟜2‿0)∘≠≡⍋+⍒)2/↕5
+"edcba"≡∨"bdace"
+(↕7)≡∧⍋|⟜⌽1+↕7
+⟨1,3,∞,'e','i'⟩ (⍋≡≠∘⊣(⊣↓⊢⍋⊸⊏+`∘>)⍋∘∾) (2÷˜↕8)∾"aegz"
+⟨'z','d',1‿0,0⟩ (⍒≡≠∘⊣(⊣↓⊢⍋⊸⊏+`∘>)⍒∘∾) (2÷˜↕8)∾"aegz"
+(<1)≡(↕2‿3)⍋1+↕3
+(<0)≡"abc"⥊⊸⍒○<≍"acc"
diff --git a/test/cases/simple.bqn b/test/cases/simple.bqn
new file mode 100644
index 00000000..b460c6a9
--- /dev/null
+++ b/test/cases/simple.bqn
@@ -0,0 +1,20 @@
+2 % 1+1
+-2 % 1⌊-2
+-1 % -2⌊1
+1 % (÷2)+(÷3)+(÷6)
+4 % ⊢4⊣5
+0 % sq←√5,⌊9×|5-sq×sq
+-0.5 % ((-3)+√(3×3)-4×2×1)÷2×2
+-0.5 % a←2,b←3,c←1⋄((-b)+√(b×b)-4×a×c)÷2×a
+-0.5 % b←1+a←1+c←1⋄((-b)+√(b×b)-4×a×c)÷2×a
+-0.5 % b←3⋄⊢d←(b×b)-4×2×1⋄((-b)+√d)÷2×2
+6 % a←3,b←4,c←5⋄⊣s←(÷2)×a+b+c⋄√s×(s-a)×(s-b)×(s-c)
+3.1415 % t←2×5⋄3+(1+(4+(1+5÷t)÷t)÷t)÷t
+3.1415 % 3+(1+(4+(1+5÷10)÷10)÷10)÷10
+3 % √25-16
+0.25 % ¬15÷20
+0 % (3∧4)-¬(¬3)∨(¬4)
+1 % p←¬q←÷4⋄(q∧q)+(p∨p)
+109 % 105¬-3
+-0.5 % {{-3}+√{3×3}-4×2×1}÷2×2
+1 % {a←1⋄{a←2}⋄a}
diff --git a/test/cases/syntax.bqn b/test/cases/syntax.bqn
new file mode 100644
index 00000000..41f155ad
--- /dev/null
+++ b/test/cases/syntax.bqn
@@ -0,0 +1,48 @@
+-4 % (⌈-)4+÷2
+3 % √5(+×-)4
+1 % 4((¬=)∧¬=1+-)6
+5 % F←-⋄2+3
+-3 % F←-⋄F 3
+3 % DiffSq←+×((-))⋄√5 DiffSq 4
+3 % F←-⌊⋄2 F-3
+3 % a←3,2 A 4
+-2 % F←G←-⋄G↩+⋄h←0⊑f∾g⋄H 2
+9 % ט-3
+1 % 3-˜4
+0.25 % 4-˜○÷2
+3 % √5-○(ט)4
+8 % _m←˜⋄+_m 4
+8 % _c_←⊸ , 4 _c_ × 2
+1 % (↕2)≡⟨0,1⟩
+1 % (↕2)≡⟨⋄0,⋄1⋄⋄⟩
+1 % l←⟨2×3⋄5⟩⋄-´l
+1 % -´⟨2×3⋄5⟩
+2 % (4-⟨0,1⟩×2)⊑˜1
+16 % 3(2×+⍟(1+1))2
+-1 % f←0⊑⟨×,-⟩⋄F 2 F -4
+3 % ≠0‿1‿2
+2 % 0⊑2‿+‿-‿1
+30 % ×´(2‿(1+3)‿(×4))+1
+1 % f←2⊑(ט)‿⍟‿(×-+)⋄2 F 3
+0 % ≠⟨⟩
+1 % ⟨⟩≡0↑1‿2
+1 % {𝕩-1}2
+4 % ({𝕩×𝕩})2
+3 % 2{𝕩÷𝕨}6
+1 % {q←𝕩⋄{(q∧q)+(𝕩∨𝕩)}¬q}÷4
+-1 % (⊑⟨×⟩){𝔽}¯2
+4 % (⊑⟨×⟩){𝕩𝔽𝕩}¯2
+6 % +´(ט)‿-{𝕎𝕩}¨3
+5 % 2+⍟3-1
+9 % _m←˜⋄{mm←𝕩⋄×_mm 3}m
+-2 % F←{-𝕩}⋄{F 2}
+2 % c‿d←2+⟨a,b⟩←↕2⋄⟨b‿c,a⟩↩⟨4⋄5⟩‿6⋄(b×c)-d×a
+3 % x←4⋄x-↩1⋄x
+5 % x←2⋄x-˜↩7⋄x
+2 % a‿b←2‿0⋄a‿b+↩2⋄a÷b
+-7 % x‿y←3‿4⋄x+⍟2˜↩2⋄Y↩-⋄Y x
+9 % ≠"a""""b''""c'"
+2 % ⟨a⟩←{a⇐b⇐2⋄3}⋄a
+6 % r‿q←{q‿r⇐⋄q←1+r←2}⋄r×q
+4 % c←0⋄⟨a,b⟩←{b⇐1⋄a⇐2}⋄⟨b,c⟩↩{a‿b‿c⇐3+↕3}⋄b
+10 % r‿s←{r‿q←{q⇐1+r⇐2}⋄s⇐5⋄r⇐}⋄r×s