public void Test2() { var serverMap = BindToServer(LifetimeDefinition.Lifetime, new RdMap <int, string> { IsMaster = true, OptimizeNested = true }, ourKey); var clientMap = BindToClient(LifetimeDefinition.Lifetime, new RdMap <int, string> { IsMaster = false, OptimizeNested = true }, ourKey); var log = new List <string>(); clientMap.Advise(LifetimeDefinition.Lifetime, (e) => log.Add(e.Kind + " " + e.Key + " " + e.NewValue)); serverMap.Add(1, "1"); serverMap[1] = "2"; serverMap[1] = "2"; //no value ServerWire.TransmitAllMessages(); clientMap[1] = "1"; ClientWire.TransmitAllMessages(); serverMap.Remove(1); ServerWire.TransmitAllMessages(); ClientWire.TransmitAllMessages(); //ack Assert.AreEqual(new List <string> { "Add 1 1", "Update 1 2", "Update 1 1", "Remove 1 " }, log); }
public void Test() { var serverMap = BindToServer(LifetimeDefinition.Lifetime, new RdMap <int, Model> { IsMaster = true }, ourMapKey); var clientMap = BindToClient(LifetimeDefinition.Lifetime, new RdMap <int, Model> { IsMaster = false }, ourMapKey); ServerProtocol.Serializers.Register(Model.Read, Model.Write); ClientProtocol.Serializers.Register(Model.Read, Model.Write); // create model on client and transfer clientMap.Add(1, new Model()); ClientWire.TransmitAllMessages(); // capture model Model capturedModel = null; serverMap.View(LifetimeDefinition.Lifetime, (modelLifetime, key, model) => { capturedModel = model; }); Assert.NotNull(capturedModel); }
public void Test2() { var serverList = BindToServer(TestLifetime, new RdList <string> { OptimizeNested = true }, ourKey); var clientList = BindToClient(TestLifetime, new RdList <string> { OptimizeNested = true }, ourKey); var log = new List <string>(); clientList.Advise(TestLifetime, (e) => log.Add(e.Kind + " " + e.Index + " " + e.NewValue)); serverList.Add("1"); serverList[0] = "2"; serverList[0] = "2"; //no value ServerWire.TransmitAllMessages(); clientList[0] = "1"; ClientWire.TransmitAllMessages(); serverList.Clear(); ServerWire.TransmitAllMessages(); Assert.AreEqual(new List <string> { "Add 0 1", "Update 0 2", "Update 0 1", "Remove 0 " }, log); }
public void TestNullability() { var serverProperty = BindToServer(LifetimeDefinition.Lifetime, new RdProperty <string> { IsMaster = true }, ourKey); var clientProperty = BindToClient(LifetimeDefinition.Lifetime, new RdProperty <string> { IsMaster = false }, ourKey); serverProperty.SetValue("Server value 1"); Assert.Throws <Assertion.AssertionException>(() => { serverProperty.SetValue(null); }); ServerWire.TransmitAllMessages(); ClientWire.TransmitAllMessages(); Assert.AreEqual("Server value 1", serverProperty.Value); Assert.AreEqual("Server value 1", clientProperty.Value); }
public void TestNullability() { var serverMap = BindToServer(LifetimeDefinition.Lifetime, new RdMap <string, string> { IsMaster = true, OptimizeNested = true }, ourKey); var clientMap = BindToClient(LifetimeDefinition.Lifetime, new RdMap <string, string> { IsMaster = false, OptimizeNested = true }, ourKey); Assert.Throws <Assertion.AssertionException>(() => { serverMap.Add("", null); }); Assert.Throws <ArgumentNullException>(() => { serverMap.Add(null, ""); }); ServerWire.TransmitAllMessages(); ClientWire.TransmitAllMessages(); Assert.AreEqual(0, serverMap.Count); Assert.AreEqual(0, clientMap.Count); }
public void TestExtPreserveContextOnLateConnect(bool useHeavyContext) { var context = useHeavyContext ? RdContextBasicTest.TestKeyHeavy.Instance : (RdContext <string>)RdContextBasicTest.TestKeyLight.Instance; context.RegisterOn(ClientProtocol.Serializers); context.RegisterOn(ServerProtocol.Contexts); var serverModel = new InterningRoot1(LifetimeDefinition.Lifetime, ServerProtocol); var clientModel = new InterningRoot1(LifetimeDefinition.Lifetime, ClientProtocol); var serverExt = serverModel.GetOrCreateExtension("test", () => new InterningExt()); var fireValues = new[] { "a", "b", "c" }; ServerWire.AutoTransmitMode = false; ClientWire.AutoTransmitMode = false; foreach (var fireValue in fireValues) { context.Value = fireValue; serverExt.Root.Value = new InterningExtRootModel(); context.Value = null; } var numReceives = 0; var receivedContexts = new HashSet <string>(); var clientExt = clientModel.GetOrCreateExtension("test", () => new InterningExt()); clientExt.Root.AdviseNotNull(LifetimeDefinition.Lifetime, _ => { numReceives++; receivedContexts.Add(context.Value); }); ClientWire.AutoTransmitMode = true; ServerWire.AutoTransmitMode = true; ClientWire.TransmitAllMessages(); ServerWire.TransmitAllMessages(); Assert.AreEqual(3, numReceives); Assert.AreEqual(fireValues, receivedContexts); }
public void TestLifetimes1() { var serverMap = BindToServer(LifetimeDefinition.Lifetime, new RdMap <int, string> { IsMaster = true, OptimizeNested = true }, ourKey); var clientMap = BindToClient(LifetimeDefinition.Lifetime, new RdMap <int, string> { IsMaster = false, OptimizeNested = true }, ourKey); var itemRemoved = ""; serverMap.Add(1, "Server value"); serverMap.View(LifetimeDefinition.Lifetime, (lifetime, i, s) => itemRemoved = i + ":" + s); ServerWire.TransmitOneMessage(); clientMap.Remove(1); ClientWire.TransmitAllMessages(); Assert.AreEqual("1:Server value", itemRemoved); }
public void TestNullability() { var serverSet = BindToServer(LifetimeDefinition.Lifetime, new RdSet <string> { IsMaster = true }, ourKey); var clientSet = BindToClient(LifetimeDefinition.Lifetime, new RdSet <string> { IsMaster = false }, ourKey); serverSet.Add("Value"); Assert.Throws <Assertion.AssertionException>(() => { serverSet.Add(null); }); ServerWire.TransmitAllMessages(); ClientWire.TransmitAllMessages(); Assert.AreEqual(1, serverSet.Count); Assert.AreEqual(serverSet.First(), "Value"); Assert.AreEqual(1, clientSet.Count); Assert.AreEqual(clientSet.First(), "Value"); }
public void TestLifetimes1() { var serverList = BindToServer(TestLifetime, new RdList <string> { OptimizeNested = true }, ourKey); var clientList = BindToClient(TestLifetime, new RdList <string> { OptimizeNested = true }, ourKey); var itemRemoved = ""; serverList.Add("Server value"); serverList.View(TestLifetime, (lifetime, i, s) => itemRemoved = i + ":" + s); ServerWire.TransmitOneMessage(); clientList.Remove("Server value"); clientList.Remove("Server value"); ClientWire.TransmitAllMessages(); Assert.AreEqual("0:Server value", itemRemoved); }
private void PumpMessagesOnce_Master() => ClientWire.TransmitAllMessages();