public void TestResolveConflict() { var properties = new Dictionary <string, object>() { { "testName", "testCreateRevisions" }, { "tag", 1337 } }; // Create a conflict on purpose var doc = database.CreateDocument(); var newRev1 = doc.CreateRevision(); newRev1.SetUserProperties(properties); var rev1 = newRev1.Save(); var rev2a = CreateRevisionWithRandomProps(rev1, false); var rev2b = CreateRevisionWithRandomProps(rev1, true); SavedRevision winningRev = null; SavedRevision losingRev = null; if (doc.CurrentRevisionId.Equals(rev2a.Id)) { winningRev = rev2a; losingRev = rev2b; } else { winningRev = rev2b; losingRev = rev2a; } Assert.AreEqual(2, doc.ConflictingRevisions.Count()); Assert.AreEqual(2, doc.GetLeafRevisions(true).Count); // let's manually choose the losing rev as the winner. First, delete winner, which will // cause losing rev to be the current revision. var deleteRevision = winningRev.DeleteDocument(); Assert.AreEqual(1, doc.ConflictingRevisions.Count()); Assert.AreEqual(2, doc.GetLeafRevisions(true).Count); Assert.AreEqual(3, RevisionInternal.GenerationFromRevID(deleteRevision.Id)); Assert.AreEqual(losingRev.Id, doc.CurrentRevisionId); // Finally create a new revision rev3 based on losing rev var rev3 = CreateRevisionWithRandomProps(losingRev, true); Assert.AreEqual(rev3.Id, doc.CurrentRevisionId); Assert.AreEqual(1, doc.ConflictingRevisions.Count()); Assert.AreEqual(2, doc.GetLeafRevisions(true).Count); }
/// <summary>https://github.com/couchbase/couchbase-lite-java-core/issues/106</summary> /// <exception cref="System.Exception"></exception> public virtual void TestResolveConflict() { IDictionary <string, object> properties = new Dictionary <string, object>(); properties.Put("testName", "testCreateRevisions"); properties.Put("tag", 1337); // Create a conflict on purpose Document doc = database.CreateDocument(); UnsavedRevision newRev1 = doc.CreateRevision(); newRev1.SetUserProperties(properties); SavedRevision rev1 = newRev1.Save(); SavedRevision rev2a = CreateRevisionWithRandomProps(rev1, false); SavedRevision rev2b = CreateRevisionWithRandomProps(rev1, true); SavedRevision winningRev = null; SavedRevision losingRev = null; if (doc.GetCurrentRevisionId().Equals(rev2a.GetId())) { winningRev = rev2a; losingRev = rev2b; } else { winningRev = rev2b; losingRev = rev2a; } NUnit.Framework.Assert.AreEqual(2, doc.GetConflictingRevisions().Count); NUnit.Framework.Assert.AreEqual(2, doc.GetLeafRevisions().Count); // let's manually choose the losing rev as the winner. First, delete winner, which will // cause losing rev to be the current revision. SavedRevision deleteRevision = winningRev.DeleteDocument(); IList <SavedRevision> conflictingRevisions = doc.GetConflictingRevisions(); NUnit.Framework.Assert.AreEqual(1, conflictingRevisions.Count); NUnit.Framework.Assert.AreEqual(2, doc.GetLeafRevisions().Count); NUnit.Framework.Assert.AreEqual(3, deleteRevision.GetGeneration()); NUnit.Framework.Assert.AreEqual(losingRev.GetId(), doc.GetCurrentRevision().GetId ()); // Finally create a new revision rev3 based on losing rev SavedRevision rev3 = CreateRevisionWithRandomProps(losingRev, true); NUnit.Framework.Assert.AreEqual(rev3.GetId(), doc.GetCurrentRevisionId()); IList <SavedRevision> conflictingRevisions1 = doc.GetConflictingRevisions(); NUnit.Framework.Assert.AreEqual(1, conflictingRevisions1.Count); NUnit.Framework.Assert.AreEqual(2, doc.GetLeafRevisions().Count); }