import Shape
import Helpers
import Test.HUnit
import List (sort)
import Monad (unless)
main :: IO Counts
main = runTestTT $ TestList testCases
movecases = [((makeBlock T initPos), [(20,20), (19, 20), (21, 20), (20, 19)])]
testCases :: [Test]
testCases = map t movecases
where t (block, ps) =
TestCase (assertRightPos ("expected " ++ show ps ++ " got " ++ show block) ps block)
initPos = (20, 20)
-- Helper functions
doMoves :: ShapeType -> [Move] -> Block
doMoves t moves = doMHelper (makeBlock t initPos) moves
where doMHelper block [] = block
doMHelper block (p:ps) = doMHelper (moveBlock block p) ps
assertRightPos :: String -> [Position] -> Block -> Assertion
assertRightPos msg exp b = assertSamePos msg exp (blockPositions b)
assertSamePos :: String -> [Position] -> [Position] -> Assertion
assertSamePos msg exp act = unless (samePos exp act) (assertFailure msg)
samePos :: [Position] -> [Position] -> Bool
samePos exp act = (sort exp) == (sort act)