packages feed

liblawless-0.16.0: Tests/TestTemporary.hs

{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-orphans #-}

{-|
Module:             TestTemporary
Description:        Test that temporary files are unbuffered and binary.
Copyright:          © 2016 All rights reserved.
License:            GPL-3
Maintainer:         Evan Cofsky <>
Stability:          experimental
Portability:        POSIX
-}

module TestTemporary where

import Lawless
import Arbitrary
import Test.Framework
import Test.Framework.TH
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.QuickCheck
import Text
import Temporary
import qualified Data.ByteString as B
import System.IO hiding (utf8)
import Test.QuickCheck.Monadic
import Data.Text.Encoding (encodeUtf8)

prop_CheckBuffering (line ∷ Text) = monadicIO $ do
    let l = encodeUtf8 line
    m ← run $ withTempHandle "testTemp" $ \h → do
        B.hPut h l
        hSeek h AbsoluteSeek 0
        B.hGetContents h
    assert (l ≡ m)

properties ∷ Test
properties = $(testGroupGenerator)