testMapSetMapUnset :: TestTree
testMapSetMapUnset =
  let ms1 = O.MapSet "foo" c 0
      mu1 = O.MapUnset "foo"
      mu2 = O.MapUnset "bar" in
  testGroup "MapSet vs MapUnset"
  [ testCase "Non-conflicting" $ do
      assertEqual "a" (Just ms1) $ T.transform ms1 mu1 T.Left
      assertEqual "b" (Just ms1) $ T.transform ms1 mu1 T.Right
      assertEqual "c" (Just ms1) $ T.transform ms1 mu2 T.Left
      assertEqual "d" (Just ms1) $ T.transform ms1 mu2 T.Right
  ]
testMapSetMapUnset :: TestTree
testMapSetMapUnset =
  let ms1 = O.MapSet "foo" c 0
      mu1 = O.MapUnset "foo"
      mu2 = O.MapUnset "bar" in
  testGroup "MapSet vs MapUnset"
  [ testCase "Non-conflicting" $ do
      assertEqual "a" (Just ms1) $ T.transform ms1 mu1 T.Left
      assertEqual "b" (Just ms1) $ T.transform ms1 mu1 T.Right
      assertEqual "c" (Just ms1) $ T.transform ms1 mu2 T.Left
      assertEqual "d" (Just ms1) $ T.transform ms1 mu2 T.Right
  ]
testMapSetMapUnset =
  let ms1 = O.MapSet "foo" c 0
      mu1 = O.MapUnset "foo"
      mu2 = O.MapUnset "bar" in
  testGroup "MapSet vs MapUnset"
  [ testCase "Non-conflicting" $ do
      assertEqual "a" (Just ms1) $ T.transform ms1 mu1 T.Left
      assertEqual "b" (Just ms1) $ T.transform ms1 mu1 T.Right
      assertEqual "c" (Just ms1) $ T.transform ms1 mu2 T.Left
      assertEqual "d" (Just ms1) $ T.transform ms1 mu2 T.Right
  ]