예제 #1
0
        public void Appending()
        {
            var page = new SpoolPage();

            page.Append("hello");
            Assert.IsNull(page.Next);
            Assert.AreEqual(1, page.Count);
            Assert.AreEqual("hello", page.Buffer[0]);
        }
예제 #2
0
        public void AppendMultiple()
        {
            var page = new SpoolPage();

            page.Append("hello");
            page.Append("world");
            Assert.IsNull(page.Next);
            Assert.AreEqual(2, page.Count);
            Assert.AreEqual("hello", page.Buffer[0]);
            Assert.AreEqual("world", page.Buffer[1]);
        }
예제 #3
0
        public void AppendOverBoundary()
        {
            var page = new SpoolPage();
            var last = page;

            for (int index = 0; index != SpoolPage.BUFFER_SIZE + 30; ++index)
            {
                last = last.Append(index.ToString());
            }
            Assert.AreNotSame(page, last);
            Assert.AreEqual(SpoolPage.BUFFER_SIZE, page.Count);
            Assert.AreEqual(30, last.Count);
            Assert.AreEqual(SpoolPage.BUFFER_SIZE.ToString(), last.Buffer[0]);
        }
예제 #4
0
        public void CallsReleaseOnNextOnlyIfIsNotReleasedAlready()
        {
            var first = new SpoolPage();
            var next  = first;

            for (int index = 0; index != SpoolPage.BUFFER_SIZE + 30; ++index)
            {
                next = next.Append(index.ToString());
            }
            next.Release();

            var second = new SpoolPage();

            second.Append("1");
            second.Append("2");
            second.Append("3");

            first.Release();

            Assert.AreEqual(3, second.Count);
            Assert.AreEqual("1", second.Buffer[0]);
            Assert.AreEqual("2", second.Buffer[1]);
            Assert.AreEqual("3", second.Buffer[2]);
        }