testMapUnsetMapUnset :: TestTree
testMapUnsetMapUnset =
  let mu1 = O.MapUnset "foo"
      mu2 = O.MapUnset "bar" in
  testGroup "MapUnset vs MapUnset"
  [ testCase "Non-conflicting" $ do
      assertEqual "a" (Just mu1) $ T.transform mu1 mu2 T.Left
      assertEqual "b" (Just mu1) $ T.transform mu1 mu2 T.Right
  , testCase "Conflicting" $ do
      assertEqual "a" (Just O.NoOp) $ T.transform mu1 mu1 T.Left
      assertEqual "a" (Just O.NoOp) $ T.transform mu1 mu1 T.Right
  ]
testMapUnsetMapUnset :: TestTree
testMapUnsetMapUnset =
  let mu1 = O.MapUnset "foo"
      mu2 = O.MapUnset "bar" in
  testGroup "MapUnset vs MapUnset"
  [ testCase "Non-conflicting" $ do
      assertEqual "a" (Just mu1) $ T.transform mu1 mu2 T.Left
      assertEqual "b" (Just mu1) $ T.transform mu1 mu2 T.Right
  , testCase "Conflicting" $ do
      assertEqual "a" (Just O.NoOp) $ T.transform mu1 mu1 T.Left
      assertEqual "a" (Just O.NoOp) $ T.transform mu1 mu1 T.Right
  ]
testMapUnsetMapUnset =
  let mu1 = O.MapUnset "foo"
      mu2 = O.MapUnset "bar" in
  testGroup "MapUnset vs MapUnset"
  [ testCase "Non-conflicting" $ do
      assertEqual "a" (Just mu1) $ T.transform mu1 mu2 T.Left
      assertEqual "b" (Just mu1) $ T.transform mu1 mu2 T.Right
  , testCase "Conflicting" $ do
      assertEqual "a" (Just O.NoOp) $ T.transform mu1 mu1 T.Left
      assertEqual "a" (Just O.NoOp) $ T.transform mu1 mu1 T.Right
  ]