implement clear
This commit is contained in:
parent
a9b265fabc
commit
140d6989ec
2 changed files with 9 additions and 2 deletions
|
|
@ -1,6 +1,7 @@
|
|||
{-# LANGUAGE FlexibleContexts #-}
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{-# LANGUAGE UndecidableInstances #-}
|
||||
|
||||
module Types.GameBoard where
|
||||
|
|
@ -20,8 +21,10 @@ data GameBoard mode = MkGameBoard
|
|||
, gameMode :: mode
|
||||
}
|
||||
|
||||
clear = undefined
|
||||
clear :: (GameMode mode) => BoardPosition -> BoardPosition -> GameBoard mode -> GameBoard mode
|
||||
clear topLeft bottomRight gBoard@MkGameBoard{board} = gBoard{board = newCells}
|
||||
where
|
||||
newCells = board // map (,Nothing) (range (topLeft, bottomRight))
|
||||
|
||||
selectCheck :: (GameMode mode) => BoardPosition -> BoardPosition -> GameBoard mode -> Bool
|
||||
selectCheck topLeft bottomRight board@MkGameBoard{gameMode} =
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
module Spec where
|
||||
|
||||
import Data.Array (array)
|
||||
import Data.Array (array, elems)
|
||||
import Display (displayText)
|
||||
import Test.Hspec
|
||||
import Types.GameBoard
|
||||
|
|
@ -27,3 +27,7 @@ spec = describe "gameboard" do
|
|||
it "validates a move" do
|
||||
selectCheck (0, 0) (1, 1) gameBoard `shouldBe` True
|
||||
selectCheck (0, 0) (0, 1) gameBoard `shouldBe` False
|
||||
|
||||
it "clears properly" do
|
||||
let cleared = clear (0, 0) (0, 1) gameBoard
|
||||
elems (board cleared) `shouldBe` [Nothing, Nothing, Just $ IntTile 3, Just $ IntTile 4]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue