コード例 #1
0
        public void TestBasicFunctionality()
        {
            var rng  = new Random(1337);
            var data = new byte[512 * 1024];

            rng.NextBytes(data);

            using (var underlying = new MemoryStream(data))
                using (var additional = new MemoryStream())
                    using (var verify = new MemoryStream())
                        using (var dbts = new DoubleBufferedTeeStream(underlying, additional)) {
                            dbts.CopyTo(verify);
                            Assert.AreEqual(data, verify.GetBuffer());
                            Assert.AreEqual(data, additional.GetBuffer());
                        }
        }
コード例 #2
0
        public void TestRandomReads()
        {
            var rng  = new Random(1337);
            var data = new byte[512 * 1024];

            rng.NextBytes(data);

            using (var underlying = new MemoryStream(data))
                using (var additional = new MemoryStream())
                    using (var dbts = new DoubleBufferedTeeStream(underlying, additional)) {
                        var buf = new byte[1024 * 17];         // 17K
                        int actually;
                        for (int offset = 0; offset < data.Length; offset += actually)
                        {
                            actually = dbts.Read(buf, 0, rng.Next(buf.Length) + 1);
                            Assert.IsTrue(data.Skip(offset).Take(actually).SequenceEqual(buf.Take(actually)));
                        }

                        Assert.AreEqual(data, additional.GetBuffer());
                    }
        }