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]]