Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
MapTest.cpp
[詳解]
1
5
6#include "pch.h"
7#include "Map.hpp"
8#include "TString.h"
9
10using namespace Microsoft::VisualStudio::CppUnitTestFramework;
11
12namespace WindowsLibraryTest
13{
14 TEST_CLASS (MapTest)
15 {
16 public:
17 TEST_CLASS_INITIALIZE (ClassInitialize)
18 {
19 Logger::WriteMessage ("MapTest class initialize.\n");
20 }
21
22 TEST_CLASS_CLEANUP (ClassCleanup)
23 {
24 Logger::WriteMessage ("MapTest class cleanup.\n");
25 }
26
27 TEST_METHOD_INITIALIZE (MethodInitialize)
28 {
29 Logger::WriteMessage ("MapTest method initialize.\n");
30 }
31
32 TEST_METHOD_CLEANUP (MethodCleanup)
33 {
34 Logger::WriteMessage ("MapTest method cleanup.\n");
35 }
36
37 TEST_METHOD (MapTest0)
38 {
40
41 //for (int i = 5; i > 0; i--)
42 //{
43 // map.Add (i);
44 //}
45
46 //for (int i = 6; i <= 10; i++)
47 //{
48 // map.Add (i);
49 //}
50
51 for (int i = 0; i < 30; i++)
52 {
53 map.Add (i);
54 }
55 for (int i = 0; i < map.Size (); i++)
56 {
57 alt::TString output;
58 auto value = map.GetNode(i);
59 CHAR szMD5[40];
60 ZeroMemory (szMD5, 40);
61 CopyMemory (szMD5, value->_byMD5, 32);
62 output.Format (_T ("A)MD5:%S value:%d\n"),
63 szMD5, *(value->_value));
64 Logger::WriteMessage (output.Ctr ());
65 }
66 Logger::WriteMessage ("----------------\n");
67
68 for (int i = 30; i >= 0; i--)
69 {
70 map.Remove (i);
71 }
72 for (int i = 30; i >= 0; i--)
73 {
74 map.Add (i);
75 }
76 for (int i = 0; i < map.Size (); i++)
77 {
78 alt::TString output;
79 auto value = map.GetNode(i);
80 CHAR szMD5[40];
81 ZeroMemory (szMD5, 40);
82 CopyMemory (szMD5, value->_byMD5, 32);
83 output.Format (_T ("a)MD5:%S value:%d\n"),
84 szMD5, *(value->_value));
85 Logger::WriteMessage (output.Ctr ());
86 }
87 Logger::WriteMessage ("----------------\n");
88
89 //for (int i = 0; i < map.Size (); i++)
90 //{
91 // alt::TString output;
92 // auto value = map[i];
93 // output.Format (_T ("DATA:%d\n"), *value);
94 // Logger::WriteMessage (output.Ctr ());
95 //}
96
97 //for (int i = 1; i <= 10; i++)
98 //{
99 // map.Remove (i);
100 //}
101
102 //Assert::AreEqual<SIZE_T> (0, map.Size ());
103
104 //for (int i = 5; i > 0; i--)
105 //{
106 // map.Add (i);
107 //}
108
109 //for (int i = 6; i <= 10; i++)
110 //{
111 // map.Add (i);
112 //}
113
114 //for (int i = 3; i >= 1; i--)
115 //{
116 // map.Remove (i);
117 //}
118
119 //for (int i = 8; i <= 10; i++)
120 //{
121 // map.Remove (i);
122 //}
123
124 //Assert::AreEqual<SIZE_T> (4, map.Size ());
125
126 //for (int i = 0; i < map.Size (); i++)
127 //{
128 // alt::TString output;
129 // auto value = map[i];
130 // output.Format (_T ("DATA:%d\n"), *value);
131 // Logger::WriteMessage (output.Ctr ());
132 //}
133
134 //map.Clear ();
135 //Assert::AreEqual<SIZE_T> (0, map.Size ());
136 }
137
138 TEST_METHOD (MapTest1)
139 {
141
142 for (int i = 1; i <= 10; i++)
143 {
144 map.Add (i);
145 }
146
147 int i = 1;
148 for (auto itr : map)
149 {
150 Assert::AreEqual<int> (i++, itr, _T ("invalid value get.\n"));
151 }
152
153 i = 1;
154 for (auto& itr : map)
155 {
156 Assert::AreEqual<int> (i++, itr, _T ("invalid value get.\n"));
157 }
158
159 for (int i = 0; i < 5; i++)
160 {
161 map.Remove (i);
162 }
163
164 i = 5;
165 for (auto itr : map)
166 {
167 Assert::AreEqual<int> (i++, itr, _T ("invalid value get.\n"));
168 }
169
170 i = 5;
171 for (auto& itr : map)
172 {
173 Assert::AreEqual<int> (i++, itr, _T ("invalid value get.\n"));
174 }
175
176 while (map.Size ())
177 {
178 map.Remove (*(map[0]));
179 }
180
181 Assert::AreEqual<SIZE_T> (0, map.Size (), _T ("invalid size.\n"));
182
183 for (int i = 4; i >= 0; i--)
184 {
185 map.Add (i);
186 }
187
188 for (int i = 5; i < 10; i++)
189 {
190 map.Add (i);
191 }
192
193 map.Clear ();
194
195 for (int i = 0; i < 10; i++)
196 {
197 map.Add (i);
198 }
199
200 i = 0;
201 for (auto itr : map)
202 {
203 Assert::AreEqual<int> (i++, itr, _T ("invalid value get.\n"));
204 }
205
206 i = 0;
207 for (auto& itr : map)
208 {
209 Assert::AreEqual<int> (i++, itr, _T ("invalid value get.\n"));
210 }
211
212 int iTarget = 0;
213 for (int i = 0; i < map.Size (); i++)
214 {
215 int* piVal = map.Get (i);
216 Assert::AreEqual<int> (i, *piVal);
217 if (*piVal == 2) iTarget = *piVal;
218 }
219
220 map.Remove (iTarget);
221 Assert::AreEqual<SIZE_T> (9, map.Size ());
222 }
223
224 TEST_METHOD (MapTest2)
225 {
226 int index;
227 alt::TString data;
229
230 for (int i = 0; i < 10; i++)
231 {
232 data.Format (_T ("DATA No.%02d\n"), i);
233 map1.Add (data);
234 }
235
237
238 index = 0;
239 for (auto& item2 : map2)
240 {
241 const auto& item1 = map1[index++];
242 Assert::IsTrue (0 == lstrcmp ((*item1).Ctr (), item2.Ctr ()));
243 }
244
245 map1.Clear ();
246
247 index = 0;
248 for (auto itr = map2.begin (); itr != map2.end (); ++itr)
249 {
250 data.Format (_T ("DATA No.%02d\n"), index++);
251 Logger::WriteMessage (data.Ctr ());
252 Assert::IsTrue (0 == lstrcmp (data.Ctr (), (*itr).Ctr ()));
253 }
254
255 index = 0;
256 for (auto& itr = map2.begin (); itr != map2.end (); ++itr)
257 {
258 data.Format (_T ("DATA No.%02d\n"), index++);
259 Logger::WriteMessage (data.Ctr ());
260 auto& v = *itr;
261 Assert::IsTrue (0 == lstrcmp (data.Ctr (), (*itr).Ctr ()));
262 }
263
264 index = 0;
265 for (alt::TString itr : map2)
266 {
267 data.Format (_T ("DATA No.%02d\n"), index++);
268 Logger::WriteMessage (data.Ctr ());
269 Assert::IsTrue (0 == lstrcmp (data.Ctr (), itr.Ctr ()));
270 }
271
272 index = 0;
273 for (alt::TString& itr : map2)
274 {
275 data.Format (_T ("DATA No.%02d\n"), index++);
276 Logger::WriteMessage (data.Ctr ());
277 Assert::IsTrue (0 == lstrcmp (data.Ctr (), itr.Ctr ()));
278 }
279 }
280 };
281}
マップに関するクラス
文字列に関するWindowsAPIを集約したクラス
プリコンパイル済みヘッダー ファイルです。
文字列に関するWindowsAPIを集約したクラス
Definition: TString.h:17
TString &APIENTRY Format(LPCTSTR format,...)
フォーマットに従ってパラメータを文字列化します。
Definition: TString.cpp:333
LPCTSTR APIENTRY Ctr() const
内部で確保している文字列ポインタを取得します。
Definition: TString.h:46
ポインタによるマップを具現したクラス
Definition: Map.hpp:111
T *APIENTRY Get(SIZE_T index) const
指定したインデックスの値を取得
Definition: Map.hpp:221
MapNode< T > * GetNode(SIZE_T index)
Definition: Map.hpp:202
MapIterator< T > APIENTRY end() const
for(auto n : list){}を使用できるようにするインターフェース
Definition: Map.hpp:286
VOID APIENTRY Clear()
領域の開放
Definition: Map.hpp:266
VOID APIENTRY Remove(T &item)
Map<T>から値を削除
Definition: Map.hpp:176
VOID APIENTRY Add(T &item)
Map<T>へ値を追加
Definition: Map.hpp:139
SIZE_T APIENTRY Size() const
サイズを取得
Definition: Map.hpp:260
MapIterator< T > APIENTRY begin() const
for(auto n : map){}を使用できるようにするインターフェース
Definition: Map.hpp:279
TEST_CLASS(ArrayTest)
Definition: ArrayTest.cpp:19