packages feed

hw-streams-0.0.1.1: test/HaskellWorks/Data/Streams/Stream/OpsSpec.hs

{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE ScopedTypeVariables #-}

module HaskellWorks.Data.Streams.Stream.OpsSpec
  ( spec
  ) where

import Data.Word
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec

import qualified Data.Vector.Storable                      as DVS
import qualified HaskellWorks.Data.Streams.Stream.Ops      as S
import qualified HaskellWorks.Data.Streams.Vector.Storable as SDVS

{- HLINT ignore "Redundant do"        -}

spec :: Spec
spec = describe "HaskellWorks.Data.Stream.Vector.StorableSpec" $ do
  it "map" $ requireTest $ do
    u <- forAll $ pure $ DVS.fromList $ replicate 4 (0xffffffffffffffff :: Word64)
    v <- forAll $ pure $ DVS.fromList $ [0x0000000000000001 :: Word64] <> replicate 3 0

    let result = SDVS.unstream (S.add (SDVS.stream u) (SDVS.stream v))

    result === DVS.replicate 4 (0x0000000000000000 :: Word64)