module LatticeTest (suite) where import Test.Tasty import Test.Tasty.HUnit import Lattice suite :: TestTree suite = testGroup "lattice tests" $ [ latticeGrowth ] data GrowKind = Empty | Plant deriving (Show, Enum, Eq) data GrowFlags = None deriving (Show, Eq) latticeGrowth :: TestTree latticeGrowth = testCase "growth update rule" $ let plant = LatticeCell Plant None empty = LatticeCell Empty None lattice = [[ empty, empty, plant ]] rules = [ -- empty \l x y -> if kind ((l !! y) !! (x+1)) == Plant then LatticeCell Plant None else LatticeCell Empty None -- plant , \_ _ _ -> LatticeCell Plant None ] :: [LatticeRule GrowKind GrowFlags] lattice' = updateLattice lattice rules lattice'' = updateLattice lattice' rules in do lattice' @?= [[ empty, plant, plant ]] lattice'' @?= [[ plant, plant, plant ]]