blob: 8a0d3e31d7c50c46009af8205b7f45a751ccef95 [file] [log] [blame]
niklase@google.comf0779a22011-05-30 11:39:38 +00001/*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include <stdio.h>
12#include <stdlib.h>
13
14#include "map_wrapper.h"
15
16const int kNumberOfElements = 10;
17
18void FailTest(bool failed)
19{
20 if (failed)
21 {
22 printf("Test failed!\n");
23 printf("Press enter to continue:");
24 getchar();
25 exit(0);
26 }
27}
28
29int GetStoredIntegerValue(MapItem* map_item)
30{
31 void* map_item_pointer = map_item->GetItem();
32 if (map_item_pointer != NULL)
33 {
34 return *(reinterpret_cast<int*>(map_item_pointer));
35 }
36 return static_cast<int>(map_item->GetUnsignedId());
37}
38
39void PrintMap(MapWrapper& map)
40{
41 MapItem* map_item = map.First();
42 printf("Map: ");
43 while (map_item != NULL)
44 {
45 int item_value = GetStoredIntegerValue(map_item);
46 FailTest(item_value < 0);
47 printf(" %d",item_value);
48 map_item = map.Next(map_item);
49 }
50 printf("\n");
51}
52
53int main(int /*argc*/, char* /*argv*/[])
54{
55 int element_array[kNumberOfElements];
56 for (int i = 0; i < kNumberOfElements; i++)
57 {
58 element_array[i] = i;
59 }
60 // Test insert
61 MapWrapper test_map;
62 for (int i = 0; i < kNumberOfElements; i++)
63 {
64 test_map.Insert(i,(void*)&element_array[i]);
65 }
66 // Test Erase1
67 MapItem* remove_item = test_map.Find(2);
68 FailTest(remove_item == NULL);
69 FailTest(test_map.Erase(remove_item) != 0);
70 FailTest(test_map.Find(2) != NULL);
71 remove_item = NULL;
72 FailTest(test_map.Erase(remove_item) != -1);
73 // Test Erase2
74 FailTest(test_map.Erase(1) != 0);
75 FailTest(test_map.Find(1) != NULL);
76 FailTest(test_map.Erase(1) != -1);
77 // Test Size
78 FailTest(test_map.Size() != kNumberOfElements - 2);
79 PrintMap(test_map);
80 // Test First
81 MapItem* first_item = test_map.First();
82 FailTest(first_item == NULL);
83 FailTest(GetStoredIntegerValue(first_item) != 0);
84 // Test Last
85 MapItem* last_item = test_map.Last();
86 FailTest(last_item == NULL);
87 FailTest(GetStoredIntegerValue(last_item) != 9);
88 // Test Next
89 MapItem* second_item = test_map.Next(first_item);
90 FailTest(second_item == NULL);
91 FailTest(GetStoredIntegerValue(second_item) != 3);
92 FailTest(test_map.Next(last_item) != NULL);
93 // Test Previous
94 MapItem* second_to_last_item = test_map.Previous(last_item);
95 FailTest(second_to_last_item == NULL);
96 FailTest(GetStoredIntegerValue(second_to_last_item) != 8);
97 FailTest(test_map.Previous(first_item) != NULL);
98 // Test Find (only improper usage untested)
99 FailTest(test_map.Find(kNumberOfElements + 2) != NULL);
100 // Test GetId
101 FailTest(*(reinterpret_cast<int*>(second_to_last_item->GetItem())) !=
102 second_to_last_item->GetId());
103 FailTest(second_to_last_item->GetUnsignedId() !=
104 static_cast<unsigned int>(second_to_last_item->GetId()));
105 // Test SetItem
106 int swapped_item = kNumberOfElements;
107 last_item->SetItem(reinterpret_cast<void*>(&swapped_item));
108 FailTest(GetStoredIntegerValue(last_item) !=
109 swapped_item);
110
111 printf("Tests passed successfully!\n");
112}