+prop_allChanges :: SyncCollection Int -> SyncCollection Int -> SyncCollection Int -> Result
+prop_allChanges master child lastchild =
+ let (resMaster, resChild) = syncThem master child lastchild
+ expectedResMaster = sort $
+ (map CopyItem . Map.keys . Map.difference child $ Map.union master lastchild) ++
+ (map DeleteItem . Map.keys . Map.intersection master $ Map.difference lastchild child)
+ expectedResChild = sort $
+ (map CopyItem . Map.keys . Map.difference master $ Map.union child lastchild) ++
+ (map DeleteItem . Map.keys . Map.intersection child $ Map.difference lastchild master)
+ in (expectedResMaster, expectedResChild) @=?
+ (sort resMaster, sort resChild)
+