public void NoEventWatch()
        {
            using (var pipeServer = new AnonymousPipeServerStream(PipeDirection.In))
                using (var pipeClient = new AnonymousPipeClientStream(PipeDirection.Out, pipeServer.ClientSafePipeHandle))
                {
                    var ps = new PackedStream(pipeServer, pipeClient);

                    var data = new byte[] { 0, 1, 2 };
                    ps.Write(new MemoryStream(data));
                }
        }
        public void SimpleMessageTest()
        {
            var pipeServer = new AnonymousPipeServerStream(PipeDirection.In);
            var pipeClient = new AnonymousPipeClientStream(PipeDirection.Out, pipeServer.ClientSafePipeHandle);

            try
            {
                var    ps    = new PackedStream(pipeServer, pipeClient);
                var    rdn   = new Random();
                var    data  = new byte[rdn.Next(10, 1024)];
                byte[] nData = null;
                var    mre   = new ManualResetEvent(false);
                rdn.NextBytes(data);

                ps.DataReceived += (s, d) =>
                {
                    nData = d.MemoryStream.ToArray();

                    mre.Set();
                };

                ps.Write(new MemoryStream(data));

                mre.WaitOne();

                Assert.AreEqual(data.Length, nData.Length);

                for (var i = 0; i < data.Length; i++)
                {
                    Assert.AreEqual(data[i], nData[i]);
                }
            }
            finally
            {
                pipeServer.Close();
                pipeClient.Close();
            }
        }