module Diagrams.Puzzles.GridSpec where import Diagrams.Prelude (p2) import Diagrams.Path (pathPoints) import Test.Hspec (Spec, describe, it, shouldBe, shouldSatisfy) import Data.Puzzles.Grid import Data.Puzzles.GridShape import Diagrams.Puzzles.Grid import Diagrams.Puzzles.Lib (p2i) spec :: Spec spec = do describe "irregularGridPaths" $ do it "gives the border of a rectangular grid" $ do let g = sizeGrid (2, 3) :: Grid C () (outer, _) = irregularGridPaths g pts = pathPoints outer length pts `shouldBe` 1 let [opts] = pts opts `shouldSatisfy` elem (p2i (0, 0)) opts `shouldSatisfy` elem (p2i (2, 0)) opts `shouldSatisfy` elem (p2i (2, 3)) opts `shouldSatisfy` elem (p2i (0, 3)) describe "midPoint" $ do it "gives the center of a node edge" $ do let e = E (N 0 1) Horiz midPoint e `shouldBe` p2 (0.5, 1.0) it "gives the center of a cell edge" $ do let e = E (C 0 0) Vert midPoint e `shouldBe` p2 (0.5, 1.0)