113 lines
3.4 KiB
C++
113 lines
3.4 KiB
C++
|
/*
|
||
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||
|
*
|
||
|
* Use of this source code is governed by a BSD-style license
|
||
|
* that can be found in the LICENSE file in the root of the source
|
||
|
* tree. An additional intellectual property rights grant can be found
|
||
|
* in the file PATENTS. All contributing project authors may
|
||
|
* be found in the AUTHORS file in the root of the source tree.
|
||
|
*/
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
#include "map_wrapper.h"
|
||
|
|
||
|
const int kNumberOfElements = 10;
|
||
|
|
||
|
void FailTest(bool failed)
|
||
|
{
|
||
|
if (failed)
|
||
|
{
|
||
|
printf("Test failed!\n");
|
||
|
printf("Press enter to continue:");
|
||
|
getchar();
|
||
|
exit(0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int GetStoredIntegerValue(MapItem* map_item)
|
||
|
{
|
||
|
void* map_item_pointer = map_item->GetItem();
|
||
|
if (map_item_pointer != NULL)
|
||
|
{
|
||
|
return *(reinterpret_cast<int*>(map_item_pointer));
|
||
|
}
|
||
|
return static_cast<int>(map_item->GetUnsignedId());
|
||
|
}
|
||
|
|
||
|
void PrintMap(MapWrapper& map)
|
||
|
{
|
||
|
MapItem* map_item = map.First();
|
||
|
printf("Map: ");
|
||
|
while (map_item != NULL)
|
||
|
{
|
||
|
int item_value = GetStoredIntegerValue(map_item);
|
||
|
FailTest(item_value < 0);
|
||
|
printf(" %d",item_value);
|
||
|
map_item = map.Next(map_item);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
|
||
|
int main(int /*argc*/, char* /*argv*/[])
|
||
|
{
|
||
|
int element_array[kNumberOfElements];
|
||
|
for (int i = 0; i < kNumberOfElements; i++)
|
||
|
{
|
||
|
element_array[i] = i;
|
||
|
}
|
||
|
// Test insert
|
||
|
MapWrapper test_map;
|
||
|
for (int i = 0; i < kNumberOfElements; i++)
|
||
|
{
|
||
|
test_map.Insert(i,(void*)&element_array[i]);
|
||
|
}
|
||
|
// Test Erase1
|
||
|
MapItem* remove_item = test_map.Find(2);
|
||
|
FailTest(remove_item == NULL);
|
||
|
FailTest(test_map.Erase(remove_item) != 0);
|
||
|
FailTest(test_map.Find(2) != NULL);
|
||
|
remove_item = NULL;
|
||
|
FailTest(test_map.Erase(remove_item) != -1);
|
||
|
// Test Erase2
|
||
|
FailTest(test_map.Erase(1) != 0);
|
||
|
FailTest(test_map.Find(1) != NULL);
|
||
|
FailTest(test_map.Erase(1) != -1);
|
||
|
// Test Size
|
||
|
FailTest(test_map.Size() != kNumberOfElements - 2);
|
||
|
PrintMap(test_map);
|
||
|
// Test First
|
||
|
MapItem* first_item = test_map.First();
|
||
|
FailTest(first_item == NULL);
|
||
|
FailTest(GetStoredIntegerValue(first_item) != 0);
|
||
|
// Test Last
|
||
|
MapItem* last_item = test_map.Last();
|
||
|
FailTest(last_item == NULL);
|
||
|
FailTest(GetStoredIntegerValue(last_item) != 9);
|
||
|
// Test Next
|
||
|
MapItem* second_item = test_map.Next(first_item);
|
||
|
FailTest(second_item == NULL);
|
||
|
FailTest(GetStoredIntegerValue(second_item) != 3);
|
||
|
FailTest(test_map.Next(last_item) != NULL);
|
||
|
// Test Previous
|
||
|
MapItem* second_to_last_item = test_map.Previous(last_item);
|
||
|
FailTest(second_to_last_item == NULL);
|
||
|
FailTest(GetStoredIntegerValue(second_to_last_item) != 8);
|
||
|
FailTest(test_map.Previous(first_item) != NULL);
|
||
|
// Test Find (only improper usage untested)
|
||
|
FailTest(test_map.Find(kNumberOfElements + 2) != NULL);
|
||
|
// Test GetId
|
||
|
FailTest(*(reinterpret_cast<int*>(second_to_last_item->GetItem())) !=
|
||
|
second_to_last_item->GetId());
|
||
|
FailTest(second_to_last_item->GetUnsignedId() !=
|
||
|
static_cast<unsigned int>(second_to_last_item->GetId()));
|
||
|
// Test SetItem
|
||
|
int swapped_item = kNumberOfElements;
|
||
|
last_item->SetItem(reinterpret_cast<void*>(&swapped_item));
|
||
|
FailTest(GetStoredIntegerValue(last_item) !=
|
||
|
swapped_item);
|
||
|
|
||
|
printf("Tests passed successfully!\n");
|
||
|
}
|