hw-prim-0.6.2.40: test/HaskellWorks/Data/FromForeignRegionSpec.hs
{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
module HaskellWorks.Data.FromForeignRegionSpec (spec) where
import Control.Monad.IO.Class
import Data.Word
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec
import qualified Data.ByteString as BS
import qualified Data.Vector.Storable as DVS
import qualified HaskellWorks.Data.FromForeignRegion as IO
import qualified Hedgehog.Gen as G
import qualified Hedgehog.Range as R
import qualified System.Directory as IO
import qualified System.IO as IO
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
spec :: Spec
spec = describe "HaskellWorks.Data.FromForeignRegionSpec" $ do
it "Be able to load file into Vector" $ requireProperty $ do
ws <- forAll $ G.list (R.linear 0 (1024 * 16)) (G.word8 R.constantBounded)
liftIO $ IO.createDirectoryIfMissing True "./tmp"
(fp, h) <- liftIO $ IO.openBinaryTempFile "./tmp" "property-test-.txt"
liftIO $ BS.hPut h (BS.pack ws)
liftIO $ IO.hClose h
!(_ :: DVS.Vector Word64) <- liftIO $ IO.mmapFromForeignRegion fp
liftIO $ IO.removeFile fp
True === True