{-# LANGUAGE DataKinds #-} -- For using P.viewMachine {-# LANGUAGE TypeApplications #-} module Golden.Machine where import Data.Bool (Bool(..)) import Control.Monad (Monad(..)) import Data.Int (Int) import Data.Function (($)) import Data.Semigroup (Semigroup(..)) import Data.String (IsString(..)) import Test.Tasty import Test.Tasty.Golden import Text.Show (Show(..)) import qualified Data.List as List import Golden.Utils import qualified Symantic.Parser as P import qualified Machine goldens :: TestTree goldens = testGroup "Machine" $ (\f -> List.zipWith f Machine.machines [1::Int ..]) $ \(Machine.M mach) g -> let machineFile = "test/Golden/Machine/G"<>show g<>".expected.txt" in goldenVsStringDiff ("G"<>show g) goldenDiff machineFile $ do return $ fromString $ show $ P.viewMachine @'False mach