From edc500bbd9762491128a4f6f9588e5bf0c954310 Mon Sep 17 00:00:00 2001
From: ik1g19 <ik1g19@soton.ac.uk>
Date: Fri, 8 Jan 2021 23:25:50 +0000
Subject: [PATCH] starting test work on challenge 4

---
 cw/src/Challenges.hs |  2 +-
 cw/test/Spec.hs      | 49 +++++++++++++++++++++++++++++++++++++-------
 2 files changed, 43 insertions(+), 8 deletions(-)

diff --git a/cw/src/Challenges.hs b/cw/src/Challenges.hs
index a124d68..9864c3d 100644
--- a/cw/src/Challenges.hs
+++ b/cw/src/Challenges.hs
@@ -7,7 +7,7 @@
 -- DO NOT MODIFY THE FOLLOWING LINES OF CODE
 module Challenges (WordSearchGrid,Placement,Posn,Orientation(..),solveWordSearch, createWordSearch,
     LamMacroExpr(..),LamExpr(..),prettyPrint, parseLamMacro,
-    cpsTransform,innerRedn1,outerRedn1,compareInnerOuter,unique,macroName,closedParse,expr) where
+    cpsTransform,innerRedn1,outerRedn1,compareInnerOuter) where
 
 -- Import standard library and parsing definitions from Hutton 2016, Chapter 13
 -- We import System.Random - make sure that your installation has it installed - use stack ghci and stack ghc
diff --git a/cw/test/Spec.hs b/cw/test/Spec.hs
index e6c0ba8..bc2a1df 100644
--- a/cw/test/Spec.hs
+++ b/cw/test/Spec.hs
@@ -1,27 +1,40 @@
 import Challenges
 import Data.List
 
-main :: IO ()
-main = challenge2Test
 
+-------------------------------------Examples-----------------------------------
 
 
 exGrid1'1  = [ "HAGNIRTSH" , "SACAGETAK", "GCSTACKEL","MGHKMILKI","EKNLETGCN","TNIRTLETE","IRAAHCLSR","MAMROSAGD","GIZKDDNRG" ]
 exWords1'1 = [ "HASKELL","STRING","STACK","MAIN","METHOD"]
+
 exAns1'1   = [("HASKELL",Just((0,0),DownForward)),("STRING",Just((7,0),Back)),("STACK",Just((2,2),Forward)),
               ("MAIN",   Just((2,7),Up         )),("METHOD",Just((4,3),Down))]
 
+
 exGrid1'2  = ["ROBREUMBR","AURPEPSAN","UNLALMSEE","YGAUNPYYP","NLMNBGENA","NBLEALEOR","ALRYPBBLG","NREPBEBEP","YGAYAROMR"]
 exWords1'2 = [ "BANANA", "ORANGE", "MELON", "RASPBERRY","APPLE","PLUM","GRAPE" ]
+
 exAns1'2   = [("BANANA",   Just((5,6),UpBack  )),("ORANGE",Just((1,0),DownForward)),("MELON",Just((7,8),Up      )),
               ("RASPBERRY",Just((8,0),DownBack)),("APPLE", Just((2,8),UpForward  )),("PLUM", Just((5,1),DownBack)),
               ("GRAPE",    Just((8,6),Up      ))]
 
-exGrid1'3  = ["TEST","ASBD","GDFI","FDGS"]
-exWords1'3 = ["TEST"]
-exAns1'3   = [("TEST",Just((0,0),Forward))]
+
+ex3'1 = LamDef [] (LamApp (LamAbs 1 (LamVar 1)) (LamAbs 1 (LamVar 1)))
+ex3'2 = LamDef [] (LamAbs 1 (LamApp (LamVar 1) (LamAbs 1 (LamVar 1))))
+ex3'3 = LamDef [ ("F",LamAbs 1 (LamVar 1) ) ] (LamAbs 2 (LamApp (LamVar 2) (LamMacro "F")))
+ex3'4 = LamDef [ ("F",LamAbs 1 (LamVar 1) ) ] (LamAbs 2 (LamApp (LamAbs 1 (LamVar 1)) (LamVar 2)))
+ex3'5 = LamDef [ ( "F",LamAbs 1 (LamApp ((LamVar 1) (LamVar 1)) ), ( "G",LamAbs 2 (LamVar 2) ) ] ()
+
+ex3'1Ans = "(\\x1 -> x1) \\x1 -> x1"
+ex3'2Ans = "\\x1 -> x1 \\x1 -> x1"
+ex3'3Ans = "def F = \\x1 -> x1 in \\x2 -> x2 F"
+ex3'4Ans = "def F = \\x1 -> x1 in \\x2 -> F x2"
+ex3'5Ans = "def F = \\x1 -> x1 x1 in def G = \\x2 -> x2 in F G"
 
 
+------------------------------Printing Functions--------------------------------
+
 
 printGrid :: WordSearchGrid -> IO ()
 printGrid [] = return ()
@@ -39,6 +52,16 @@ pPrintList cs = do putStr "["
                           ppl $ xs
 
 
+-------------------------------------Main---------------------------------------
+
+
+main :: IO ()
+main = do challenge1Test
+          challenge2Test
+
+
+-----------------------------Challenge 1 Testing--------------------------------
+
 
 assert1 :: WordSearchGrid -> [ (String,Maybe Placement) ] -> [ (String,Maybe Placement) ] -> IO ()
 assert1 grid result correct | result == correct = do putStrLn "Testing Grid:\n"
@@ -60,8 +83,10 @@ challenge1Test = do putStrLn "Challenge 1 Start Test"
                     assert1 exGrid1'1 (solveWordSearch exWords1'1 exGrid1'1) exAns1'1
                     assert1 exGrid1'2 (solveWordSearch exWords1'2 exGrid1'2) exAns1'2
                     putStrLn "========================================="
-                    putStrLn "Challenge 1 End Test"
+                    putStrLn "Challenge 1 End Test\n"
+
 
+-----------------------------Challenge 2 Testing--------------------------------
 
 
 assert2 :: WordSearchGrid -> [ (String,Maybe Placement) ] -> IO ()
@@ -86,4 +111,14 @@ challenge2Test = do putStrLn "Challenge 2 Start Test"
                     (g1,sol1) <- createAndSolve ["WORD","EXAMPLE","SEARCH"] 0.3
                     assert2 g1 sol1
                     putStrLn "========================================="
-                    putStrLn "Challenge 2 End Test"
\ No newline at end of file
+                    putStrLn "Challenge 2 End Test"
+
+
+
+-----------------------------Challenge 3 Testing--------------------------------
+
+
+assert3
+
+
+-- challenge3Test
\ No newline at end of file
-- 
GitLab