dhall-yaml-1.0.3: tasty/Main.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE RecordWildCards #-}
module Main where
import Data.Monoid ((<>))
import Dhall.JSON.Yaml (Options(..))
import Test.Tasty (TestTree)
import qualified Data.ByteString
import qualified Data.Text.IO
import qualified Dhall.JSON.Yaml
import qualified Dhall.Yaml
import qualified GHC.IO.Encoding
import qualified Test.Tasty
import qualified Test.Tasty.HUnit
main :: IO ()
main = do
GHC.IO.Encoding.setLocaleEncoding GHC.IO.Encoding.utf8
Test.Tasty.defaultMain testTree
testTree :: TestTree
testTree =
Test.Tasty.testGroup "dhall-yaml"
[ testDhallToYaml
Dhall.JSON.Yaml.defaultOptions
"./tasty/data/normal"
, testDhallToYaml
Dhall.JSON.Yaml.defaultOptions
"./tasty/data/special"
, testDhallToYaml
Dhall.JSON.Yaml.defaultOptions
"./tasty/data/emptyList"
, testDhallToYaml
Dhall.JSON.Yaml.defaultOptions
"./tasty/data/emptyMap"
, testDhallToYaml
(Dhall.JSON.Yaml.defaultOptions { quoted = True })
"./tasty/data/quoted"
]
testDhallToYaml :: Options -> String -> TestTree
testDhallToYaml options prefix =
Test.Tasty.testGroup prefix
[ testCase Dhall.Yaml.dhallToYaml "HsYAML"
, testCase Dhall.JSON.Yaml.dhallToYaml "aeson-yaml"
]
where
testCase dhallToYaml s = Test.Tasty.HUnit.testCase s $ do
let inputFile = prefix <> ".dhall"
let outputFile = prefix <> ".yaml"
text <- Data.Text.IO.readFile inputFile
actualValue <- dhallToYaml options (Just inputFile) text
expectedValue <- Data.ByteString.readFile outputFile
let message = "Conversion to YAML did not generate the expected output"
Test.Tasty.HUnit.assertEqual message expectedValue actualValue