--- /dev/null
+// Mart Lubbers s4109503\r
+// Charlie Gerhardus s3050009\r
+module skeleton10\r
+\r
+import iTasks._Framework.Generic,\r
+ Data.Functor, Control.Applicative, Control.Monad, Data.Map, StdMisc,\r
+ StdInt\r
+//import qualified iTasks\r
+import qualified Text\r
+from Text import class Text, instance Text String\r
+//from StdFunc import o\r
+//import qualified Data.List as List\r
+import StdGeneric, StdOverloaded, StdBool, StdString\r
+//import StdArray, StdOverloaded, StdOrdList, StdTuple, StdString, StdBool, StdMisc\r
+\r
+:: TestState = {s :: Int, f :: Int}\r
+:: Test :== TestState -> (TestState -> [String]) -> [String]\r
+:: Match a \r
+ = Is (Match a)\r
+ | Not (Match a)\r
+ | Either (Match a) (Match a)\r
+ | LessThen a\r
+ | IsEqual a\r
+\r
+eval :: a (Match a) -> Bool | gEq{|*|}, qLess{|*|} a\r
+eval x (Is y) = eval x y\r
+eval x (IsEqual y) = x === y\r
+eval x (LessThen y) = x < y\r
+eval x (Not y) = not (eval x y)\r
+eval x (Either y1 y2) = eval x y1 || eval x y2\r
+\r
+assertThat :: String x (Match x) -> String\r
+assertThat s x y = case eval x y of\r
+ True = "Success: " +++ s\r
+ _ = "Fail: " +++ s\r
+\r
+Start = assertThat "Hello Wordl" (1+1) (IsEqual 2)\r