Hangman-0.1.0.0: Tests.hs
module Main where
import Hangman
import Test.Hspec
main :: IO ()
main = hspec $ do
describe "Convert a Letter into a printable Char" $ do
it "Take a Letter and convert it to '_' if Hidden or its character if Guessed." $ do
letterToChar (Hidden 'c') `shouldBe` '_'
letterToChar (Guessed 'c') `shouldBe` 'c'
describe "Determine if a word is completely guessed." $ do
it "Return True if the word has no Hidden Chars in it, otherwise False." $ do
complete [(Guessed 'c'), (Guessed 'h'), (Guessed 'a'), (Guessed 'd')] `shouldBe` True
complete [(Guessed 'c'), (Guessed 'h'), (Hidden 'a'), (Guessed 'd')] `shouldBe` False
complete [(Hidden 'c'), (Guessed 'h'), (Guessed 'a'), (Guessed 'd')] `shouldBe` False
complete [(Guessed 'c'), (Guessed 'h'), (Guessed 'a'), (Hidden 'd')] `shouldBe` False
complete [(Hidden 'c'), (Hidden 'h'), (Hidden 'a'), (Hidden 'd')] `shouldBe` False
describe "Determine if we've reached the end of the game." $ do
it "Return True if the word is complete." $ do
endGame [(Guessed 'c'), (Guessed 'h'), (Guessed 'a'), (Guessed 'd')] (1,10) `shouldBe` True
it "Return True if all guesses are depleted." $ do
endGame [(Hidden 'c'), (Hidden 'h'), (Hidden 'a'), (Hidden 'd')] (10,10) `shouldBe` True
it "Return False if word is not complete or guesses are remaining" $ do
endGame [(Guessed 'c'), (Hidden 'h'), (Guessed 'a'), (Guessed 'd')] (2,10) `shouldBe` False