| #include <stdio.h> |
| #include <wchar.h> |
| |
| #include <minitest/minitest.h> |
| |
| TEST(stdio,snprintf) { |
| char char_buff[32]; |
| size_t char_buff_len = sizeof(char_buff) / sizeof(char); |
| |
| EXPECT_EQ(2, snprintf(char_buff, char_buff_len, "ab")); |
| EXPECT_EQ(5, snprintf(char_buff, char_buff_len, "%s", "abcde")); |
| static const char kString[] = "Hello, World"; |
| EXPECT_EQ(12, snprintf(char_buff, char_buff_len, "%s", kString)); |
| EXPECT_EQ(12, snprintf(char_buff, 13, "%s", kString)); |
| |
| EXPECT_EQ(12, snprintf(char_buff, 12, "%s", kString)); |
| EXPECT_EQ(L'\0', char_buff[11]); |
| EXPECT_EQ(12, snprintf(char_buff, 1, "%s", kString)); |
| EXPECT_EQ(L'\0', char_buff[0]); |
| |
| EXPECT_EQ(20, snprintf(char_buff, char_buff_len, "%a", 3.1415926535)); |
| EXPECT_STREQ("0x1.921fb54411744p+1", char_buff); |
| } |
| |
| TEST(stdio,swprintf) { |
| wchar_t wide_buff[32]; |
| size_t wide_buff_len = sizeof(wide_buff) / sizeof(wchar_t); |
| EXPECT_EQ(2, swprintf(wide_buff, wide_buff_len, L"ab")); |
| EXPECT_EQ(5, swprintf(wide_buff, wide_buff_len, L"%s", "abcde")); |
| static const wchar_t kWideString[] = L"Hello\uff41 World"; |
| EXPECT_EQ(12, swprintf(wide_buff, wide_buff_len, L"%ls", kWideString)); |
| EXPECT_EQ(12, swprintf(wide_buff, 13, L"%ls", kWideString)); |
| |
| // Unlike snprintf(), swprintf() returns -1 in case of truncation |
| // and doesn't necessarily zero-terminate the output! |
| EXPECT_EQ(-1, swprintf(wide_buff, 12, L"%ls", kWideString)); |
| EXPECT_EQ(-1, swprintf(wide_buff, 1, L"%ls", kWideString)); |
| } |
| |