public void TestReconnect()

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);
          });      

        });
      
    }