| 983 | } |
| 984 | |
| 985 | void TestDecodingMethodsMixedStr() { |
| 986 | UNIT_ASSERT(TUtf32String::FromAscii("").empty()); |
| 987 | UNIT_ASSERT(TUtf32String::FromAscii("abc") == ASCIIToUTF32("abc")); |
| 988 | |
| 989 | const char* text = "123kx83abcd ej)#$%ddja&%J&"; |
| 990 | TUtf32String wtext = ASCIIToUTF32(text); |
| 991 | |
| 992 | UNIT_ASSERT(wtext == TUtf32String::FromAscii(text)); |
| 993 | |
| 994 | TString strtext(text); |
| 995 | UNIT_ASSERT(wtext == TUtf32String::FromAscii(strtext)); |
| 996 | |
| 997 | TStringBuf strbuftext(text); |
| 998 | UNIT_ASSERT(wtext == TUtf32String::FromAscii(strbuftext)); |
| 999 | |
| 1000 | UNIT_ASSERT(wtext.substr(5) == TUtf32String::FromAscii(text + 5)); |
| 1001 | |
| 1002 | const wchar32 cyrilicAndLatinWide[] = { |
| 1003 | 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, |
| 1004 | 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, |
| 1005 | 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, |
| 1006 | wchar32('z'), |
| 1007 | 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, |
| 1008 | wchar32('z'), |
| 1009 | 0x00}; |
| 1010 | |
| 1011 | TUtf32String strWide(cyrilicAndLatinWide); |
| 1012 | TString strUtf8 = WideToUTF8(strWide); |
| 1013 | |
| 1014 | UNIT_ASSERT(strWide == TUtf32String::FromUtf8(strUtf8.c_str())); |
| 1015 | UNIT_ASSERT(strWide == TUtf32String::FromUtf8(strUtf8)); |
| 1016 | UNIT_ASSERT(strWide == UTF8ToUTF32<true>(strUtf8)); |
| 1017 | UNIT_ASSERT(strWide == UTF8ToUTF32<false>(strUtf8)); |
| 1018 | UNIT_ASSERT(strWide == TUtf32String::FromUtf8(TStringBuf(strUtf8))); |
| 1019 | |
| 1020 | // assign |
| 1021 | |
| 1022 | TUtf32String s1; |
| 1023 | s1.AssignAscii("1234"); |
| 1024 | UNIT_ASSERT(s1 == ASCIIToUTF32("1234")); |
| 1025 | |
| 1026 | s1.AssignUtf8(strUtf8); |
| 1027 | UNIT_ASSERT(s1 == strWide); |
| 1028 | |
| 1029 | s1.AssignAscii(text); |
| 1030 | UNIT_ASSERT(s1 == wtext); |
| 1031 | |
| 1032 | // append |
| 1033 | |
| 1034 | TUtf32String s2; |
| 1035 | TUtf32String testAppend = strWide; |
| 1036 | s2.AppendUtf16(UTF8ToWide(strUtf8)); |
| 1037 | UNIT_ASSERT(testAppend == s2); |
| 1038 | |
| 1039 | testAppend += ' '; |
| 1040 | s2.AppendAscii(" "); |
| 1041 | UNIT_ASSERT(testAppend == s2); |
| 1042 |
nothing calls this directly
no test coverage detected