コード例 #1
0
        public void Realocate0()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");            //2
            list.Add("b");            //2
            list.Add("c");            //4
            list.Add("d");            //4
            list.Add("e");            //8
            list.Add("f");            //8
            list.Add("g");            //8
            list.Add("h");            //8
            list.Add("i");            //16
            list.Add("j");            //16
            list.Add("k");            //16
            list.Add("l");            //16
            list.Add("m");            //16
            list.Add("n");            //16
            Assert.AreEqual(14, list.count);
            Assert.AreEqual("a", list.buffer[0]);
            Assert.AreEqual("i", list.buffer[8]);
            Assert.AreEqual(16, list.buffer.Length);

            list.Realocate();
            Assert.AreEqual(16, list.buffer.Length);

            list.Pop();
            list.Pop();
            list.Pop();
            list.Pop();
            list.Pop();
            list.Pop();
            list.Realocate();
            Assert.AreEqual(8, list.count);
            Assert.AreEqual(16, list.buffer.Length);

            list.Pop();
            list.Pop();
            list.Pop();
            list.Pop();
            list.Realocate();
            Assert.AreEqual(4, list.count);
            Assert.AreEqual(8, list.buffer.Length);

            list.Pop();
            list.Pop();
            list.Realocate();
            Assert.AreEqual(2, list.count);
            Assert.AreEqual(4, list.buffer.Length);

            list.Pop();
            list.Realocate();
            Assert.AreEqual(1, list.count);
            Assert.AreEqual(2, list.buffer.Length);

            list.Pop();
            list.Realocate();
            Assert.AreEqual(0, list.count);
            Assert.AreEqual(2, list.buffer.Length);
        }
コード例 #2
0
        public void Resize_Shrink1()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");
            list.Add("b");
            list.Add("c");
            list.Add("d");
            list.Add("e");
            list.Add("f");
            list.Add("g");
            list.Add("h");
            list.Add("i");
            list.Add("j");
            list.Add("k");
            list.Add("l");
            list.Add("m");
            list.Add("n");
            Assert.AreEqual(14, list.count);
            Assert.AreEqual("a", list.buffer[0]);
            Assert.AreEqual("i", list.buffer[8]);
            Assert.AreEqual(16, list.buffer.Length);

            list.Resize(2);
            Assert.AreEqual(2, list.count);
            Assert.AreEqual(16, list.buffer.Length);
            Assert.AreEqual("a", list.buffer[0]);
            Assert.AreEqual("b", list.buffer[1]);
            Assert.AreEqual(null, list.buffer[2]);
            Assert.AreEqual(null, list.buffer[3]);
            Assert.AreEqual(null, list.buffer[15]);
        }
コード例 #3
0
        public void Pop_Normal()
        {
            PredictableList <int> list = new PredictableList <int>(2);

            list.Add(2);
            list.Add(8);
            list.Add(6);
            Assert.AreEqual(3, list.count);
            Assert.AreEqual(2, list.buffer[0]);
            Assert.AreEqual(8, list.buffer[1]);
            Assert.AreEqual(6, list.buffer[2]);

            Assert.AreEqual(6, list.Pop());
            Assert.AreEqual(2, list.count);
            Assert.AreEqual(2, list.buffer[0]);
            Assert.AreEqual(8, list.buffer[1]);
            Assert.AreEqual(0, list.buffer[2]);

            Assert.AreEqual(8, list.Pop());
            Assert.AreEqual(1, list.count);
            Assert.AreEqual(2, list.buffer[0]);
            Assert.AreEqual(0, list.buffer[1]);
            Assert.AreEqual(0, list.buffer[2]);

            Assert.AreEqual(2, list.Pop());
            Assert.AreEqual(0, list.count);
            Assert.AreEqual(0, list.buffer[0]);
            Assert.AreEqual(0, list.buffer[1]);
            Assert.AreEqual(0, list.buffer[2]);

            Assert.AreEqual(0, list.Pop());
            Assert.AreEqual(0, list.buffer[0]);
            Assert.AreEqual(0, list.buffer[1]);
            Assert.AreEqual(0, list.buffer[2]);
        }
コード例 #4
0
        public void Resize_Expand1()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");
            list.Add("b");
            list.Add("c");
            Assert.AreEqual(3, list.count);
            Assert.AreEqual(4, list.buffer.Length);

            list.Resize(5);
            Assert.AreEqual(5, list.count);
            Assert.AreEqual(8, list.buffer.Length);
            Assert.AreEqual("a", list.buffer[0]);
            Assert.AreEqual("b", list.buffer[1]);
            Assert.AreEqual("c", list.buffer[2]);
            Assert.AreEqual(null, list.buffer[3]);
            Assert.AreEqual(null, list.buffer[4]);
            Assert.AreEqual(null, list.buffer[5]);
            Assert.AreEqual(null, list.buffer[6]);
            Assert.AreEqual(null, list.buffer[7]);

            list.Resize(8);
            Assert.AreEqual(8, list.count);
            Assert.AreEqual(8, list.buffer.Length);
            Assert.AreEqual("a", list.buffer[0]);
            Assert.AreEqual("b", list.buffer[1]);
            Assert.AreEqual("c", list.buffer[2]);
            Assert.AreEqual(null, list.buffer[3]);
            Assert.AreEqual(null, list.buffer[4]);
            Assert.AreEqual(null, list.buffer[5]);
            Assert.AreEqual(null, list.buffer[6]);
            Assert.AreEqual(null, list.buffer[7]);
        }
コード例 #5
0
        public void ToArray()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");
            list.Add("b");
            list.Add("c");
            CollectionAssert.AreEqual(new string[] { "a", "b", "c" }, list.ToArray());
        }
コード例 #6
0
        public void Resize_Expand0()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");
            list.Add("b");
            list.Add("c");
            Assert.AreEqual(3, list.count);
            Assert.AreEqual(4, list.buffer.Length);

            list.Resize(4);
            Assert.AreEqual(4, list.count);
            Assert.AreEqual(4, list.buffer.Length);
            Assert.AreEqual(null, list.buffer[3]);
        }
コード例 #7
0
        public void Resize_Shrink0()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");
            list.Add("b");
            list.Add("c");
            Assert.AreEqual(3, list.count);
            Assert.AreEqual(4, list.buffer.Length);

            list.Resize(2);
            Assert.AreEqual(2, list.count);
            Assert.AreEqual(4, list.buffer.Length);
            Assert.AreEqual("a", list.buffer[0]);
            Assert.AreEqual("b", list.buffer[1]);
            Assert.AreEqual(null, list.buffer[2]);
            Assert.AreEqual(null, list.buffer[3]);
        }
コード例 #8
0
        public void Normal()
        {
            PredictableList <int> list = new PredictableList <int>(2);

            Assert.AreEqual(0, list.count);

            list.Add(3);
            Assert.AreEqual(1, list.count);
            list.Add(8);
            list.Add(5);
            Assert.AreEqual(3, list.count);

            Assert.AreEqual(3, list.buffer[0]);
            Assert.AreEqual(8, list.buffer[1]);
            Assert.AreEqual(5, list.buffer[2]);

            list.Clear();
            Assert.AreEqual(0, list.count);
        }
コード例 #9
0
        public void Peek_ThrowsExceptionOnEmptyList()
        {
            PredictableList <string> list = new PredictableList <string>(2);

            list.Add("a");
            list.Add("b");
            CollectionAssert.AreEqual(new string[] { "a", "b" }, list.ToArray());
            list.Pop();
            list.Pop();
            CollectionAssert.AreEqual(new string[] { }, list.ToArray());

            try
            {
                Assert.AreEqual("c", list.Peek());
                Assert.Fail("Mast throws exception");
            }
            catch (IndexOutOfRangeException)
            {
            }
        }
コード例 #10
0
        public void Alocation()
        {
            PredictableList <int> list = new PredictableList <int>(2);

            Assert.AreEqual(0, list.count);
            Assert.AreEqual(2, list.buffer.Length);

            list.Add(3);
            Assert.AreEqual(1, list.count);
            CollectionAssert.AreEqual(new int[] { 3, 0 }, list.buffer);

            list.Add(8);
            Assert.AreEqual(2, list.count);
            CollectionAssert.AreEqual(new int[] { 3, 8 }, list.buffer);

            list.Add(5);
            Assert.AreEqual(3, list.count);
            CollectionAssert.AreEqual(new int[] { 3, 8, 5, 0 }, list.buffer);

            list.Clear();
            Assert.AreEqual(0, list.count);
            CollectionAssert.AreEqual(new int[] { 0, 0, 0, 0 }, list.buffer);
        }