import Lib import Test.Tasty import Test.Tasty.HUnit main :: IO () main = defaultMain $ testGroup "Minesweeper tests" [flagTileTest] emptyBoard :: Board emptyBoard = Board [[]] hiddenBoard :: Board hiddenBoard = Board [ [Bomb Hidden, Value 1 Hidden, Value 0 Hidden] , [Value 1 Hidden, Value 1 Hidden, Value 0 Hidden] , [Value 0 Hidden, Value 0 Hidden, Value 0 Hidden] ] revealedBoard :: Board revealedBoard = Board [ [Bomb Revealed, Value 1 Revealed, Value 0 Revealed] , [Value 1 Revealed, Value 1 Revealed, Value 0 Revealed] , [Value 0 Revealed, Value 0 Revealed, Value 0 Revealed] ] flagTileTest :: TestTree flagTileTest = testGroup "Flag tile" [ testCase "Empty board" $ flagTile emptyBoard (1, 1) @?= emptyBoard , testCase "Flag bomb tile" $ flagTile hiddenBoard (0, 0) @?= Board [ [Bomb Flagged, Value 1 Hidden, Value 0 Hidden] , [Value 1 Hidden, Value 1 Hidden, Value 0 Hidden] , [Value 0 Hidden, Value 0 Hidden, Value 0 Hidden] ] , testCase "Flag value tile" $ flagTile hiddenBoard (2, 0) @?= Board [ [Bomb Hidden, Value 1 Hidden, Value 0 Flagged] , [Value 1 Hidden, Value 1 Hidden, Value 0 Hidden] , [Value 0 Hidden, Value 0 Hidden, Value 0 Hidden] ] , testCase "Flag revealed bomb tile" $ flagTile revealedBoard (0, 0) @?= revealedBoard , testCase "Flag revealed value tile" $ flagTile revealedBoard (1, 2) @?= revealedBoard ]