public void ResolveConflictTest()
{
using (CognitoSyncManager syncManager = new CognitoSyncManager(UnAuthCredentials))
{
syncManager.WipeData();
using (Dataset d = syncManager.OpenOrCreateDataset("testDataset4"))
{
d.Put("a", "1");
d.Put("b", "2");
d.Put("c", "3");
d.OnSyncSuccess += delegate(object sender, SyncSuccessEventArgs e)
{
d.ClearAllDelegates();
syncManager.WipeData();
using (Dataset d2 = syncManager.OpenOrCreateDataset("testDataset4"))
{
d2.Put("a", "10");
d2.Put("b", "20");
d2.Put("c", "30");
bool resolved = false;
d2.OnSyncConflict += delegate(Dataset dataset, List<SyncConflict> conflicts)
{
List<Amazon.CognitoSync.SyncManager.Record> resolvedRecords = new List<Amazon.CognitoSync.SyncManager.Record>();
int i = 0;
foreach (SyncConflict conflictRecord in conflicts)
{
if (i == 0) resolvedRecords.Add(conflictRecord.ResolveWithLocalRecord());
else if (i == 1) resolvedRecords.Add(conflictRecord.ResolveWithValue("42"));
else resolvedRecords.Add(conflictRecord.ResolveWithRemoteRecord());
i++;
}
dataset.Resolve(resolvedRecords);
resolved = true;
return true;
};
d2.OnSyncSuccess += delegate(object sender4, SyncSuccessEventArgs e4)
{
if (resolved)
{
Assert.AreSame(d2.Get("a"), "10");
Assert.AreSame(d2.Get("b"), "42");
Assert.AreSame(d2.Get("c"), "3");
}
else
{
Assert.Fail("Expecting SyncConflict instead of SyncSuccess");
}
};
d2.OnSyncFailure += delegate(object sender4, SyncFailureEventArgs e4)
{
Assert.Fail("Expecting SyncConflict instead of SyncFailure");
};
RunAsSync(async () => await d2.SynchronizeAsync());
}
};
RunAsSync(async () => await d.SynchronizeAsync());
}
}
}