xref: /aosp_15_r20/external/pytorch/c10/test/util/string_util_test.cpp (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #include <c10/util/StringUtil.h>
2 
3 #include <gtest/gtest.h>
4 
5 namespace {
6 
7 namespace test_str_narrow_single {
TEST(StringUtilTest,testStrNarrowSingle)8 TEST(StringUtilTest, testStrNarrowSingle) {
9   std::string s = "narrow test string";
10   EXPECT_EQ(s, c10::str(s));
11 
12   const char* c_str = s.c_str();
13   EXPECT_EQ(s, c10::str(c_str));
14 
15   char c = 'a';
16   EXPECT_EQ(std::string(1, c), c10::str(c));
17 }
18 } // namespace test_str_narrow_single
19 
20 namespace test_str_wide_single {
TEST(StringUtilTest,testStrWideSingle)21 TEST(StringUtilTest, testStrWideSingle) {
22   std::wstring s = L"wide test string";
23   std::string narrow = "wide test string";
24   EXPECT_EQ(narrow, c10::str(s));
25 
26   const wchar_t* c_str = s.c_str();
27   EXPECT_EQ(narrow, c10::str(c_str));
28 
29   wchar_t c = L'a';
30   std::string narrowC = "a";
31   EXPECT_EQ(narrowC, c10::str(c));
32 }
33 } // namespace test_str_wide_single
34 
35 namespace test_str_wide_single_multibyte {
TEST(StringUtilTest,testStrWideSingleMultibyte)36 TEST(StringUtilTest, testStrWideSingleMultibyte) {
37   std::wstring s = L"\u00EC blah";
38   std::string narrow = "\xC3\xAC blah";
39   EXPECT_EQ(narrow, c10::str(s));
40 
41   const wchar_t* c_str = s.c_str();
42   EXPECT_EQ(narrow, c10::str(c_str));
43 
44   wchar_t c = L'\u00EC';
45   std::string narrowC = "\xC3\xAC";
46   EXPECT_EQ(narrowC, c10::str(c));
47 }
48 } // namespace test_str_wide_single_multibyte
49 
50 namespace test_str_wide_empty {
TEST(StringUtilTest,testStrWideEmpty)51 TEST(StringUtilTest, testStrWideEmpty) {
52   std::wstring s = L"";
53   std::string narrow = "";
54   EXPECT_EQ(narrow, c10::str(s));
55 
56   const wchar_t* c_str = s.c_str();
57   EXPECT_EQ(narrow, c10::str(c_str));
58 
59   wchar_t c = L'\0';
60   std::string narrowC(1, '\0');
61   EXPECT_EQ(narrowC, c10::str(c));
62 }
63 } // namespace test_str_wide_empty
64 
65 namespace test_str_multi {
TEST(StringUtilTest,testStrMulti)66 TEST(StringUtilTest, testStrMulti) {
67   std::string result = c10::str(
68       "c_str ",
69       'c',
70       std::string(" std::string "),
71       42,
72       L" wide c_str ",
73       L'w',
74       std::wstring(L" std::wstring "));
75   std::string expected = "c_str c std::string 42 wide c_str w std::wstring ";
76   EXPECT_EQ(expected, result);
77 }
78 } // namespace test_str_multi
79 
80 } // namespace
81