/* * 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"); }