module Map where
-- base
import Prelude hiding (Foldable (..))
-- containers
import Data.Map.Strict (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.Map
tests :: TestTree
tests =
testGroup
"Map"
[ testCase "Can insert" $
runChangeset (changeSingle (Insert "0" True :: MapChange String Bool)) mempty @?= ((), singleton "0" True)
, testCase "Can read after insert" $
let action = do
changeSingle (Insert "0" True :: MapChange String Bool)
m <- current
changeSingle $ Insert "0" False
return m
in runChangeset action mempty @?= (singleton "0" True, singleton "0" False)
, testCase "Can delete after insert" $
let action = do
changeSingle (Insert "0" True :: MapChange String Bool)
changeSingle $ Insert "1" False
changeSingle $ Delete "0"
in execChangeset action mempty @?= singleton "1" False
]