packages feed

pathfindingcore-1.3.0: test/InstanceTests.hs

module InstanceTests(tests) where

import Test.Tasty(testGroup, TestTree)
import Test.Tasty.HUnit((@?=), testCase)

import PathFindingCore.PathingMap(PrintablePathingGrid(PPG))
import PathFindingCore.PathingMap.Interpreter(fromMapString, grid, PathingMapString(PathingMapString))

tests = testGroup "Test instances" [
   testPPGInstance "Show PPG 1" " "     expected1
 , testPPGInstance "Show PPG 2" "xG"    expected2
 , testPPGInstance "Show PPG 3" "x|G"   expected3
 , testPPGInstance "Show PPG 4" "x | G" expected4
 , testPPGInstance "Show PPG 5" actual5 expected5
 ]
  where
    actual5   = "   D D|\
                \ x    |\
                \  DDDD|\
                \D DG D|\
                \D DDDD"
    expected1 = "+-+\n\
                \| |\n\
                \+-+"
    expected2 = "+--+\n\
                \|xG|\n\
                \+--+"
    expected3 = "+-+\n\
                \|x|\n\
                \|G|\n\
                \+-+"
    expected4 = "+--+\n\
                \|x |\n\
                \| G|\n\
                \+--+"
    expected5 = "+------+\n\
                \|   D D|\n\
                \| x    |\n\
                \|  DDDD|\n\
                \|D DG D|\n\
                \|D DDDD|\n\
                \+------+"

testPPGInstance :: Text -> Text -> Text -> TestTree
testPPGInstance desc strGrid expected = testCase (asString desc) assertion
  where
    actual    = strGrid |> ((flip PathingMapString "|") >>> fromMapString >>> grid >>> PPG >>> showText)
    assertion = actual @?= expected