{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Hercules.CNix.Std.SetSpec where
import Hercules.CNix.Std.Set as Std.Set
import qualified Language.C.Inline.Cpp as C
import Protolude
import Test.Hspec
C.context stdSetCtx
instanceStdSet "int"
instanceStdSetCopyable "int"
spec :: Spec
spec =
describe "Std.Set" do
it "can insert and retrieve copyable values" do
set <- Std.Set.new
Std.Set.insert set 1
Std.Set.insert set 2
Std.Set.insert set 3
Std.Set.insert set minBound
Std.Set.insert set maxBound
l <- Std.Set.toList set
sort l `shouldBe` ([minBound, 1, 2, 3, maxBound] :: [C.CInt])