~vonfry/maze-escape

c3ac45c116c0efcb78fe03f6e6e86b12785af3ee — Vonfry 2 years ago e1c1e94
test: add test cases
4 files changed, 32 insertions(+), 8 deletions(-)

M .nix/maze-escape.nix
M lib/Game/Maze/Data.hs
M maze-escape.cabal
M test/Spec.hs
M .nix/maze-escape.nix => .nix/maze-escape.nix +1 -1
@@ 4,7 4,7 @@ mkDerivation {
  version = "0.1.0.0";
  src = ../.;
  libraryHaskellDepends = [ base ilist mtl utility-ht ];
  testHaskellDepends = [ base hspec ilist mtl ];
  testHaskellDepends = [ base hspec ilist mtl utility-ht ];
  homepage = "https://gitlab.com/Vonfry/maze-escape";
  license = lib.licenses.gpl3Plus;
}

M lib/Game/Maze/Data.hs => lib/Game/Maze/Data.hs +1 -0
@@ 6,6 6,7 @@ module Game.Maze.Data
  ( MazeCell(..)
  , MazeMapList(..)
  , MazeMapListPos
  , MazeMap
  )
where


M maze-escape.cabal => maze-escape.cabal +1 -0
@@ 44,3 44,4 @@ test-suite maze-test
    hs-source-dirs:   test
    main-is:          Spec.hs
    build-depends:    hspec ==2.*
                    , maze-escape

M test/Spec.hs => test/Spec.hs +29 -7
@@ 3,13 3,35 @@
module Main where

import Test.Hspec
import Game.Maze
import Game.Maze.Data

main :: IO ()
main = hspec $ do
main = hspec $
  describe "Escape from maze" $ do
    it "Case 1" $ do
      pending
    it "Case 2" $ do
      pending
    it "Case 3" $ do
      pending
    it "Case 1" $
      runTestCase case1 `shouldBe` 1
    it "Case 2" $
      runTestCase case2 `shouldBe` 3
    it "Case 3" $
      runTestCase case3 `shouldBe` 3
    it "Case 4" $
      runTestCase case4 `shouldBe` 2

runTestCase :: MazeMap -> Int
runTestCase = length . shortestEscapePath

case1 = MazeMapList [[S]
                    ,[D]]

case2 = MazeMapList [[X, X, S]
                    ,[D, O, O]]

case3 = MazeMapList [[X, X, S]
                    ,[D, O, O]
                    ,[X, O, O]]

case4 = MazeMapList [[X, O, X]
                    ,[X, S, O]
                    ,[O, O, O]
                    ,[O, D, O]]