public static void NullTests()
 {
     var obj = TestObject.MakeRandom();
     obj.Array = null;
     obj.AString = null;
     var failures = 0;
     var serializer = new BinarySerializerService();
     for (var i = 0; i < 50000000; ++i)
     {
         var pass = true;
         using (var memStream = new MemoryStream())
         {
             serializer.Serialize(obj, memStream);
             memStream.Position = 0;
             var result = serializer.Deserialize<TestObject>(memStream);
             pass &= result.Compare(obj, false);
         }
         Program.WriteCenter(string.Format("Test: {0}", i + 1), 2);
         Program.WriteCenter(string.Format("{0}", pass ? "PASS" : "FAIL"),  1);
         failures += pass ? 0 : 1;
         Program.WriteCenter(string.Format("Failures: {0}", failures), 0);
     }
     Console.ReadKey();
     Console.Clear();
 }
        public static void NullTests()
        {
            var obj = TestObject.MakeRandom();

            obj.Array   = null;
            obj.AString = null;
            var failures   = 0;
            var serializer = new BinarySerializerService();

            for (var i = 0; i < 50000000; ++i)
            {
                var pass = true;
                using (var memStream = new MemoryStream())
                {
                    serializer.Serialize(obj, memStream);
                    memStream.Position = 0;
                    var result = serializer.Deserialize <TestObject>(memStream);
                    pass &= result.Compare(obj, false);
                }
                Program.WriteCenter(string.Format("Test: {0}", i + 1), 2);
                Program.WriteCenter(string.Format("{0}", pass ? "PASS" : "FAIL"), 1);
                failures += pass ? 0 : 1;
                Program.WriteCenter(string.Format("Failures: {0}", failures), 0);
            }
            Console.ReadKey();
            Console.Clear();
        }
        private void RunSubscriberTest()
        {
            var          listener   = new TcpStubListener <SimpleMessage <int>, int>(new SimpleMessageSerializer <int>(BinarySerializerService.GetSerializer <int>()), new SingleThreadedTimerService());
            const ushort port       = 50124;
            var          connection = new StubConnection <SimpleMessage <int>, int>(
                new ThreadManager(RuntimeCommon.DefaultLogger),
                new TcpStubBuilder <SimpleMessage <int>, int>(new SimpleMessageSerializer <int>(BinarySerializerService.GetSerializer <int>()), new SingleThreadedTimerService()));

            RunClientSubscriber(connection, listener, port);
        }
        private void RunClientServerTest()
        {
            const ushort port     = 5321;
            var          listener = new TcpStubListener <SimpleMessage <int>, int>(new SimpleMessageSerializer <int>(BinarySerializerService.GetSerializer <int>()), new SingleThreadedTimerService());
            var          endPoint = new IPEndPoint(IPAddress.Any, port);

            listener.BindTo(endPoint);
            var serverTask        = Task.Run(() => AcceptSocket(listener));
            var connectionBuilder = new TcpStubBuilder <SimpleMessage <int>, int>(new SimpleMessageSerializer <int>(BinarySerializerService.GetSerializer <int>()), new SingleThreadedTimerService());
            var ep = new IPEndPoint(IPAddress.Loopback, port);

            Console.WriteLine(@"Client: Building connection to {0}", ep);
            var connection = connectionBuilder.Build(ep);

            Console.WriteLine(@"Client: Sending Hello");
            connection.Write(new SimpleMessage <int>(0, Encoding.ASCII.GetBytes("Hello")));
            Console.WriteLine(@"Client: Reading response");
            int size;
            var response = connection.ReadNext(out size);

            if (null == response)
            {
                Console.WriteLine(@"Received null from connection");
                connection.Dispose();
                return;
            }
            Console.WriteLine(@"Client: Read {0} bytes", size);
            Console.WriteLine(@"Client: Got Response; contents: {0}", Encoding.ASCII.GetString(response.Data));
            Console.WriteLine(@"Client: Done, exiting");
            connection.Dispose();
            serverTask.Wait();
            Console.WriteLine();
            Console.WriteLine(@"Press any key to exit");
            Console.ReadKey();
        }