packages feed

hercules-ci-cnix-store-0.2.0.0: test/Hercules/CNix/Std/SetSpec.hs

{-# 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])