9using namespace Microsoft::VisualStudio::CppUnitTestFramework;
16 TEST_CLASS_INITIALIZE (ClassInitialize)
18 Logger::WriteMessage (
"TString class initialize.\n");
21 TEST_CLASS_CLEANUP (ClassCleanup)
23 Logger::WriteMessage (
"TString class cleanup.\n");
26 TEST_METHOD_INITIALIZE (MethodInitialize)
28 Logger::WriteMessage (
"TString method initialize.\n");
31 TEST_METHOD_CLEANUP (MethodCleanup)
33 Logger::WriteMessage (
"TString method cleanup.\n");
36 TEST_METHOD (ConstractorTest1)
39 Assert::IsNull (string1.
Ctr ());
40 Assert::IsNull (string1.
Ptr ());
43 Assert::AreEqual (_T (
"ABCDE"), string2.
Ctr ());
44 Assert::AreEqual (_T (
"ABCDE"), string2.
Ptr ());
47 Assert::IsNull (string3.
Ctr ());
48 Assert::IsNull (string3.
Ptr ());
51 Assert::AreEqual (_T (
"ABCDE"), string4.
Ctr ());
52 Assert::AreEqual (_T (
"ABCDE"), string4.
Ptr ());
55 lstrcpy (string5.
Ptr (), _T (
"1234567890"));
56 Assert::AreEqual (_T (
"1234567890"), string5.
Ctr ());
57 Assert::AreEqual (_T (
"1234567890"), string5.
Ptr ());
60 TEST_METHOD (ConstractorTest2)
63 Assert::IsNull (string1->
Ctr ());
64 Assert::IsNull (string1->
Ptr ());
67 Assert::AreEqual (_T (
"ABCDE"), string2->
Ctr ());
68 Assert::AreEqual (_T (
"ABCDE"), string2->
Ptr ());
71 Assert::IsNull (string3->
Ctr ());
72 Assert::IsNull (string3->
Ptr ());
75 Assert::AreEqual (_T (
"ABCDE"), string4->
Ctr ());
76 Assert::AreEqual (_T (
"ABCDE"), string4->
Ptr ());
79 lstrcpy (string5->
Ptr (), _T (
"1234567890"));
80 Assert::AreEqual (_T (
"1234567890"), string5->
Ctr ());
81 Assert::AreEqual (_T (
"1234567890"), string5->
Ptr ());
90 TEST_METHOD (SizeTest)
93 Assert::AreEqual<int> (lstrlen (_T (
"ABCDE")), string1.
Len (), _T (
"lstrlen() and Len() mismatched.\n"));
94 Assert::AreEqual<int> ((lstrlen (_T (
"ABCDE")) *
sizeof (TCHAR)), string1.
Byte (), _T (
"lstrlen() and Byte() mismatched.\n"));
97 Assert::AreEqual<INT> (0, string2.
Len ());
98 Assert::AreEqual<INT> (0, string2.
Byte ());
101 Assert::AreEqual (0, string2.
Len ());
102 Assert::AreEqual (0, string2.
Byte ());
105 TEST_METHOD (OperatorEqualCompareTest1)
111 Assert::IsTrue (string1 == string2);
112 Assert::IsTrue (string1 == _T (
"ABCDE"));
119 Assert::IsTrue (string3 != string4);
120 Assert::IsTrue (string4 != _T (
"ABCDE"));
124 TEST_METHOD (OperatorEqualInsertTest2)
132 Assert::AreEqual (_T (
"ABCDE"), string2.
Ctr ());
134 string2 = _T (
"12345");
135 Assert::AreEqual (_T (
"12345"), string2.
Ctr ());
139 TEST_METHOD (OperatorRedirectTest3)
144 string1 << _T (
"123") << _T (
"ABC");
147 Assert::AreEqual (_T (
"123ABC"), string1.
Ctr ());
155 string2 << stringA << stringB;
156 Assert::AreEqual (_T (
"ABC123"), string2.
Ctr ());
162 string3 << 123 << 456;
165 Assert::AreEqual (_T (
"123456"), string3.
Ctr ());
168 TEST_METHOD (OperatorPlusTest4)
174 Assert::AreEqual (_T (
"123ABC"), string00.
Ctr ());
177 Assert::AreEqual (_T (
"123"), string0.
Ctr ());
183 string11 = string1 + _T (
"123") + _T (
"ABC");
184 Assert::AreEqual (_T (
"123ABC"), string11.
Ctr ());
187 Assert::AreEqual (
nullptr, string1.
Ctr ());
193 string22 = string2 + _T (
"123") + _T (
"ABC");
194 Assert::AreEqual (_T (
"XYZ123ABC"), string22.
Ctr ());
197 Assert::AreEqual (_T (
"XYZ"), string2.
Ctr ());
205 string33 = string3 + stringA + stringB;
206 Assert::AreEqual (_T (
"ABC123"), string33.
Ctr ());
207 Assert::AreEqual (_T (
"ABC"), stringA.
Ctr ());
208 Assert::AreEqual (_T (
"123"), stringB.Ctr ());
211 Assert::AreEqual (
nullptr, string3.
Ctr ());
217 string44 = string4 + stringA + stringB;
218 Assert::AreEqual (_T (
"XYZABC123"), string44.
Ctr ());
219 Assert::AreEqual (_T (
"XYZ"), string4.
Ctr ());
220 Assert::AreEqual (_T (
"ABC"), stringA.
Ctr ());
221 Assert::AreEqual (_T (
"123"), stringB.Ctr ());
225 TEST_METHOD (OperatorPlusEqualTest5)
233 Assert::AreEqual (_T (
"ABC"), string1.
Ctr ());
238 Assert::AreEqual (_T (
"123ABC"), string3.
Ctr ());
244 string4 += _T (
"ABC");
245 Assert::AreEqual (_T (
"ABC"), string4.
Ctr ());
249 string5 += _T (
"ABC");
250 Assert::AreEqual (_T (
"123ABC"), string5.
Ptr ());
254 TEST_METHOD (OperatorArraySelectTest)
259 TCHAR c1 =
string[1];
260 TCHAR c3 =
string[3];
261 Assert::IsTrue (
'B' == c1);
262 Assert::IsTrue (
'1' == c3);
265 TCHAR c5 =
string[5];
266 TCHAR c7 =
string[7];
268 Assert::IsTrue (
'3' == c5);
269 Assert::IsTrue (
'\0' == c7);
274 TEST_METHOD (OperatorMathematicalSignTest)
282 check = string1 < string2;
283 Assert::IsFalse (check, _T(
"can't judge equal.\n"));
287 check = string1 < string3;
288 Assert::IsFalse (check, _T(
"can't judge greater than this.\n"));
292 check = string1 < string4;
293 Assert::IsTrue (check, _T(
"can't judge less than this.\n"));
297 TEST_METHOD (TrimLeftTest)
301 Assert::AreEqual (_T (
"1234 5678 "),
string.Ptr ());
304 TEST_METHOD (TrimRightTest)
308 Assert::AreEqual (_T (
" 1234 5678"),
string.Ptr ());
311 TEST_METHOD (TrimTest1)
315 Assert::AreEqual (_T (
"1234 5678"),
string.Ptr ());
318 TEST_METHOD (TrimTest2)
321 string.TrimLeft ().TrimRight ();
322 Assert::AreEqual (_T (
"1234 5678"),
string.Ptr ());
325 TEST_METHOD (SubstringTest)
328 alt::TString string = _T (
"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
344 Assert::AreEqual (_T (
"Z"), str5.
Ptr ());
347 Assert::AreEqual (_T (
"XYZ"), str6.
Ptr ());
350 Assert::AreEqual (
nullptr, str7.
Ptr ());
353 Assert::AreEqual (
nullptr, str8.
Ctr ());
357 TEST_METHOD (SplitTest1)
362 Assert::AreEqual (_T (
"123"), response[0]->Ptr ());
363 Assert::AreEqual (_T (
"456"), response[1]->Ptr ());
364 Assert::AreEqual (_T (
"789"), response[2]->Ptr ());
365 Assert::AreEqual (_T (
"abc"), response[3]->Ptr ());
366 Assert::AreEqual (_T (
"def"), response[4]->Ptr ());
367 Assert::IsTrue (response[5] ==
nullptr);
370 TEST_METHOD (FindTest1)
375 int t1 =
string.Find (_T (
"5678"));
376 Assert::AreEqual (4, t1);
378 int t2 =
string.Find (_T (
"1"));
379 Assert::AreEqual (0, t2);
381 int t3 =
string.Find (_T (
"123"));
382 Assert::AreEqual (0, t3);
384 int t4 =
string.Find (_T (
"G"));
385 Assert::AreEqual (16, t4);
387 int t5 =
string.Find (_T (
"ABCD"));
388 Assert::AreEqual (10, t5);
390 int t6 =
string.Find (_T (
"XYZ"));
391 Assert::AreEqual (-1, t6);
394 TEST_METHOD (FindTest2)
399 int t1 =
string.Find (_T (
"ABCD"));
400 Assert::AreEqual (-1, t1);
402 int t2 =
string.Find (_T (
"ABC"));
403 Assert::AreEqual (2, t2);
405 int t3 =
string.Find (_T (
"ABC"), 2);
406 Assert::AreEqual (2, t3);
408 int t4 =
string.Find (_T (
"ABC"), 3);
409 Assert::AreEqual (9, t4);
411 int t5 =
string.Find (_T (
"ABCD"), 7);
412 Assert::AreEqual (-1, t5);
415 TEST_METHOD (FindTest3)
420 int t1 =
string.Find (_T (
"七八九"));
421 Assert::AreEqual (6, t1);
423 int t2 =
string.Find (_T (
"甲乙丙丁"));
424 Assert::AreEqual (10, t2);
426 int t3 =
string.Find (_T (
"零壱弐"));
427 Assert::AreEqual (-1, t3);
430 TEST_METHOD (FormatTest)
435 for (
int i = 0; i < 100; i += 3)
437 formatString.
Format (_T (
"FormatTest(%d)"), i);
438 wsprintf (tszBuf, _T (
"FormatTest(%d)"), i);
439 Assert::AreEqual (tszBuf, formatString.
Ctr ());
443 TEST_METHOD (ReplaceTest1a)
452 Assert::AreEqual (_T (
"This contents is sample."), replaced.
Ctr ());
455 TEST_METHOD (ReplaceTest1b)
457 alt::TString baseString (_T (
"This contents is sample."));
464 Assert::AreEqual (_T (
"This text is sample."), replaced.
Ctr ());
467 TEST_METHOD (ReplaceTest2)
476 Assert::AreEqual (_T (
"That text is sample."), replaced.
Ctr ());
479 TEST_METHOD (ReplaceTest3)
481 alt::TString baseString (_T (
"This text is sample.\r\n"));
488 Assert::AreEqual (_T (
"This text is sample."), replaced.
Ctr ());
491 TEST_METHOD (ReplaceAllTest)
500 Assert::AreEqual (_T (
"x 0x0 1xD1 2x"), replaced.
Ctr ());
503 TEST_METHOD (ConvertFromSJISTest)
505 LPCSTR lpcszSJIS =
"これはSJISで作成された文字列です。\n壱弐参四五六七八九零\n";
509 Assert::AreEqual<INT> (31, convert.
Len (), _T (
"Len() mismatched.\n"));
510 Assert::AreEqual<INT> (62, convert.
Byte (), _T (
"Byte() mismatched.\n"));
511 Logger::WriteMessage (convert.
Ctr ());
514 TEST_METHOD (ConvertFromUTF8Test)
516 LPCSTR lpcszSJIS =
"これはUTF-8で作成された文字列です。\n壱弐参四五六七八九零\n";
520 Logger::WriteMessage (convert.
Ctr ());
523 TEST_METHOD (ConvertToSJISTest)
525 LPCWSTR lpcwszUnicode = L
"これはUnicodeで作成された文字列です。\n壱弐参四五六七八九零\n";
528 DWORD dwLen = output.
Byte () +
sizeof (TCHAR);
529 LPSTR lpszBuf =
new CHAR[dwLen];
530 int ret = output.
ToSJIS (lpszBuf, dwLen);
531 Assert::IsTrue (ret > 0);
532 Logger::WriteMessage (lpszBuf);
536 TEST_METHOD (ParseTest1)
538 int test[] { 0,1,12,123,1234,12345, 123456, 1234567, 12345678, 123456789, 1234567890 };
539 int loop =
sizeof (test) /
sizeof(
int);
540 for (
int i = 0; i <
loop; i++)
545 Assert::AreEqual<int> (test[i], response);
549 TEST_METHOD (ParseTest2)
551 int test[] { -1,-12,-123,-1234,-12345, -123456, -1234567, -12345678 };
552 int loop =
sizeof (test) /
sizeof(
int);
553 for (
int i = 0; i <
loop; i++)
558 Assert::AreEqual<int> (test[i], response);
文字列に関するWindowsAPIを集約したクラス
文字列に関するWindowsAPIを集約したクラス
TString &APIENTRY Format(LPCTSTR format,...)
フォーマットに従ってパラメータを文字列化します。
INT APIENTRY Byte() const
内部で確保している文字列(バイト数)を取得します。
INT APIENTRY Len() const
内部で確保している文字列数を取得します。
TString APIENTRY Replace(TString &charsBefore, TString &charsAfter)
文字列を置換します。
LPCTSTR APIENTRY Ctr() const
内部で確保している文字列ポインタを取得します。
int APIENTRY ToSJIS(LPSTR lpszSJIS, DWORD dwLen)
SJIS文字列を出力します。
TString APIENTRY ReplaceAll(TString &charsBefore, TString &charsAfter)
文字列を置換します。
TString APIENTRY Substring(int startPos, int length=0)
文字列を切り出します。
LPTSTR APIENTRY Ptr() const
内部で確保している文字列ポインタを取得します。
int APIENTRY ParseInt() const
文字列の数値化
BOOL APIENTRY FromMultiByte(LPCSTR lpcszSJIS, UINT codePage=CP_ACP)
マルチバイト文字列を取り込みます。