Beispiel #1
0
        public void TestRestoreSnapshotWithSubType()
        {
            var doc = new YDoc(new YDocOptions {
                Gc = false
            });

            doc.GetArray("array").Insert(0, new[] { new YMap() });
            var subMap = doc.GetArray("array").Get(0) as YMap;

            subMap.Set("key1", "value1");

            var snap = doc.CreateSnapshot();

            subMap.Set("key2", "value2");
            var docRestored = snap.RestoreDocument(doc);

            var restoredSubMap = docRestored.GetArray("array").Get(0) as YMap;

            subMap = doc.GetArray("array").Get(0) as YMap;

            Assert.AreEqual(1, restoredSubMap.Count);
            Assert.AreEqual("value1", restoredSubMap.Get("key1"));

            Assert.AreEqual(2, subMap.Count);
            Assert.AreEqual("value1", subMap.Get("key1"));
            Assert.AreEqual("value2", subMap.Get("key2"));
        }
Beispiel #2
0
        public void TestRestoreDeletedItem1()
        {
            var doc = new YDoc(new YDocOptions {
                Gc = false
            });

            doc.GetArray("array").Insert(0, new[] { "item1", "item2" });

            var snap = doc.CreateSnapshot();

            doc.GetArray("array").Delete(0);
            var docRestored = snap.RestoreDocument(doc);

            CollectionAssert.AreEqual(new[] { "item1", "item2" }, (ICollection)docRestored.GetArray("array").ToArray());
            CollectionAssert.AreEqual(new[] { "item2" }, (ICollection)doc.GetArray("array").ToArray());
        }
Beispiel #3
0
        public void TestBasicRestoreSnapshot()
        {
            var doc = new YDoc(new YDocOptions {
                Gc = false
            });

            doc.GetArray("array").Insert(0, new[] { "hello" });

            var snap = doc.CreateSnapshot();

            doc.GetArray("array").Insert(1, new[] { "world" });

            var docRestored = snap.RestoreDocument(doc);

            CollectionAssert.AreEqual(new[] { "hello" }, (ICollection)docRestored.GetArray("array").ToArray());
            CollectionAssert.AreEqual(new[] { "hello", "world" }, (ICollection)doc.GetArray("array").ToArray());
        }
Beispiel #4
0
        public void TestRestoreLeftItem()
        {
            var doc = new YDoc(new YDocOptions {
                Gc = false
            });

            doc.GetArray("array").Insert(0, new[] { "item1" });
            doc.GetMap("map").Set("test", 1);
            doc.GetArray("array").Insert(0, new[] { "item0" });

            var snap = doc.CreateSnapshot();

            doc.GetArray("array").Delete(1);
            var docRestored = snap.RestoreDocument(doc);

            CollectionAssert.AreEqual(new[] { "item0", "item1" }, (ICollection)docRestored.GetArray("array").ToArray());
            CollectionAssert.AreEqual(new[] { "item0" }, (ICollection)doc.GetArray("array").ToArray());
        }
Beispiel #5
0
        public void TestEmptyRestoreSnapshot()
        {
            var doc = new YDoc(new YDocOptions {
                Gc = false
            });
            var snap = doc.CreateSnapshot();

            snap.StateVector[9999] = 0;
            doc.GetArray().Insert(0, new[] { "world" });

            var docRestored = snap.RestoreDocument(doc);

            Assert.AreEqual(0, docRestored.GetArray().ToArray().Count);
            CollectionAssert.AreEqual(new[] { "world" }, (ICollection)doc.GetArray().ToArray());

            // Now this snapshot reflects the latest state. It should still work.
            var snap2        = doc.CreateSnapshot();
            var docRestored2 = snap2.RestoreDocument(doc);

            CollectionAssert.AreEqual(new[] { "world" }, (ICollection)docRestored2.GetArray().ToArray());
        }
Beispiel #6
0
        public void TestClientIdDuplicateChange()
        {
            var doc1 = new YDoc();

            doc1.ClientId = 0;
            var doc2 = new YDoc();

            doc2.ClientId = 0;
            Assert.AreEqual(doc1.ClientId, doc2.ClientId);

            doc1.GetArray("a").Insert(0, new object[] { 1, 2 });
            doc2.ApplyUpdateV2(doc1.EncodeStateAsUpdateV2());
            Assert.AreNotEqual(doc1.ClientId, doc2.ClientId);
        }
Beispiel #7
0
        public void TestBasicUpdate()
        {
            var doc1    = new YDoc();
            var doc2    = new YDoc();
            var content = new List <object> {
                "hi"
            };

            doc1.GetArray("array").Insert(0, content);
            var update = doc1.EncodeStateAsUpdateV2();

            doc2.ApplyUpdateV2(update);

            CollectionAssert.AreEqual(content, (ICollection)doc2.GetArray("array").ToArray());
        }
Beispiel #8
0
        public void TestIteratingArrayContainingTypes()
        {
            var       y        = new YDoc();
            var       arr      = y.GetArray("arr");
            const int numItems = 10;

            for (int i = 0; i < numItems; i++)
            {
                var map = new YMap();
                map.Set("value", i);
                arr.Add(new[] { map });
            }

            int cnt = 0;

            foreach (var item in arr)
            {
                Assert.AreEqual(cnt++, (item as YMap).Get("value"));
            }

            y.Destroy();
        }