/// <summary>https://github.com/couchbase/couchbase-lite-java-core/issues/164</summary> /// <exception cref="System.Exception"></exception> public virtual void TestRevisionIdEquivalentRevisions() { // two revisions with the same content and the same json // should have the exact same revision id, because their content // will have an identical hash IDictionary <string, object> properties = new Dictionary <string, object>(); properties.Put("testName", "testCreateRevisions"); properties.Put("tag", 1337); IDictionary <string, object> properties2 = new Dictionary <string, object>(); properties2.Put("testName", "testCreateRevisions"); properties2.Put("tag", 1338); Document doc = database.CreateDocument(); UnsavedRevision newRev = doc.CreateRevision(); newRev.SetUserProperties(properties); SavedRevision rev1 = newRev.Save(); UnsavedRevision newRev2a = rev1.CreateRevision(); newRev2a.SetUserProperties(properties2); SavedRevision rev2a = newRev2a.Save(); UnsavedRevision newRev2b = rev1.CreateRevision(); newRev2b.SetUserProperties(properties2); SavedRevision rev2b = newRev2b.Save(true); NUnit.Framework.Assert.AreEqual(rev2a.GetId(), rev2b.GetId()); }
/// <exception cref="System.Exception"></exception> public virtual void TestWinningRevIDOfDoc() { IDictionary <string, object> properties = new Dictionary <string, object>(); properties.Put("testName", "testCreateRevisions"); properties.Put("tag", 1337); IDictionary <string, object> properties2a = new Dictionary <string, object>(); properties2a.Put("testName", "testCreateRevisions"); properties2a.Put("tag", 1338); IDictionary <string, object> properties2b = new Dictionary <string, object>(); properties2b.Put("testName", "testCreateRevisions"); properties2b.Put("tag", 1339); IList <bool> outIsDeleted = new AList <bool>(); IList <bool> outIsConflict = new AList <bool>(); // Create a conflict on purpose Document doc = database.CreateDocument(); UnsavedRevision newRev1 = doc.CreateRevision(); newRev1.SetUserProperties(properties); SavedRevision rev1 = newRev1.Save(); long docNumericId = database.GetDocNumericID(doc.GetId()); NUnit.Framework.Assert.IsTrue(docNumericId != 0); NUnit.Framework.Assert.AreEqual(rev1.GetId(), database.WinningRevIDOfDoc(docNumericId , outIsDeleted, outIsConflict)); NUnit.Framework.Assert.IsTrue(outIsConflict.Count == 0); outIsDeleted = new AList <bool>(); outIsConflict = new AList <bool>(); UnsavedRevision newRev2a = rev1.CreateRevision(); newRev2a.SetUserProperties(properties2a); SavedRevision rev2a = newRev2a.Save(); NUnit.Framework.Assert.AreEqual(rev2a.GetId(), database.WinningRevIDOfDoc(docNumericId , outIsDeleted, outIsConflict)); NUnit.Framework.Assert.IsTrue(outIsConflict.Count == 0); outIsDeleted = new AList <bool>(); outIsConflict = new AList <bool>(); UnsavedRevision newRev2b = rev1.CreateRevision(); newRev2b.SetUserProperties(properties2b); SavedRevision rev2b = newRev2b.Save(true); database.WinningRevIDOfDoc(docNumericId, outIsDeleted, outIsConflict); NUnit.Framework.Assert.IsTrue(outIsConflict.Count > 0); }
/// <exception cref="System.Exception"></exception> public virtual void TestPruneRevsToMaxDepth() { IDictionary <string, object> properties = new Dictionary <string, object>(); properties.Put("testName", "testDatabaseCompaction"); properties.Put("tag", 1337); Document doc = CreateDocumentWithProperties(database, properties); SavedRevision rev = doc.GetCurrentRevision(); database.SetMaxRevTreeDepth(1); for (int i = 0; i < 10; i++) { IDictionary <string, object> properties2 = new Dictionary <string, object>(properties ); properties2.Put("tag", i); rev = rev.CreateRevision(properties2); } int numPruned = database.PruneRevsToMaxDepth(1); NUnit.Framework.Assert.AreEqual(9, numPruned); Document fetchedDoc = database.GetDocument(doc.GetId()); IList <SavedRevision> revisions = fetchedDoc.GetRevisionHistory(); NUnit.Framework.Assert.AreEqual(1, revisions.Count); numPruned = database.PruneRevsToMaxDepth(1); NUnit.Framework.Assert.AreEqual(0, numPruned); }
private static SavedRevision CreateRevisionWithRandomProps(SavedRevision parentRev, Boolean allowConflict) { var properties = new Dictionary <string, object>(); properties["val"] = Misc.CreateGUID(); var unsavedRevision = parentRev.CreateRevision(); unsavedRevision.SetUserProperties(properties); return(unsavedRevision.Save(allowConflict)); }
/// <exception cref="System.Exception"></exception> public static SavedRevision CreateRevisionWithRandomProps(SavedRevision createRevFrom , bool allowConflict) { IDictionary <string, object> properties = new Dictionary <string, object>(); properties.Put(UUID.RandomUUID().ToString(), "val"); UnsavedRevision unsavedRevision = createRevFrom.CreateRevision(); unsavedRevision.SetUserProperties(properties); return(unsavedRevision.Save(allowConflict)); }
/// <exception cref="System.Exception"></exception> public static SavedRevision CreateRevisionWithRandomProps(SavedRevision createRevFrom, bool allowConflict) { var properties = new Dictionary <string, object>(); properties.Put(Misc.CreateGUID(), "val"); var unsavedRevision = createRevFrom.CreateRevision(); unsavedRevision.SetUserProperties(properties); return(unsavedRevision.Save(allowConflict)); }
/// <exception cref="System.Exception"></exception> public static SavedRevision CreateRevisionWithRandomProps(SavedRevision createRevFrom, bool allowConflict) { var properties = new Dictionary<string, object>(); properties.Put(Misc.CreateGUID(), "val"); var unsavedRevision = createRevFrom.CreateRevision(); unsavedRevision.SetUserProperties(properties); return unsavedRevision.Save(allowConflict); }
public void TestCreateRevisions() { var properties = new Dictionary <String, Object>(); properties["testName"] = "testCreateRevisions"; properties["tag"] = 1337; var db = database; var doc = CreateDocumentWithProperties(db, properties); Assert.IsFalse(doc.Deleted); var rev1 = doc.CurrentRevision; Assert.IsTrue(rev1.Id.StartsWith("1-")); Assert.AreEqual(1, rev1.Sequence); Assert.AreEqual(0, rev1.Attachments.Count()); // Test -createRevisionWithProperties: var properties2 = new Dictionary <String, Object>(properties); properties2["tag"] = 4567; SavedRevision rev2 = null; try { rev2 = rev1.CreateRevision(properties2); } catch { Assert.Fail("Couldn't create revision"); } Assert.IsNotNull(rev2, "Put failed"); Assert.IsTrue(doc.CurrentRevisionId.StartsWith("2-"), "Document revision ID is still " + doc.CurrentRevisionId); Assert.AreEqual(rev2.Id, doc.CurrentRevisionId); Assert.IsNotNull(rev2.PropertiesAvailable); Assert.AreEqual(rev2.UserProperties, properties2); Assert.AreEqual(rev2.Document, doc); Assert.AreEqual(rev2.GetProperty("_id"), doc.Id); Assert.AreEqual(rev2.GetProperty("_rev"), rev2.Id); // Test -createRevision: var newRev = rev2.CreateRevision(); Assert.IsNull(newRev.Id); Assert.AreEqual(newRev.Parent, rev2); Assert.AreEqual(newRev.ParentId, rev2.Id); Assert.AreEqual(doc.CurrentRevision, rev2); Assert.IsFalse(doc.Deleted); var listRevs = new List <SavedRevision>(); listRevs.Add(rev1); listRevs.Add(rev2); Assert.AreEqual(newRev.RevisionHistory, listRevs); Assert.AreEqual(newRev.Properties, rev2.Properties); Assert.AreEqual(newRev.UserProperties, rev2.UserProperties); var userProperties = new Dictionary <String, Object>(); userProperties["because"] = "NoSQL"; newRev.SetUserProperties(userProperties); Assert.AreEqual(newRev.UserProperties, userProperties); var expectProperties = new Dictionary <String, Object>(); expectProperties["because"] = "NoSQL"; expectProperties["_id"] = doc.Id; expectProperties["_rev"] = rev2.Id; Assert.AreEqual(newRev.Properties, expectProperties); var rev3 = newRev.Save(); Assert.IsNotNull(rev3); Assert.AreEqual(rev3.UserProperties, newRev.UserProperties); }