summaryrefslogtreecommitdiff
path: root/src/Test.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Test.hs')
-rw-r--r--src/Test.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Test.hs b/src/Test.hs
index 7f698a2..a54bbbd 100644
--- a/src/Test.hs
+++ b/src/Test.hs
@@ -2,6 +2,7 @@ module Test (
Module(..),
Test(..),
TestStep(..),
+ TestBlock(..),
SourceLine(..),
MonadEval(..),
@@ -41,8 +42,11 @@ data Test = Test
, testSteps :: [TestStep]
}
+newtype TestBlock = TestBlock [ TestStep ]
+
data TestStep = forall a. ExprType a => Let SourceLine (TypedVarName a) (Expr a) [TestStep]
| forall a. ExprType a => For SourceLine (TypedVarName a) (Expr [a]) [TestStep]
+ | ExprStatement (Expr TestBlock)
| Subnet (TypedVarName Network) (Expr Network) [TestStep]
| DeclNode (TypedVarName Node) (Expr Network) [TestStep]
| Spawn (TypedVarName Process) (Either (Expr Network) (Expr Node)) [TestStep]
@@ -126,6 +130,11 @@ instance ExprType a => ExprType [a] where
exprListUnpacker _ = Just $ ExprListUnpacker id (const Proxy)
+instance ExprType TestBlock where
+ textExprType _ = "test block"
+ textExprValue _ = "<test block>"
+ emptyVarValue = TestBlock []
+
data SomeVarValue = forall a. ExprType a => SomeVarValue a
data RecordSelector a = forall b. ExprType b => RecordSelector (a -> b)