packages feed

changeset-containers-0.1.0.0: test/Set.hs

module Set where

-- base
import Prelude hiding (Foldable (..))

-- containers
import Data.Set (fromList, singleton)

-- tasty
import Test.Tasty

-- tasty-hunit
import Test.Tasty.HUnit (testCase, (@?=))

-- changeset
import Control.Monad.Changeset.Class
import Control.Monad.Trans.Changeset

-- changeset-containers
import Data.Monoid.RightAction.Set

tests :: TestTree
tests =
  testGroup
    "Set"
    [ testCase "Can insert" $
        runChangeset (changeSingle (Insert True)) mempty @?= ((), singleton True)
    , testCase "Can read after insert" $
        let action = do
              changeSingle $ Insert True
              m <- current
              changeSingle $ Insert False
              return m
         in runChangeset action mempty @?= (singleton True, fromList [True, False])
    , testCase "Can delete after insert" $
        let action = do
              changeSingle $ Insert True
              changeSingle $ Insert False
              changeSingle $ Delete True
         in execChangeset action mempty @?= singleton False
    ]