コード例 #1
0
        public void TestReadWriteWithOffset()
        {
            MemoryStream mainStream = new MemoryStream();
            MemoryStream walStream = new MemoryStream();

            using (AtomicStream stream = new AtomicStream(mainStream, walStream))
            {
                stream.Write(new byte[] { 1, 2, 3, 4, 5 }, 2, 2);
                stream.Commit();

                byte[] buffer = new byte[4];
                stream.Position = 0;

                Assert.That(stream.Read(buffer, 1, 3), Is.EqualTo(2));
                Assert.That(buffer, Is.EqualTo(new byte[] { 0, 3, 4, 0 }));
            }
        }
コード例 #2
0
        public void TestOverlappingWrite()
        {
            MemoryStream mainStream = new MemoryStream();
            MemoryStream walStream = new MemoryStream();

            using (AtomicStream stream = new AtomicStream(mainStream, walStream))
            {
                stream.Write(new byte[] { 1, 2, 3, 4 }, 0, 4);
                stream.Position = 2;
                stream.Write(new byte[] { 5, 6, 7, 8 }, 0, 4);
                stream.Commit();

                byte[] buffer = new byte[7];
                stream.Position = 0;

                Assert.That(stream.Read(buffer, 0, 7), Is.EqualTo(6));
                Assert.That(buffer, Is.EqualTo(new byte[] { 1, 2, 5, 6, 7, 8, 0 }));
            }
        }
コード例 #3
0
        public void TestSequentialRead()
        {
            MemoryStream mainStream = new MemoryStream();
            MemoryStream walStream = new MemoryStream();

            using (AtomicStream stream = new AtomicStream(mainStream, walStream))
            {
                stream.Write(new byte[] {1, 2, 3, 4, 5}, 0, 5);
                stream.Commit();

                byte[] buffer = new byte[3];
                stream.Position = 0;

                Assert.That(stream.Read(buffer, 0, 3), Is.EqualTo(3));
                Assert.That(buffer, Is.EqualTo(new byte[] {1, 2, 3}));

                Assert.That(stream.Read(buffer, 0, 3), Is.EqualTo(2));
                Assert.That(buffer, Is.EqualTo(new byte[] {4, 5, 3}));

                Assert.That(stream.Read(buffer, 0, 3), Is.EqualTo(0));
                Assert.That(buffer, Is.EqualTo(new byte[] {4, 5, 3}));
            }
        }
コード例 #4
0
        public void TestSimple()
        {
            MemoryStream mainStream = new MemoryStream();
            MemoryStream walStream = new MemoryStream();

            using (AtomicStream stream = new AtomicStream(mainStream, walStream))
            {
                stream.Write(new byte[] {1}, 0, 1);
                stream.Commit();

                Assert.That(mainStream.ToArray(), Is.EqualTo(new byte[] {1}));

                stream.Write(new byte[] {2}, 0, 1);
                stream.Commit();

                Assert.That(mainStream.ToArray(), Is.EqualTo(new byte[] {1, 2}));

                stream.Position = 0;
                stream.Write(new byte[] {3}, 0, 1);
                stream.Commit();

                Assert.That(mainStream.ToArray(), Is.EqualTo(new byte[] {3, 2}));
            }
        }