SyncCollection k -- ^ Present state of master
-> SyncCollection k -- ^ Present state of child
-> SyncCollection k -- ^ Last state of child
- -> ([SyncCommand k], [SyncCommand k], [SyncCommand k]) -- ^ Changes to make to (master, child, child state repo)
+ -> ([SyncCommand k], [SyncCommand k]) -- ^ Changes to make to (master, child)
syncThem masterstate childstate lastchildstate =
- (masterchanges, childchanges, statuschanges)
+ (masterchanges, childchanges)
where masterchanges = []
childchanges = map DeleteItem masterToChildDeletes
- statuschanges = map DeleteItem masterToStatusDeletes
{-
# Delete local copies of remote messages. This way,
FIXME: validate logic in situation of new folder here -}
masterToChildDeletes = syncToDelete masterstate childstate
- masterToStatusDeletes = filterKeys lastchildstate masterToChildDeletes
-
{- | Returns a list of keys that exist in childstate but not in masterstate -}
syncToDelete :: (Ord k) =>
prop_empty :: Bool
prop_empty =
- syncThem emptymap emptymap emptymap == ([], [], []) -- ([DeleteItem 5], [], [])
+ syncThem emptymap emptymap emptymap == ([], []) -- ([DeleteItem 5], [], [])
prop_delAllFromChild :: SyncCollection Int -> Result
prop_delAllFromChild inp =
- let (resMaster, resChild, resState) = syncThem emptymap inp inp
+ let (resMaster, resChild) = syncThem emptymap inp inp
expectedResChild = sort . map DeleteItem . Map.keys $ inp
- in ([], expectedResChild, expectedResChild) @=?
- (resMaster, sort resChild, sort resState)
+ in ([], expectedResChild) @=?
+ (resMaster, sort resChild)
prop_addFromMaster :: SyncCollection Int -> Result
prop_addFromMaster inp =
- let (resMaster, resChild, resState) = syncThem inp emptymap emptymap
+ let (resMaster, resChild) = syncThem inp emptymap emptymap
expectedResChild = sort . map CopyItem . Map.keys $ inp
- in ([], expectedResChild, expectedResChild) @=?
- (resMaster, sort resChild, sort resState)
+ in ([], expectedResChild) @=?
+ (resMaster, sort resChild)
allt = [qctest "Empty" prop_empty,
qctest "Del all from child" prop_delAllFromChild]