Z-Data-0.1.0.0: test/Z/Data/Vector/FlatSetSpec.hs
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Z.Data.Vector.FlatSetSpec where
import qualified Data.List as List
import Data.Word
import qualified Z.Data.Vector as V
import qualified Z.Data.Vector.FlatSet as FS
import Test.QuickCheck
import Test.QuickCheck.Function
import Test.QuickCheck.Property
import Test.Hspec
import Test.Hspec.QuickCheck
type FMS = FS.FlatSet String
spec :: Spec
spec = do
describe "flatset-semigroup-monoid" $ do
prop "flatset monoid unit law" $ \ (m :: FMS) ->
(m <> FS.empty) === m
prop "flatset monoid unit law" $ \ (m :: FMS) ->
(FS.empty <> m) === m
prop "flatset semigroup associativity low" $ \ (m1 :: FMS) m2 m3 ->
(m1 <> m2) <> m3 === m1 <> (m2 <> m3)
describe "flatset insert elem roundtrip" $ do
prop "flatset insert elem roundtrip" $ \ (m :: FMS) v ->
FS.elem v (FS.insert v m) === True
describe "flatset delete elem" $ do
prop "flatset delete elem" $ \ (m :: FMS) v ->
FS.elem v (FS.delete v m) === False