Home | History | Annotate | Download | only in tests
      1 #include <stdio.h>
      2 #include <wchar.h>
      3 
      4 #include <minitest/minitest.h>
      5 
      6 TEST(stdio,snprintf) {
      7   char char_buff[32];
      8   size_t char_buff_len = sizeof(char_buff) / sizeof(char);
      9   EXPECT_EQ(2, snprintf(char_buff, char_buff_len, "ab"));
     10   EXPECT_EQ(5, snprintf(char_buff, char_buff_len, "%s", "abcde"));
     11   static const char kString[] = "Hello, World";
     12   EXPECT_EQ(12, snprintf(char_buff, char_buff_len, "%s", kString));
     13   EXPECT_EQ(12, snprintf(char_buff, 13, "%s", kString));
     14 
     15   EXPECT_EQ(12, snprintf(char_buff, 12, "%s", kString));
     16   EXPECT_EQ(L'\0', char_buff[11]);
     17   EXPECT_EQ(12, snprintf(char_buff, 1, "%s", kString));
     18   EXPECT_EQ(L'\0', char_buff[0]);
     19 }
     20 
     21 TEST(stdio,swprintf) {
     22   wchar_t wide_buff[32];
     23   size_t wide_buff_len = sizeof(wide_buff) / sizeof(wchar_t);
     24   EXPECT_EQ(2, swprintf(wide_buff, wide_buff_len, L"ab"));
     25   EXPECT_EQ(5, swprintf(wide_buff, wide_buff_len, L"%s", "abcde"));
     26   static const wchar_t kWideString[] = L"Hello\uff41 World";
     27   EXPECT_EQ(12, swprintf(wide_buff, wide_buff_len, L"%ls", kWideString));
     28   EXPECT_EQ(12, swprintf(wide_buff, 13, L"%ls", kWideString));
     29 
     30   // Unlike snprintf(), swprintf() returns -1 in case of truncation
     31   // and doesn't necessarily zero-terminate the output!
     32   EXPECT_EQ(-1, swprintf(wide_buff, 12, L"%ls", kWideString));
     33   EXPECT_EQ(-1, swprintf(wide_buff, 1, L"%ls", kWideString));
     34 }
     35 
     36