packages feed

hw-prim-0.5.0.3: 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