in rd-net/Test.RdFramework/SocketWireTest.cs [316:374]
public void TestReconnect()
{
Lifetime.Using(lifetime =>
{
SynchronousScheduler.Instance.SetActive(lifetime);
var serverProtocol = Server(lifetime, null);
var sp = NewRdProperty<int>().Static(1);
sp.BindTopLevel(lifetime, serverProtocol, Top);
sp.IsMaster = false;
var wire = serverProtocol.Wire as SocketWire.Base;
int clientCount = 0;
wire.NotNull().Connected.WhenTrue(lifetime, _ =>
{
clientCount++;
});
Assert.AreEqual(0, clientCount);
Lifetime.Using(lf =>
{
var clientProtocol = Client(lf, serverProtocol);
var cp = NewRdProperty<int>().Static(1);
cp.IsMaster = true;
cp.BindTopLevel(lf, clientProtocol, Top);
cp.SetValue(1);
WaitAndAssert(sp, 1);
Assert.AreEqual(1, clientCount);
});
Lifetime.Using(lf =>
{
sp = NewRdProperty<int>().Static(2);
sp.BindTopLevel(lifetime, serverProtocol, Top);
var clientProtocol = Client(lf, serverProtocol);
var cp = NewRdProperty<int>().Static(2);
cp.BindTopLevel(lf, clientProtocol, Top);
cp.SetValue(2);
WaitAndAssert(sp, 2);
Assert.AreEqual(2, clientCount);
});
Lifetime.Using(lf =>
{
var clientProtocol = Client(lf, serverProtocol);
var cp = NewRdProperty<int>().Static(2);
cp.BindTopLevel(lf, clientProtocol, Top);
cp.SetValue(3);
WaitAndAssert(sp, 3, 2);
Assert.AreEqual(3, clientCount);
});
});
}