packages feed

dojang-0.2.0: test/Dojang/Syntax/Manifest/WriterSpec.hs

module Dojang.Syntax.Manifest.WriterSpec (spec) where

import Data.Text (unpack)
import Test.Hspec (Spec, specify)
import Test.Hspec.Hedgehog (annotate, annotateShow, forAll, hedgehog, (===))

import Dojang.Syntax.Manifest.Parser (readManifest)
import Dojang.Syntax.Manifest.Writer (writeManifest)
import Dojang.Types.Gen as Gen (manifest)


spec :: Spec
spec = do
  specify "writeManifest" $ hedgehog $ do
    manifest' <- forAll Gen.manifest
    let toml = writeManifest manifest'
    annotate $ unpack toml
    let Right (parsed, _) = readManifest toml
    annotateShow parsed
    parsed === manifest'