aboutsummaryrefslogtreecommitdiff
path: root/test/dz_rt
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-08 21:14:26 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-08 21:14:26 -0400
commit2ff502e46f9d7e6929059479da2e160d0cbbf5de (patch)
tree4bc056b8ffbdbd3e4f24cec4c7a68d8345b1bb07 /test/dz_rt
parent176c78f51809ba3648d7a4cdedc78553df5904ae (diff)
Organize tests scripts a little better and add README
Diffstat (limited to 'test/dz_rt')
-rwxr-xr-xtest/dz_rt60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/dz_rt b/test/dz_rt
new file mode 100755
index 00000000..f83a787d
--- /dev/null
+++ b/test/dz_rt
@@ -0,0 +1,60 @@
+#!/usr/bin/env dbqn
+
+# Compile and run the primitive implementations, and prim.bqn
+
+impl ← •LNS •path∾"../src/r.bqn"
+
+drun ← •EX •path∾"../dc.bqn"
+
+chrs←⟨
+ "!+-×÷⋆√⌊⌈∧∨¬|=≠≤<>≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔"
+ "˙˜˘¨⌜⁼´˝`"
+ "∘⊸⟜○⌾⎉⚇⍟◶⊘"
+⟩
+nc ← ≠¨chrs
+chr ← ∾chrs
+itr ← 0⥊˜≠chr
+
+init ← " "⊸∾¨(/⟜"_"¨nc/0‿1‿1)∾¨(nc/"FMD")∾¨(nc+´⊸↑⥊"ABC"∾⌜•a)
+post ← ∾⟜" "¨/⟜"_"¨nc/0‿0‿1
+names ← init∾¨'0'∾¨post
+
+Inc ← {
+ i←⊑chr⊐𝕩
+ n←0 ⋄ itr↩{n↩1+𝕩}⌾(i⊑⊢)itr
+ names↩((i⊑init)∾('0'+n)∾i⊑post)⌾(i⊑⊢)names
+}
+
+# built-in assumptions
+Mod ← {((⊑chr⊐𝕨)⊑names) ∾ " ← " ∾ 𝕩}
+
+pre ← ⟨
+ "IsArray ← 0≠≡"
+ "Type ← ⟨⟩⥊0⊸⥊"
+ "Log ← ⋆⁼"
+ "GroupLen← ≠¨⊔"
+ "GroupOrd← ∾⊔∘⊢"
+ '!' Mod "{𝕩 ⋄ ≤1}⍟(1≢⊢)"
+⟩∾Mod⟜⥊¨ "+-×÷⋆⌊=≤≢⥊⊑↕⌜`⊘"
+
+
+# checks if line is a builtin redefinition
+E_isdef ← (3≤≠)◶⟨0,∧´⟨chr," ","←↩"⟩∊˜¨3⊸↑⟩
+
+# removes comments and replaces built-ins with names
+E_proc ← {
+ l←≠chr
+ q←≠`𝕩='"' ⋄ q∨↩≠`q<𝕩=''' ⋄ f←¬∨`q<𝕩='#'
+ ∾ (((l×f/q)+chr⊸⊐) (≥⟜l)◶⟨⊑⟜names,⥊∘⊢⟩¨ ⊢) f/𝕩
+}
+
+E_redef ← { # handles [fmd] [←↩]
+ tail ← E_proc 3↓𝕩 # must use old def
+ Inc ⊑𝕩
+ (E_proc 1↑𝕩) ∾ "←" ∾ tail
+}
+
+pre ∾↩ E_isdef◶E_proc‿E_redef¨ impl
+t ← (¬∘⊑':'∊⊢)¨⊸/ 3⊸↓⌾(3⊸⊑) •LNS •path∾"prim.bqn"
+res ← DRun ∾ ∾⟜(@+10)¨ pre ∾ E_proc¨ t
+• ← ("All "∾(⍕≠res)∾" passed!")⍟(0=≠) /res