packages feed

kempe-0.2.0.9: golden/CDecl.hs

module CDecl ( goldenCDecl
             ) where

import qualified Data.ByteString.Lazy      as BSL
import           Data.Text.Lazy.Encoding   (encodeUtf8)
import           Kempe.File
import           Language.C.AST
import           Prettyprinter             (Doc, LayoutOptions (..), PageWidth (..), layoutSmart)
import           Prettyprinter.Render.Text (renderLazy)
import           Test.Tasty                (TestTree)
import           Test.Tasty.Golden         (goldenVsString)

renderBSL :: Doc ann -> BSL.ByteString
renderBSL = encodeUtf8 . renderLazy . layoutSmart cSettings where

compileOutput :: FilePath
              -> IO BSL.ByteString
compileOutput = fmap (renderBSL . prettyHeaders) . cDeclFile

goldenCDecl :: FilePath -- ^ Kempe file
            -> FilePath -- ^ Golden header file
            -> TestTree
goldenCDecl kFp golden =
    goldenVsString kFp golden (compileOutput kFp)