Merge branch 'master' of https://github.com/dopefishh/tt2015
[tt2015.git] / a3 / code / Gast / genLibTest.icl
diff --git a/a3/code/Gast/genLibTest.icl b/a3/code/Gast/genLibTest.icl
deleted file mode 100644 (file)
index 8241184..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-implementation module genLibTest\r
-\r
-/*\r
-       GAST: A Generic Automatic Software Test-system\r
-       \r
-       genLibtest: library for generic testing: showing and comparing values\r
-\r
-       Pieter Koopman, 2004\r
-       Radboud Universty, Nijmegen\r
-       The Netherlands\r
-       pieter@cs.ru.nl\r
-*/\r
-\r
-import StdEnv, StdGeneric, GenEq\r
-\r
-instance + String where (+) s t = s +++ t\r
-\r
-(@)infixl 2 :: (a->b) a -> b\r
-(@) f x = f x\r
-\r
-(@!)infixl 2 :: (a->b) !a -> b\r
-(@!) f x = f x\r
-\r
-//--- show ---//\r
-generic genShow a :: String Bool a [String] -> [String]\r
-\r
-genShow{|Int|}                         sep p x                         rest = [toString x: rest]\r
-genShow{|Char|}                        sep p x                         rest = ["'",showChar x,"'": rest]\r
-genShow{|Bool|}                        sep p x                         rest = [toString x: rest]\r
-genShow{|Real|}                        sep p x                         rest = [toString x: rest]\r
-genShow{|String|}                      sep p s                         rest = ["\"",s,"\"":rest] \r
-genShow{|UNIT|}                        sep p _                         rest = rest\r
-genShow{|PAIR|}        fx fy   sep p (PAIR x y)        rest\r
-//     | p\r
-//             = ["(":fx sep p x [sep: fy sep p y [")":rest]]]\r
-               = fx sep p x [sep: fy sep p y rest]\r
-//genShow{|PAIR|}      fx fy   sep p (PAIR x y)        rest = fx sep True x [sep: fy sep True y rest]\r
-genShow{|EITHER|}      fl fr   sep p (LEFT x)          rest = fl sep p x rest\r
-genShow{|EITHER|}      fl fr   sep p (RIGHT x)         rest = fr sep p x rest\r
-genShow{|OBJECT|}      f       sep p (OBJECT x)        rest = f sep p x rest\r
-genShow{|(->)|}        fa fr   sep p f                         rest = ["<function>": rest]\r
-genShow{|{}|}          fx              sep p xs                        rest = ["{" :showList fx [x\\x<-:xs] ["}":rest]]\r
-genShow{|{!}|}         fx              sep p xs                        rest = ["{!":showList fx [x\\x<-:xs] ["}":rest]]\r
-//genShow{|{#}|}               fx              sep p xs                        rest = ["{#":showList fx [x\\x<-:xs] ["}":rest]]\r
-genShow{|[]|}          f               sep p xs                        rest = ["[" :showList f xs ["]":rest]]\r
-genShow{|(,)|}         f1 f2   sep p (x1,x2)           rest = ["(":f1 sep False x1 [",":f2 sep False x2 [")":rest]]]\r
-genShow{|(,,)|}                f1 f2 f3 sep p (x1,x2,x3)       rest = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [")":rest]]]]\r
-genShow{|(,,,)|}       f1 f2 f3 f4 sep p (x1,x2,x3,x4) rest\r
- = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [")":rest]]]]]\r
-genShow{|(,,,,)|}      f1 f2 f3 f4 f5 sep p (x1,x2,x3,x4,x5) rest\r
- = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [")":rest]]]]]]\r
-genShow{|(,,,,,)|}     f1 f2 f3 f4 f5 f6 sep p (x1,x2,x3,x4,x5, x6) rest = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [")":rest]]]]]]]\r
-genShow{|(,,,,,,)|}f1 f2 f3 f4 f5 f6 f7 sep p (x1,x2,x3,x4,x5,x6,x7) rest\r
- = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [",":f7 sep False x7 [")":rest]]]]]]]]\r
-genShow{|(,,,,,,,)|}f1 f2 f3 f4 f5 f6 f7 f8 sep p (x1,x2,x3,x4,x5,x6,x7,x8) rest\r
- = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [",":f7 sep False x7 [",":f8 sep False x8 [")":rest]]]]]]]]]\r
-genShow{|(,,,,,,,,)|}f1 f2 f3 f4 f5 f6 f7 f8 f9 sep p (x1,x2,x3,x4,x5,x6,x7,x8,x9) rest\r
- = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [",":f7 sep False x7 [",":f8 sep False x8 [",":f9 sep False x9 [")":rest]]]]]]]]]]\r
-genShow{|(,,,,,,,,,)|}f1 f2 f3 f4 f5 f6 f7 f8 f9 f0 sep p (x1,x2,x3,x4,x5,x6,x7,x8,x9,x0) rest\r
- = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [",":f7 sep False x7 [",":f8 sep False x8 [",":f9 sep False x9 [",":f0 sep False x0 [")":rest]]]]]]]]]]]\r
-genShow{|CONS of {gcd_name, gcd_arity, gcd_fields}|} fx sep p (CONS x) rest\r
-       | gcd_arity == 0\r
-               = [gcd_name: rest]\r
-       | isEmpty gcd_fields // ordinary constructor\r
-               | p // parentheses needed\r
-//                     = ["(",gcd_name," ":fx " " False x [")":rest]]\r
-//                     = [gcd_name," ":fx " " False x rest]\r
-                       = ["(",gcd_name," ":fx " " True x [")":rest]]\r
-                       = [gcd_name," ":fx " " True x rest]\r
-       | otherwise // record\r
-               = ["{",{gcd_name.[i]\\i<-[1..size gcd_name-1]},"|":fx "," False x ["}":rest]]\r
-genShow{|FIELD of {gfd_name}|} fx sep p (FIELD x) rest\r
-       = [gfd_name,"=":fx sep False x rest]\r
-\r
-showChar :: Char -> String\r
-showChar c\r
- = case c of\r
-       '\n' = "\\n"\r
-       '\t' = "\\t"\r
-       '\r' = "\\r"\r
-       '\b' = "\\b"\r
-       '\'' = "\\'"\r
-       c = toString c\r
-\r
-showList :: (.String -> .(.Bool -> .(.a -> .(u:[v:String] -> w:[x:String])))) ![.a] z:[u0:String] -> w0:[x0:String], [w0 <= u,x0 <= v,z w <= w0,u0 x <= x0]\r
-showList f []          rest = rest\r
-showList f [x]         rest = f "" False x rest\r
-showList f [x:xs]      rest = f "" False x [",":showList f xs rest]\r
-\r
-show :: !a -> [String] | genShow{|*|} a\r
-show x = genShow{|*|} "" False x []\r
-\r
-show1 :: !a -> String | genShow{|*|} a\r
-show1 x = glue (genShow{|*|} "" True x [])\r
-where\r
-       glue :: [String] -> String\r
-       glue [] = ""\r
-       glue [x:xs]\r
-               = case xs of\r
-                       [] = x\r
-                          = x+glue xs\r
-\r
-//--- comparision ---//\r
-/*\r
-instance < Bool\r
-where\r
-       (<) True  b = not b\r
-       (<) False _ = False\r
-*/\r
-generic gLess a  :: a a -> Bool\r
-\r
-gLess{|UNIT|} _ _                                                              = False\r
-gLess{|PAIR|} fx fy (PAIR x1 y1) (PAIR x2 y2)  = fx x1 x2 || (not (fx x2 x1) && fy y1 y2) // x1<x2 || (x1==x2) && y1<y2\r
-gLess{|EITHER|} fl fr (LEFT x)   (LEFT y)              = fl x y\r
-gLess{|EITHER|} fl fr (RIGHT x)  (RIGHT y)             = fr x y\r
-gLess{|EITHER|} fl fr (LEFT x)   (RIGHT y)             = True\r
-gLess{|EITHER|} fl fr (RIGHT x)  (LEFT y)              = False\r
-gLess{|CONS|}   f     (CONS x)   (CONS y)              = f x y\r
-gLess{|OBJECT|} f     (OBJECT x) (OBJECT y)    = f x y\r
-gLess{|FIELD|}  f     (FIELD x)  (FIELD y)             = f x y\r
-gLess{|Int|}   x y                                                     = x < y\r
-gLess{|Char|} x y                                                              = x < y\r
-gLess{|Bool|} False y                                                  = y\r
-gLess{|Bool|} x y                                                              = False\r
-gLess{|Real|} x y                                                              = x < y\r
-gLess{|String|} x y                                                    = x < y\r
-\r
-derive gLess [], (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,), (,,,,,,,,), (,,,,,,,,,)\r
-\r
-(-<-) infix 4 :: !a !a -> Bool | gLess{|*|} a\r
-(-<-) x y = gLess{|*|} x y\r
-\r
-(->-) infix 4 :: !a !a -> Bool | gLess{|*|} a\r
-(->-) x y = gLess{|*|} y x\r
-\r
-(-<=) infix 4 :: !a !a -> Bool | gLess{|*|} a\r
-(-<=) x y = not (gLess{|*|} y x)\r
-\r
-(=>-) infix 4 :: !a !a -> Bool | gLess{|*|} a\r
-(=>-) x y = not (gLess{|*|} x y)\r
-\r