Example #1
0
        public void InsertBeforeBound()
        {
            var lst = new QuickList <int>(5);

            for (var i = 0; i < 10; i++)
            {
                lst.Push(i);
            }

            lst.InsertBefore(4, 999);
            lst.InsertBefore(999, 888);
            lst.InsertBefore(888, 777);
            Assert.AreEqual(777, lst[4]);
            Assert.AreEqual(888, lst[5]);
            Assert.AreEqual(999, lst[6]);
        }
Example #2
0
        public void ReverseRemove()
        {
            var master = new QuickList <int>(20);

            for (var i = 0; i < 256; i++)
            {
                master.Push(i);
            }

            master.Remove(5, -999);
            master.Remove(6, -999);

            Assert.AreEqual(7, master[5]);
            Assert.AreEqual(8, master[6]);
            Assert.AreEqual(254, master.Count);
        }
Example #3
0
        public void GetRangeBlockTest()
        {
            var master = new QuickList <int>(20);

            for (var i = 0; i < 256; i++)
            {
                master.Push(i);
            }

            var elements = master.GetRange(100, 200);

            Assert.AreEqual(101, elements.Length);
            for (var i = 100; i < 200; i++)
            {
                Assert.AreEqual(i, elements[i - 100]);
            }
        }
Example #4
0
        public void SetListValueByIndex()
        {
            var master = new QuickList <int>(5);

            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }

            master[0]   = 999;
            master[128] = 999;
            master[254] = 999;

            Assert.AreEqual(999, master[0]);
            Assert.AreEqual(999, master[128]);
            Assert.AreEqual(999, master[254]);
        }
Example #5
0
        public void NullElementShiftTest()
        {
            var master = new QuickList <object>(3);
            var result = new List <object> {
                null, 1, 2, null, 3
            };

            foreach (var r in result)
            {
                master.Push(r);
            }

            foreach (var r in result)
            {
                Assert.AreEqual(r, master.Shift());
            }
        }
Example #6
0
        public void NullElementPopTest()
        {
            var master = new QuickList <object>(3);
            var result = new List <object> {
                null, 1, 2, null, 3
            };

            foreach (var r in result)
            {
                master.Push(r);
            }

            result.Reverse();
            foreach (var r in result)
            {
                Assert.AreEqual(r, master.Pop());
            }
        }
Example #7
0
        public void ReverseRemoveReturnNumLimitTest()
        {
            var master = new QuickList <int>(8);

            master.Push(111);
            master.Push(111);
            master.Push(111);
            master.Push(222);
            master.Push(333);
            master.Push(111);
            master.Push(111);
            master.Push(444);
            master.Push(333);

            var removeNum = master.Remove(111, -3);

            Assert.AreEqual(3, removeNum);
            Assert.AreEqual(111, master[0]);
            Assert.AreEqual(111, master[1]);
            Assert.AreEqual(222, master[2]);
            Assert.AreEqual(333, master[3]);
            Assert.AreEqual(444, master[4]);
            Assert.AreEqual(6, master.Count);
        }
Example #8
0
        public void FullNodeAndInsert()
        {
            var master = new QuickList <int>(5);

            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }
            master.InsertBefore(5, 999);
            Assert.AreEqual(999, master[5]);

            master = new QuickList <int>(5);
            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }
            master.InsertAfter(4, 999);
            Assert.AreEqual(999, master[5]);
        }
Example #9
0
        public void FindByIndexOverflow()
        {
            var master = new QuickList <int>(5);

            for (var i = 0; i < 10; i++)
            {
                master.Push(i);
            }

            ExceptionAssert.Throws <ArgumentOutOfRangeException>(() =>
            {
                var val = master[master.Count];
            });

            ExceptionAssert.Throws <ArgumentOutOfRangeException>(() =>
            {
                var val = master[-(master.Count + 1)];
            });
        }
Example #10
0
        public void NullElementPushTest()
        {
            var master = new QuickList <object>(3);
            var result = new List <object> {
                null, 1, 2, null, 3
            };

            foreach (var r in result)
            {
                master.Push(r);
            }

            var index = 0;

            foreach (var r in master)
            {
                Assert.AreEqual(result[index++], r);
            }
        }
Example #11
0
        public void FindOutArgsIndexNode()
        {
            var master = new QuickList <int>(5);

            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }

            ExceptionAssert.Throws <ArgumentOutOfRangeException>(() =>
            {
                var v = master[256];
            });

            ExceptionAssert.Throws <ArgumentOutOfRangeException>(() =>
            {
                var v = master[-256];
            });
        }
Example #12
0
        public void PushShiftData()
        {
            var num  = 500000;
            var lst  = new QuickList <int>();
            var rand = new System.Random();
            var lst2 = new List <int>();

            for (var i = 0; i < num; i++)
            {
                var v = rand.Next();
                lst.Push(v);
                lst2.Add(v);
            }
            foreach (var v in lst2)
            {
                Assert.AreEqual(v, lst.Shift());
            }
            Assert.AreEqual(0, lst.Count);
            Assert.AreEqual(0, lst.Length);
        }
Example #13
0
        public void InsertAfterTest()
        {
            var lst = new QuickList <int>(5);

            for (var i = 0; i < 10; i++)
            {
                lst.Push(i);
            }

            lst.InsertAfter(1, 999);
            lst.InsertAfter(3, 999);
            lst.InsertAfter(5, 999);
            lst.InsertAfter(7, 999);
            lst.InsertAfter(9, 999);

            Assert.AreEqual(999, lst[2]);
            Assert.AreEqual(999, lst[5]);
            Assert.AreEqual(999, lst[8]);
            Assert.AreEqual(999, lst[11]);
            Assert.AreEqual(15, lst.Count);
        }
Example #14
0
        public void TrimBoundTest()
        {
            var master = new QuickList <int>(5);

            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }

            Assert.AreEqual(250, master.Trim(250, 999));
            Assert.AreEqual(250, master[0]);
            Assert.AreEqual(251, master[1]);
            Assert.AreEqual(252, master[2]);
            Assert.AreEqual(253, master[3]);
            Assert.AreEqual(254, master[4]);

            master = new QuickList <int>(5);
            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }
        }
Example #15
0
        /// <summary>
        /// 获取一个空闲对象
        /// </summary>
        /// <returns></returns>
        public GameObject GetFree()
        {
            if (null == rawResResponse)
            {
                return null;
            }

            ItemEntity result = null;

            if (FreePools.Count <= 0)
            {
                result = CreateNewItem();
                if (null != result)
                {
                    result.transform.parent = groupNodeTransform; // 默认放在内存池节点下
                }
            }
            else
            {
                // 先从尾部pop出去
                result = FreePools.Pop();
                if (null == result) // 如果是回收时的对象已经是空对象,被Destroy掉了,那么取出来的时候,仍然可能是空的
                {
                    result = CreateNewItem(); // new的时候已经插入到链表头部了
                }
            }

            if (null != result)
            {
                result.PoolInitEvent();
                result.gameObject.SetActive(true); // 默认显示出来
                result.hideFlags = HideFlags.None;
                UsePools.Push(result); // 添加到使用队列中
                return result.gameObject;
            }

            return null;
        }
Example #16
0
        public void FirstLastTest()
        {
            var master = new QuickList <int>(5);

            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }

            Assert.AreEqual(0, master.First());
            Assert.AreEqual(254, master.Last());

            for (var i = 0; i < 255; i++)
            {
                master.Shift();
                if (i < 254)
                {
                    Assert.AreEqual(i + 1, master.First());
                }
            }

            Assert.AreEqual(0, master.Count);

            master = new QuickList <int>(5);
            for (var i = 0; i < 255; i++)
            {
                master.Push(i);
            }

            for (var i = 0; i < 255; i++)
            {
                if (i < 254)
                {
                    Assert.AreEqual(254 - i, master.Last());
                }
                Assert.AreEqual(254 - i, master.Pop());
            }
        }
Example #17
0
        public void TrimToOneTest()
        {
            foreach (var cap in new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 })
            {
                var master = new QuickList <int>(cap);
                master.Push(0);
                master.Push(1);
                master.Push(2);
                master.Push(3);
                master.Push(4);
                master.Push(5);
                master.Push(6);
                master.Push(7);
                master.Push(8);
                master.Push(9);
                master.Push(10);
                master.Push(11);
                master.Push(12);

                Assert.AreEqual(12, master.Trim(4, 4));
                var i = 4;
                foreach (var v in master)
                {
                    Assert.AreEqual(i++, v);
                }
                Assert.AreEqual(1, master.Count);
                Assert.AreEqual(5, i);
            }
        }
Example #18
0
        public void MergeNodeBeforeTest()
        {
            var master = new QuickList <int>(10);

            //node 1
            master.Push(0);
            master.Push(1);
            master.Push(2);
            master.Push(3);
            master.Push(4);
            master.Push(5);
            master.Push(6);
            master.Push(7);
            master.Push(8);
            master.Push(9);

            //node 2
            master.Push(10);
            master.Push(11);
            master.Push(12);
            master.Push(13);
            master.Push(14);
            master.Push(15);
            master.Push(16);
            master.Push(17);
            master.Push(18);
            master.Push(19);

            //node 3
            master.Push(20);
            master.Push(21);
            master.Push(22);
            master.Push(23);
            master.Push(24);
            master.Push(25);
            master.Push(26);
            master.Push(27);
            master.Push(28);
            master.Push(29);


            master.InsertBefore(12, 777);
            master.InsertBefore(12, 666);
            master.InsertBefore(12, 555);

            Assert.AreEqual(4, master.Length);

            master.InsertBefore(555, 444);

            Assert.AreEqual(4, master.Length);
        }