Exemple #1
0
    bool Test_5()
    {
        List <HeapTestItem> list  = new List <HeapTestItem>();
        Heap <HeapTestItem> queue = new Heap <HeapTestItem>(Heap <HeapTestItem> .CheckPriorityMethod.CPM_LESS);

        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = CreateTestItem(random_1_to_10[i]);
            queue.Enqueue(item);
            list.Add(item);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            list[i].value = i + 1;
        }
        queue.Build();
        HeapTestItem must_less_priority_than_this = CreateTestItem(0);

        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_5, 1");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.Dequeue();
            if (item.value != (i + 1))
            {
                Print("Test_5, 2");
                return(false);
            }
        }
        return(true);
    }
Exemple #2
0
    bool Test_4()
    {
        Heap <HeapTestItem> queue = new Heap <HeapTestItem>(Heap <HeapTestItem> .CheckPriorityMethod.CPM_CUSTOM, HeapTestItem.CustomComparerGreater);

        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            queue.Enqueue(CreateTestItem(random_1_to_10[i]));
        }
        HeapTestItem must_less_priority_than_this = CreateTestItem(11);

        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_4, 1");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.Dequeue();
            if (item.value != (10 - i))
            {
                Print("Test_4, 2");
                return(false);
            }
        }
        return(true);
    }
Exemple #3
0
    public override int CompareTo(object obj)
    {
        HeapTestItem item = obj as HeapTestItem;

        if (item == null)
        {
            return(-1);
        }
        int result = value - item.value;

        if (result != 0)
        {
            return(result);
        }
        else
        {
            return(_insertion_index - item._insertion_index);
        }
    }
Exemple #4
0
    bool Test_9()
    {
        Heap <HeapTestItem> queue = new Heap <HeapTestItem>(Heap <HeapTestItem> .CheckPriorityMethod.CPM_CUSTOM, HeapTestItem.CustomComparerLess);

        for (int i = 0; i < 2000; ++i)
        {
            queue.Enqueue(CreateTestItem(random.Next(1, 100000)));
        }
        HeapTestItem must_less_priority_than_this = CreateTestItem(0);

        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_9, 1");
            return(false);
        }
        int[] counter = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        for (int i = 0; i < 10000; ++i)
        {
            int op = random.Next(0, 9);
            counter[op] = counter[op] + 1;
            int size = queue.Size();
            if (size == 0)
            {
                string t = "HeapTester:Test_9, i = " + i + ", [";
                for (int j = 0; j < MAX_ITEM_NUM; ++j)
                {
                    t += ",";
                    t += counter[j];
                }
                t += "]";
                Print(t);
                break;
            }
            if (op == 0)
            {
                queue.Enqueue(CreateTestItem(random.Next(1, 100000)));
            }
            else if (op == 1)
            {
                queue.Dequeue();
            }
            else if (op == 2 || op == 3)
            {
                int          hi   = random.Next(0, size - 1);
                HeapTestItem item = queue.GetAt(hi);
                item.value = random.Next(1, 10000);
                queue.UpdatePriority(item);
            }
            else if (op == 4 || op == 5)
            {
                int          hi   = random.Next(0, size - 1);
                HeapTestItem item = queue.GetAt(hi);
                item.value = random.Next(1, 10000);
                queue.UpdatePriorityByIndex(hi);
            }
            else if (op == 6)
            {
                int          hi   = random.Next(0, size - 1);
                HeapTestItem item = queue.GetAt(hi);
                queue.Remove(item);
            }
            else if (op == 7)
            {
                int hi = random.Next(0, size - 1);
                queue.RemoveByIndex(hi);
            }
            else if (op == 8)
            {
                queue.Enqueue(CreateTestItem(random.Next(1, 100000)));
            }
            else if (op == 9)
            {
                queue.Enqueue(CreateTestItem(random.Next(1, 100000)));
            }

            if (i % 100 == 0)
            {
                if (!queue.Check(must_less_priority_than_this))
                {
                    Print("Test_9, 2, " + i);
                    return(false);
                }
            }
        }
        return(true);
    }
Exemple #5
0
    bool Test_8()
    {
        Heap <HeapTestItem> queue = new Heap <HeapTestItem>(Heap <HeapTestItem> .CheckPriorityMethod.CPM_CUSTOM, HeapTestItem.CustomComparerLess);

        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            queue.Enqueue(CreateTestItem(random_1_to_10[i]));
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            queue.Enqueue(CreateTestItem(random_1_to_10[i]));
        }
        HeapTestItem must_less_priority_than_this = CreateTestItem(0);

        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_8, 1");
            return(false);
        }
        for (int turn = 0; turn < MAX_ITEM_NUM; ++turn)
        {
            int value = random_1_to_10[turn];
            for (int i = 0; i < queue.Size(); ++i)
            {
                HeapTestItem item = queue.GetAt(i);
                if (item.value == value)
                {
                    if (i % 2 != 0)
                    {
                        queue.Remove(item);
                        if (queue.Contains(item))
                        {
                            Print("Test_8, 2, " + i);
                            return(false);
                        }
                    }
                    else
                    {
                        queue.RemoveByIndex(i);
                        if (queue.Contains(item))
                        {
                            Print("Test_8, 3, " + i);
                            return(false);
                        }
                    }
                    break;
                }
            }
        }
        if (queue.Size() != 10)
        {
            Print("Test_8, 4");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.Dequeue();
            if (item.value != (i + 1))
            {
                Print("Test_8, 5");
                return(false);
            }
        }
        return(true);
    }
Exemple #6
0
 static public int CustomComparerGreater(HeapTestItem a, HeapTestItem b)
 {
     return(b.value - a.value);
 }
Exemple #7
0
    bool Test_7()
    {
        Heap <HeapTestItem> queue = new Heap <HeapTestItem>(Heap <HeapTestItem> .CheckPriorityMethod.CPM_CUSTOM, HeapTestItem.CustomComparerLess);

        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            queue.Enqueue(CreateTestItem(random_1_to_10[i]));
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.GetAt(i);
            if (item.value == 6)
            {
                item.value = 12;
                queue.UpdatePriorityByIndex(i);
                break;
            }
        }
        HeapTestItem must_less_priority_than_this = CreateTestItem(0);

        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_7, 1");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.GetAt(i);
            if (item.value == 12)
            {
                item.value = 6;
                queue.UpdatePriorityByIndex(i);
                break;
            }
        }
        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_7, 2");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.GetAt(i);
            if (item.value == 7)
            {
                item.value = -1;
                queue.UpdatePriority(item);
                break;
            }
        }
        must_less_priority_than_this = CreateTestItem(-2);
        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_7, 3");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.GetAt(i);
            if (item.value == -1)
            {
                item.value = 7;
                queue.UpdatePriority(item);
                break;
            }
        }
        must_less_priority_than_this = CreateTestItem(0);
        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_7, 4");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.Dequeue();
            if (item.value != (i + 1))
            {
                Print("Test_7, 5");
                return(false);
            }
        }
        return(true);
    }
Exemple #8
0
 static public int CustomComparerLess(HeapTestItem a, HeapTestItem b)
 {
     return(a.value - b.value);
 }
Exemple #9
0
    bool Test_1()
    {
        Heap <HeapTestItem> queue = new Heap <HeapTestItem>(Heap <HeapTestItem> .CheckPriorityMethod.CPM_LESS);

        if (queue.Size() != 0)
        {
            Print("Test_1, 1");
            return(false);
        }
        if (!queue.Empty())
        {
            Print("Test_1, 2");
            return(false);
        }
        if (queue.Peek() != null)
        {
            Print("Test_1, 3");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = CreateTestItem(random_1_to_10[i]);
            if (queue.Contains(item))
            {
                Print("Test_1, 10, " + i);
                return(false);
            }
            queue.Enqueue(item);
            if (!queue.Contains(item))
            {
                Print("Test_1, 11, " + i);
                return(false);
            }
        }
        if (queue.Size() != MAX_ITEM_NUM)
        {
            Print("Test_1, 12");
            return(false);
        }
        if (queue.Empty())
        {
            Print("Test_1, 13");
            return(false);
        }
        if (queue.Peek().value != 1)
        {
            Print("Test_1, 14");
            return(false);
        }
        HeapTestItem must_less_priority_than_this = CreateTestItem(0);

        if (!queue.Check(must_less_priority_than_this))
        {
            Print("Test_1, 15");
            return(false);
        }
        for (int i = 0; i < MAX_ITEM_NUM; ++i)
        {
            HeapTestItem item = queue.Dequeue();
            if (queue.Contains(item))
            {
                Print("Test_1, 16");
                return(false);
            }
            if (item.value != (i + 1))
            {
                Print("Test_1, 17, " + i);
                return(false);
            }
        }
        if (queue.Size() != 0)
        {
            Print("Test_1, 18");
            return(false);
        }
        if (!queue.Empty())
        {
            Print("Test_1, 19");
            return(false);
        }
        if (queue.Peek() != null)
        {
            Print("Test_1, 20");
            return(false);
        }
        return(true);
    }