public void TestMethod3() { var queue = new NMeCab.Core.PriorityQueue <Element>(); var collection = new List <Element>(); var order = 0; var count = 0; var rnd = new Random(); //追加と取り出しを一定数繰り返す for (int i = 0; i < 1000; i++) { //ランダム優先度でランダム個追加 int repeat = rnd.Next(1, 10); for (int j = 0; j < repeat; j++) { var item = new Element { Priority = rnd.Next(10), Order = order }; collection.Add(item); queue.Push(item); order++; count++; Assert.AreEqual(count, queue.Count); } //並べ直し collection = (from e in collection orderby e.Priority, e.Order select e).ToList(); //ランダム個取り出し repeat = rnd.Next(1, collection.Count); for (int j = 0; j < repeat; j++) { var actual = queue.Pop(); var expected = collection[j]; count--; Assert.AreEqual(expected, actual); Assert.AreEqual(count, queue.Count); } collection.RemoveRange(0, repeat); } while (queue.Count > 0) { queue.Pop(); //空にする } this.EmptyExceptionTest(queue); }
public void TestMethod4() { var queue = new NMeCab.Core.PriorityQueue <string>(); for (int i = 0; i < 10; i++) { queue.Push("abc"); } queue.Clear(); //テスト Assert.AreEqual(0, queue.Count); this.EmptyExceptionTest(queue); }
public void TestMethod5() { var queue = new NMeCab.Core.PriorityQueue <int>(); //10万件挿入 for (int i = 0; i < 100000; i++) { queue.Push(i % 5); } //取り出し while (queue.Count > 0) { queue.Pop(); } }
public void TestMethod2() { var queue = new NMeCab.Core.PriorityQueue <Element>(); var collection = new List <Element>(); var count = 0; for (int i = 0; i < 5; i++) { //追加 優先度降順 for (int j = 5; j >= 0; j--) { var item = new Element { Priority = j, Order = count }; queue.Push(item); collection.Add(item); count++; Assert.AreEqual(count, queue.Count); } } //並べ直し collection = (from e in collection orderby e.Priority, e.Order select e).ToList(); //取り出し foreach (var expected in collection) { var actual = queue.Pop(); count--; Assert.AreEqual(expected, actual); Assert.AreEqual(count, queue.Count); } this.EmptyExceptionTest(queue); }