packages feed

ats-format-0.1.0.0: test/Spec.hs

{-# LANGUAGE OverloadedStrings #-}

import           Language.ATS.Lexer       (lexATS)
import           Language.ATS.Parser      (parseATS)
import           Language.ATS.PrettyPrint (printATS)
import           Test.Hspec

main :: IO ()
main = hspec $
    describe "pretty" $ do
        parallel $ it "works on fib.dats" $ do
            sample <- readFile "test/data/fib.dats"
            expected <- readFile "test/data/fib.out"
            (fmap printATS . parseATS . lexATS) sample `shouldBe` Right expected
        parallel $ it "works on filecount.dats" $ do
            sample <- readFile "test/data/filecount.dats"
            expected <- readFile "test/data/filecount.out"
            (fmap ((++ "\n") . printATS) . parseATS . lexATS) sample `shouldBe` Right expected
        parallel $ it "works on filetype.sats" $ do
            sample <- readFile "test/data/filetype.sats"
            expected <- readFile "test/data/filetype.out"
            (fmap ((++ "\n") . printATS) . parseATS . lexATS) sample `shouldBe` Right expected
        parallel $ it "works on polyglot.dats" $ do
            sample <- readFile "test/data/polyglot.dats"
            expected <- readFile "test/data/polyglot.out"
            (fmap ((++ "\n") . printATS) . parseATS . lexATS) sample `shouldBe` Right expected
        parallel $ it "works on left-pad.dats" $ do
            sample <- readFile "test/data/left-pad.dats"
            expected <- readFile "test/data/left-pad.out"
            (fmap ((++ "\n") . printATS) . parseATS . lexATS) sample `shouldBe` Right expected