|
8 | 8 |
|
9 | 9 | #include "hdr/types/mbstate_t.h" |
10 | 10 | #include "hdr/types/wchar_t.h" |
11 | | -#include "src/__support/libc_errno.h" |
12 | 11 | #include "src/string/memset.h" |
13 | 12 | #include "src/wchar/wcsrtombs.h" |
| 13 | +#include "test/UnitTest/ErrnoCheckingTest.h" |
14 | 14 | #include "test/UnitTest/Test.h" |
| 15 | +#include "src/__support/wchar/mbstate.h" |
| 16 | + |
| 17 | +using LlvmLibcWCSRToMBSTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; |
15 | 18 |
|
16 | 19 | TEST(LlvmLibcWCSRToMBSTest, SingleCharacterOneByte) { |
17 | 20 | mbstate_t state; |
@@ -85,7 +88,7 @@ TEST(LlvmLibcWCSRToMBSTest, MultiplePartialConversions) { |
85 | 88 |
|
86 | 89 | count = LIBC_NAMESPACE::wcsrtombs(mbs, &wcs, 1, &state); |
87 | 90 | written += count; |
88 | | - //ASSERT_EQ(count, static_cast<size_t>(1)); |
| 91 | + // ASSERT_EQ(count, static_cast<size_t>(1)); |
89 | 92 | ASSERT_EQ(wcs, wcs_start); |
90 | 93 | ASSERT_EQ(mbs[0], expected[0]); |
91 | 94 | ASSERT_EQ(mbs[1], '\x01'); |
@@ -179,8 +182,19 @@ TEST(LlvmLibcWCSRToMBSTest, InvalidWchar) { |
179 | 182 | size_t count = LIBC_NAMESPACE::wcsrtombs(mbs, &wcs, 5, &state); |
180 | 183 | ASSERT_EQ(count, static_cast<size_t>(5)); |
181 | 184 | ASSERT_TRUE(*wcs == static_cast<wchar_t>(0x12ffff)); |
| 185 | + ASSERT_ERRNO_SUCCESS(); |
182 | 186 |
|
183 | 187 | count = LIBC_NAMESPACE::wcsrtombs(mbs + count, &wcs, 5, &state); // invalid |
184 | 188 | ASSERT_EQ(count, static_cast<size_t>(-1)); |
185 | | - ASSERT_EQ(static_cast<int>(libc_errno), EILSEQ); |
| 189 | + ASSERT_ERRNO_EQ(EILSEQ); |
| 190 | +} |
| 191 | + |
| 192 | +TEST(LlvmLibcWCSRToMBSTest, InvalidState) { |
| 193 | + LIBC_NAMESPACE::internal::mbstate state{0, 0, 9}; // 9 total bytes is invalid |
| 194 | + const wchar_t *wcs = L"\xFF\xAC15"; |
| 195 | + char mbs[5]; |
| 196 | + // convert the valid wchar |
| 197 | + size_t count = LIBC_NAMESPACE::wcsrtombs(mbs, &wcs, 5, reinterpret_cast<mbstate_t*>(&state)); |
| 198 | + ASSERT_EQ(count, static_cast<size_t>(-1)); |
| 199 | + ASSERT_ERRNO_EQ(EINVAL); |
186 | 200 | } |
0 commit comments