public void TestYMapSetsYMap() { Init(users: 2); var map0 = Maps[Users[0]]; var map = new YMap(); map0.Set("map", map); Assert.AreEqual(map, map0.Get("map")); map.Set("one", 1); Assert.AreEqual(1, map.Get("one")); CompareUsers(); }
public void TestUndoDeleteFilter() { Init(users: 3); var array0 = Arrays[Users[0]]; var undoManager = new UndoManager(new[] { array0 }, 500, it => !(it is Item item) || (item.Content is ContentType ct && ct.Type._map.Count == 0), new HashSet <object> { null }); var map0 = new YMap(); map0.Set("hi", 1); var map1 = new YMap(); array0.Insert(0, new[] { map0, map1 }); undoManager.Undo(); Assert.AreEqual(1, array0.Length); Assert.AreEqual(1, (array0.Get(0) as YMap).Keys().Count()); }
public void TestUndoMap() { Init(users: 3); var map0 = Maps[Users[0]]; var map1 = Maps[Users[1]]; var undoManager = new UndoManager(map0); map0.Set("a", 1); undoManager.Undo(); Assert.IsFalse(map0.ContainsKey("a")); undoManager.Redo(); Assert.AreEqual(1, map0.Get("a")); // Test subtypes and whether it can restore the whole type. var subType = new YMap(); map0.Set("a", subType); subType.Set("x", 42); Assert.AreEqual(42, (map0.Get("a") as YMap)?.Get("x")); undoManager.Undo(); Assert.AreEqual(1, map0.Get("a")); undoManager.Redo(); Assert.AreEqual(42, (map0.Get("a") as YMap)?.Get("x")); Connector.SyncAll(); // If content is overwritten by another user, undo operations should be skipped. map1.Set("a", 44); Connector.SyncAll(); undoManager.Undo(); Assert.AreEqual(44, map0.Get("a")); undoManager.Redo(); Assert.AreEqual(44, map0.Get("a")); // Test setting value multiple times. map0.Set("b", "initial"); undoManager.StopCapturing(); map0.Set("b", "val1"); map0.Set("b", "val2"); undoManager.StopCapturing(); undoManager.Undo(); Assert.AreEqual("initial", map0.Get("b")); }
public void TestNewChildDoesNotEmitEventInTransaction() { Init(users: 2); var array0 = Arrays[Users[0]]; var fired = false; Users[0].Transact(tr => { var newMap = new YMap(); newMap.EventHandler += (s, e) => { fired = true; }; array0.Insert(0, new object[] { newMap }); newMap.Set("tst", 42); }); Assert.IsFalse(fired, "Event does not trigger"); }
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(); }
public void TestUndoArray() { Init(users: 3); var array0 = Arrays[Users[0]]; var array1 = Arrays[Users[1]]; var undoManager = new UndoManager(array0); array0.Insert(0, new object[] { 1, 2, 3 }); array1.Insert(9, new object[] { 4, 5, 6 }); Connector.SyncAll(); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6 }, (ICollection)array0.ToArray()); undoManager.Undo(); CollectionAssert.AreEqual(new[] { 4, 5, 6 }, (ICollection)array0.ToArray()); undoManager.Redo(); CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6 }, (ICollection)array0.ToArray()); Connector.SyncAll(); // User1 deletes [1] array1.Delete(0, 1); Connector.SyncAll(); undoManager.Undo(); CollectionAssert.AreEqual(new[] { 4, 5, 6 }, (ICollection)array0.ToArray()); undoManager.Redo(); CollectionAssert.AreEqual(new[] { 2, 3, 4, 5, 6 }, (ICollection)array0.ToArray()); array0.Delete(0, 5); // Test nested structure. var ymap = new YMap(); array0.Insert(0, new[] { ymap }); Assert.AreEqual(0, (array0.Get(0) as YMap)?.Count); undoManager.StopCapturing(); ymap.Set("a", 1); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Count); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Get("a")); undoManager.Undo(); Assert.AreEqual(0, (array0.Get(0) as YMap)?.Count); undoManager.Undo(); CollectionAssert.AreEqual(new[] { 2, 3, 4, 5, 6 }, (ICollection)array0.ToArray()); undoManager.Redo(); Assert.AreEqual(0, (array0.Get(0) as YMap)?.Count); undoManager.Redo(); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Count); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Get("a")); Connector.SyncAll(); (array1.Get(0) as YMap).Set("b", 2); Connector.SyncAll(); Assert.AreEqual(2, (array0.Get(0) as YMap)?.Count); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Get("a")); Assert.AreEqual(2, (array0.Get(0) as YMap)?.Get("b")); undoManager.Undo(); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Count); Assert.AreEqual(2, (array0.Get(0) as YMap)?.Get("b")); undoManager.Undo(); CollectionAssert.AreEqual(new[] { 2, 3, 4, 5, 6 }, (ICollection)array0.ToArray()); undoManager.Redo(); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Count); Assert.AreEqual(2, (array0.Get(0) as YMap)?.Get("b")); undoManager.Redo(); Assert.AreEqual(2, (array0.Get(0) as YMap)?.Count); Assert.AreEqual(1, (array0.Get(0) as YMap)?.Get("a")); Assert.AreEqual(2, (array0.Get(0) as YMap)?.Get("b")); }