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