From b2d0b395695b65c284dc042f77253f2827ab4009 Mon Sep 17 00:00:00 2001 From: Chloe Brown Date: Mon, 22 Jan 2024 12:13:39 +0000 Subject: Add test driver. --- src/Encoded/Test.idr | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/Encoded/Test.idr (limited to 'src/Encoded/Test.idr') diff --git a/src/Encoded/Test.idr b/src/Encoded/Test.idr new file mode 100644 index 0000000..ad6e114 --- /dev/null +++ b/src/Encoded/Test.idr @@ -0,0 +1,116 @@ +module Encoded.Test + +import Data.Stream +import Data.String + +import Encoded.Arith +import Encoded.Container +import Encoded.Fin +import Encoded.Pair +import Encoded.Sum +import Encoded.Term +import Encoded.Vect + +import System + +import Term.Compile +import Term.Pretty +import Term.Syntax +import Term.Semantics + +%ambiguity_depth 4 + +-- ListC : Ty -> Container +-- ListC ty = Cases [<(Nothing, 0), (Just ty, 1)] + +-- List : Ty -> Ty +-- List = W . ListC + +-- nil : {ty : Ty} -> Term (List ty) ctx +-- nil = App (intro . tag (There Here)) [ Term (ty ~> List ty ~> List ty) ctx +-- cons = AbsAll [<_, _] (\[ +-- App (intro . tag @{IsSnoc} Here) [ N) ctx +-- sum = App (elim {c = ListC N}) +-- [ App fst x + App index [ Term (List N) [ List N ~> List N] +-- fromList' [] = Var (There Here) +-- fromList' (x :: xs) = App (Var Here) [ Term (List N) [<] +-- fromList xs = App (Abs $ Abs $ fromList' xs) [ Mode -> Term ty ctx -> IO () +render Color t = + renderIO $ + layoutSmart layoutOptions $ prettyTerm t +render NoColor t = + putStrLn $ + renderShow (layoutSmart layoutOptions $ prettyTerm {ann = ()} t) "" +render _ t = pure () + +run : Show (TypeOf ty) => Len ctx => Mode -> Term ty ctx -> All TypeOf ctx -> IO () +run FastCompile t args = + putStrLn $ + renderShow (layoutCompact $ compileTerm {ann = ()} Run t) "" +run Compile t args = + putStrLn $ + renderShow (layoutSmart layoutOptions $ compileTerm {ann = ()} Run t) "" +run Profile t args = + putStrLn $ + renderShow (layoutSmart layoutOptions $ compileTerm {ann = ()} Profile t) "" +run _ t args = printLn (sem t args) + +parseArgs : List String -> IO (Mode, Bool, Nat, Nat) +parseArgs [_, "--color", k, n] = pure (Color, True, stringToNatOrZ k, stringToNatOrZ n) +parseArgs [_, "--no-color", k, n] = pure (NoColor, True, stringToNatOrZ k, stringToNatOrZ n) +parseArgs [_, "--fast-compile", k, n] = pure (FastCompile, False, stringToNatOrZ k, stringToNatOrZ n) +parseArgs [_, "--compile", k, n] = pure (Compile, False, stringToNatOrZ k, stringToNatOrZ n) +parseArgs [_, "--profile", k, n] = pure (Profile, False, stringToNatOrZ k, stringToNatOrZ n) +parseArgs [_, k, n] = pure (Color, False, stringToNatOrZ k, stringToNatOrZ n) +parseArgs _ = do putStrLn "Bad arguments"; exitFailure + +lit : Term (N ~> Term) ctx +lit = Abs' (\n => Rec n Zero Suc) + +add : Term (N ~> N ~> Term) ctx +add = AbsAll [<_,_] (\[ + App Rec [