Пример #1
0
        static public void TestTunnelData()
        {
            // Test binary tunneling
            byte[] data = { 1, 2, 3 };
            using (var hs = new HttpSocket(
                       new EchoSocket(false, data).socket))
            {
                // We tunnel data... to ourselves!
                hs.TunnelDataTo(hs, 3);
                uint r = hs.ReadBinary();
                Assert.AreEqual(3, r);
                Assert.AreEqual(1, hs.Buffer[0]);
                Assert.AreEqual(2, hs.Buffer[1]);
                Assert.AreEqual(3, hs.Buffer[2]);
            }

            // Test the mixing of line-based and raw-based tunneling
            byte[] data2 = { (byte)'A', 13, 10, 42, 42, (byte)'B', 13, 10 };
            using (var hs = new HttpSocket(
                       new EchoSocket(false, data2).socket))
            {
                // Ditto
                hs.TunnelDataTo(hs, (uint)data2.Length);
                string msgA = hs.ReadAsciiLine();
                Assert.AreEqual("A", msgA);
                hs.TunnelDataTo(hs, 2);
                string msgB = hs.ReadAsciiLine();
                Assert.AreEqual("B", msgB);
            }
        }
Пример #2
0
        public static void TestHttpResponseBinary()
        {
            // Test the mixing of line-based and raw-based reads
            var msg = "123";
            var http_msg = "HTTP/1.0 200 OK\r\n\r\n" + msg;

            using (var hs = new HttpSocket(
                new EchoSocket(false, http_msg).socket))
            {
                var hsl = new HttpStatusLine(hs);
                Assert.AreEqual(200, hsl.StatusCode);
                /*var hh = */new HttpHeaders(hs);
                uint r = hs.ReadBinary();
                Assert.AreEqual(r, 3);
                Assert.AreEqual('1', hs.Buffer[0]);
                Assert.AreEqual('2', hs.Buffer[1]);
                Assert.AreEqual('3', hs.Buffer[2]);
            }
        }
Пример #3
0
        static public void TestHttpResponseBinary()
        {
            // Test the mixing of line-based and raw-based reads
            var msg      = "123";
            var http_msg = "HTTP/1.0 200 OK\r\n\r\n" + msg;

            using (var hs = new HttpSocket(
                       new EchoSocket(false, http_msg).socket))
            {
                var hsl = new HttpStatusLine(hs);
                Assert.AreEqual(200, hsl.StatusCode);
                /*var hh = */ new HttpHeaders(hs);
                uint r = hs.ReadBinary();
                Assert.AreEqual(r, 3);
                Assert.AreEqual('1', hs.Buffer[0]);
                Assert.AreEqual('2', hs.Buffer[1]);
                Assert.AreEqual('3', hs.Buffer[2]);
            }
        }
Пример #4
0
        public static void TestTunnelData()
        {
            // Test binary tunneling
            byte[] data = { 1, 2, 3 };
            using (var hs = new HttpSocket(
                new EchoSocket(false, data).socket))
            {
                // We tunnel data... to ourselves!
                hs.TunnelDataTo(hs, 3);
                uint r = hs.ReadBinary();
                Assert.AreEqual(3, r);
                Assert.AreEqual(1, hs.Buffer[0]);
                Assert.AreEqual(2, hs.Buffer[1]);
                Assert.AreEqual(3, hs.Buffer[2]);
            }

            // Test the mixing of line-based and raw-based tunneling
            byte[] data2 = { (byte)'A', 13, 10, 42, 42, (byte)'B', 13, 10 };
            using (var hs = new HttpSocket(
                new EchoSocket(false, data2).socket))
            {
                // Ditto
                hs.TunnelDataTo(hs, (uint)data2.Length);
                string msgA = hs.ReadAsciiLine();
                Assert.AreEqual("A", msgA);
                hs.TunnelDataTo(hs, 2);
                string msgB = hs.ReadAsciiLine();
                Assert.AreEqual("B", msgB);
            }
        }