2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Test for CSimpleMap
5 * PROGRAMMER: Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
14 int g_tests_executed
= 0;
15 int g_tests_failed
= 0;
16 void ok_func(const char *file
, int line
, bool value
, const char *fmt
, ...)
22 printf("%s (%d): ", file
, line
);
30 #define ok(value, ...) ok_func(__FILE__, __LINE__, value, __VA_ARGS__)
31 #define START_TEST(x) int main(void)
35 #include <atlsimpcoll.h>
40 static int s_nCopyCount
;
46 CMonster(const CMonster
& c
)
54 CMonster
& operator=(const CMonster
& other
)
56 CMonster::s_nCopyCount
++;
61 int CMonster::s_nCount
= 0;
62 int CMonster::s_nCopyCount
= 0;
64 START_TEST(CSimpleMap
)
66 CSimpleMap
<int, int> map1
;
68 ok(map1
.GetSize() == 0, "Expected map1's size is zero, was %d\n", map1
.GetSize());
71 ok(map1
.GetSize() == 1, "Expected map1's size is 1, was %d\n", map1
.GetSize());
73 ok(map1
.GetSize() == 2, "Expected map1's size is 2, was %d\n", map1
.GetSize());
75 ok(map1
.Lookup(1) == 2, "Expected map1.Lookup(1) is 2, was %d\n", map1
.Lookup(1));
76 ok(map1
.Lookup(2) == 3, "Expected map1.Lookup(2) is 3, was %d\n", map1
.Lookup(2));
77 ok(map1
.Lookup(-1) == 0, "Expected map1.Lookup(-1) is 0, was %d\n", map1
.Lookup(-1));
79 ok(map1
.ReverseLookup(2) == 1, "Expected map1.ReverseLookup(2) is 1, was %d\n", map1
.ReverseLookup(2));
80 ok(map1
.ReverseLookup(3) == 2, "Expected map1.ReverseLookup(3) is 2, was %d\n", map1
.ReverseLookup(3));
82 ok(map1
.GetKeyAt(0) == 1, "Expected map1.GetKeyAt(0) is 1, was %d\n", map1
.GetKeyAt(0));
83 ok(map1
.GetKeyAt(1) == 2, "Expected map1.GetKeyAt(1) is 2, was %d\n", map1
.GetKeyAt(1));
85 ok(map1
.GetValueAt(0) == 2, "Expected map1.GetValueAt(0) is 2, was %d\n", map1
.GetValueAt(0));
86 ok(map1
.GetValueAt(1) == 3, "Expected map1.GetValueAt(1) is 3, was %d\n", map1
.GetValueAt(1));
90 ok(map1
.Lookup(1) == 2, "Expected map1.Lookup(1) is 2, was %d\n", map1
.Lookup(1));
91 ok(map1
.Lookup(2) == 4, "Expected map1.Lookup(2) is 4, was %d\n", map1
.Lookup(2));
93 ok(map1
.ReverseLookup(2) == 1, "Expected map1.ReverseLookup(2) is 1, was %d\n", map1
.ReverseLookup(2));
94 ok(map1
.ReverseLookup(4) == 2, "Expected map1.ReverseLookup(4) is 2, was %d\n", map1
.ReverseLookup(4));
97 ok(map1
.GetSize() == 1, "Expected map1's size is 1, was %d\n", map1
.GetSize());
99 ok(map1
.GetSize() == 0, "Expected map1's size is 0, was %d\n", map1
.GetSize());
102 ok(map1
.GetSize() == 1, "Expected map1's size is 1, was %d\n", map1
.GetSize());
104 ok(map1
.GetSize() == 2, "Expected map1's size is 2, was %d\n", map1
.GetSize());
106 ok(map1
.GetSize() == 3, "Expected map1's size is 3, was %d\n", map1
.GetSize());
109 ok(map1
.GetSize() == 0, "Expected map1's size is 0, was %d\n", map1
.GetSize());
111 ok(CMonster::s_nCount
== 0, "Expected CMonster::s_nCount is 0, was %d\n", CMonster::s_nCount
);
112 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
114 CSimpleMap
<CMonster
, CMonster
> map2
;
115 ok(map2
.GetSize() == 0, "Expected map2's size is zero, was %d\n", map2
.GetSize());
117 ok(CMonster::s_nCount
== 0, "Expected CMonster::s_nCount is 0, was %d\n", CMonster::s_nCount
);
118 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
122 ok(CMonster::s_nCount
== 1, "Expected CMonster::s_nCount is 1, was %d\n", CMonster::s_nCount
);
123 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
126 ok(CMonster::s_nCount
== 2, "Expected CMonster::s_nCount is 2, was %d\n", CMonster::s_nCount
);
127 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
130 ok(CMonster::s_nCount
== 4, "Expected CMonster::s_nCount is 4, was %d\n", CMonster::s_nCount
);
131 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
134 ok(map2
.GetSize() == 1, "Expected map2's size is 1, was %d\n", map2
.GetSize());
135 ok(CMonster::s_nCount
== 2, "Expected CMonster::s_nCount is 2, was %d\n", CMonster::s_nCount
);
136 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
140 ok(CMonster::s_nCount
== 3, "Expected CMonster::s_nCount is 3, was %d\n", CMonster::s_nCount
);
141 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
144 ok(CMonster::s_nCount
== 4, "Expected CMonster::s_nCount is 4, was %d\n", CMonster::s_nCount
);
145 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
148 ok(CMonster::s_nCount
== 6, "Expected CMonster::s_nCount is 6, was %d\n", CMonster::s_nCount
);
149 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
152 ok(map2
.GetSize() == 2, "Expected map2's size is 2, was %d\n", map2
.GetSize());
153 ok(CMonster::s_nCount
== 4, "Expected CMonster::s_nCount is 4, was %d\n", CMonster::s_nCount
);
154 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
157 ok(CMonster::s_nCount
== 2, "Expected CMonster::s_nCount is 2, was %d\n", CMonster::s_nCount
);
158 ok(map2
.GetSize() == 1, "Expected map2's size is 1, was %d\n", map2
.GetSize());
159 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
162 ok(CMonster::s_nCount
== 0, "Expected CMonster::s_nCount is 0, was %d\n", CMonster::s_nCount
);
163 ok(map2
.GetSize() == 0, "Expected map2's size is 0, was %d\n", map2
.GetSize());
164 ok(CMonster::s_nCopyCount
== 0, "Expected CMonster::s_nCopyCount is 0, was %d\n", CMonster::s_nCopyCount
);
166 CSimpleMap
<int, CMonster
> map3
;
167 ok(map3
.GetSize() == 0, "Expected map3's size is 0, was %d\n", map3
.GetSize());
170 ok(CMonster::s_nCount
== 1, "Expected CMonster::s_nCount is 1, was %d\n", CMonster::s_nCount
);
173 ok(map3
.GetSize() == 1, "Expected map3's size is 1, was %d\n", map3
.GetSize());
174 ok(CMonster::s_nCount
== 2, "Expected CMonster::s_nCount is 2, was %d\n", CMonster::s_nCount
);
177 ok(map3
.GetSize() == 2, "Expected map3's size is 2, was %d\n", map3
.GetSize());
178 ok(CMonster::s_nCount
== 3, "Expected CMonster::s_nCount is 3, was %d\n", CMonster::s_nCount
);
181 ok(map3
.GetSize() == 3, "Expected map3's size is 3, was %d\n", map3
.GetSize());
182 ok(CMonster::s_nCount
== 4, "Expected CMonster::s_nCount is 4, was %d\n", CMonster::s_nCount
);
185 ok(map3
.GetSize() == 2, "Expected map3's size is 2, was %d\n", map3
.GetSize());
186 ok(CMonster::s_nCount
== 3, "Expected CMonster::s_nCount is 3, was %d\n", CMonster::s_nCount
);
189 ok(map3
.GetSize() == 0, "Expected map3's size is 0, was %d\n", map3
.GetSize());
190 ok(CMonster::s_nCount
== 1, "Expected CMonster::s_nCount is 1, was %d\n", CMonster::s_nCount
);
193 ok(map1
.GetSize() == 1, "Expected map1's size is 1, was %d\n", map1
.GetSize());
195 ok(map1
.GetSize() == 2, "Expected map1's size is 2, was %d\n", map1
.GetSize());
197 ok(!!map1
.RemoveAt(0), "Expected RemoveAt(0) to succeed\n");
198 ok(map1
.GetSize() == 1, "Expected map1's size is 1, was %d\n", map1
.GetSize());
199 ok(!!map1
.RemoveAt(0), "Expected RemoveAt(0) to succeed\n");
200 ok(map1
.GetSize() == 0, "Expected map1's size is 0, was %d\n", map1
.GetSize());
203 printf("CSimpleMap: %i tests executed (0 marked as todo, %i failures), 0 skipped.\n", g_tests_executed
, g_tests_failed
);
204 return g_tests_failed
;