/* * PROJECT: ReactOS API tests * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) * PURPOSE: Tests for mbtowc * COPYRIGHT: Copyright 2020 George Bișoc */ #include #include #define WIN32_NO_STATUS #include #include START_TEST(mbtowc) { int Length; wchar_t BufferDest[3]; char *ch; ch = AllocateGuarded(sizeof(ch)); if (!ch) { skip("Buffer allocation failed!\n"); return; } /* Assign a character for tests */ *ch = 'A'; /* Everything is NULL */ Length = mbtowc(NULL, NULL, 0); ok(Length == 0, "Expected 0 characters to be converted as everything is NULL but got %u.\n", Length); /* Don't examine the number of bytes pointed by multibyte parameter */ Length = mbtowc(BufferDest, ch, 0); ok(Length == 0, "Expected 0 characters to be converted but got %u.\n", Length); /* Wide character argument is invalid */ Length = mbtowc(NULL, ch, 0); ok(Length == 0, "Expected 0 characters to be converted but got %u.\n", Length); /* The multibyte argument is invalid */ Length = mbtowc(BufferDest, NULL, 0); ok(Length == 0, "Expected 0 characters to be converted but got %u.\n", Length); /* The multibyte argument is invalid but count number for examination is correct */ Length = mbtowc(BufferDest, NULL, MB_CUR_MAX); ok(Length == 0, "Expected 0 characters to be converted but got %u.\n", Length); /* Don't give the output but the count character inspection argument is valid */ Length = mbtowc(NULL, ch, MB_CUR_MAX); ok(Length == 1, "The number of bytes to check should be 1 but got %u.\n", Length); /* Convert the character and validate the output that we should get */ Length = mbtowc(BufferDest, ch, MB_CUR_MAX); ok(Length == 1, "Expected 1 character to be converted but got %u.\n", Length); ok_int(BufferDest[0], L'A'); FreeGuarded(ch); }