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]); }
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); }
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]); } }
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]); }
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()); } }
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()); } }
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); }
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]); }
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)]; }); }
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); } }
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]; }); }
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); }
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); }
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); } }
/// <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; }
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()); } }
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); } }
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); }