xref: /llvm-project/libc/test/src/__support/integer_to_string_test.cpp (revision 5dd8553423904905bd8751555ef845a28ac43c0f)
1 //===-- Unittests for integer_to_string -----------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "src/__support/CPP/StringView.h"
10 #include "src/__support/integer_to_string.h"
11 
12 #include "utils/UnitTest/Test.h"
13 
14 #include "limits.h"
15 
16 using __llvm_libc::integer_to_string;
17 using __llvm_libc::cpp::StringView;
18 
19 TEST(LlvmLibcIntegerToStringTest, UINT8) {
20   EXPECT_EQ(integer_to_string(uint8_t(0)).str(), (StringView("0")));
21   EXPECT_EQ(integer_to_string(uint8_t(1)).str(), (StringView("1")));
22   EXPECT_EQ(integer_to_string(uint8_t(12)).str(), (StringView("12")));
23   EXPECT_EQ(integer_to_string(uint8_t(123)).str(), (StringView("123")));
24   EXPECT_EQ(integer_to_string(uint8_t(UINT8_MAX)).str(), (StringView("255")));
25   EXPECT_EQ(integer_to_string(uint8_t(-1)).str(), (StringView("255")));
26 }
27 
28 TEST(LlvmLibcIntegerToStringTest, INT8) {
29   EXPECT_EQ(integer_to_string(int8_t(0)).str(), (StringView("0")));
30   EXPECT_EQ(integer_to_string(int8_t(1)).str(), (StringView("1")));
31   EXPECT_EQ(integer_to_string(int8_t(12)).str(), (StringView("12")));
32   EXPECT_EQ(integer_to_string(int8_t(123)).str(), (StringView("123")));
33   EXPECT_EQ(integer_to_string(int8_t(-12)).str(), (StringView("-12")));
34   EXPECT_EQ(integer_to_string(int8_t(-123)).str(), (StringView("-123")));
35   EXPECT_EQ(integer_to_string(int8_t(INT8_MAX)).str(), (StringView("127")));
36   EXPECT_EQ(integer_to_string(int8_t(INT8_MIN)).str(), (StringView("-128")));
37 }
38 
39 TEST(LlvmLibcIntegerToStringTest, UINT16) {
40   EXPECT_EQ(integer_to_string(uint16_t(0)).str(), (StringView("0")));
41   EXPECT_EQ(integer_to_string(uint16_t(1)).str(), (StringView("1")));
42   EXPECT_EQ(integer_to_string(uint16_t(12)).str(), (StringView("12")));
43   EXPECT_EQ(integer_to_string(uint16_t(123)).str(), (StringView("123")));
44   EXPECT_EQ(integer_to_string(uint16_t(1234)).str(), (StringView("1234")));
45   EXPECT_EQ(integer_to_string(uint16_t(12345)).str(), (StringView("12345")));
46   EXPECT_EQ(integer_to_string(uint16_t(UINT16_MAX)).str(),
47             (StringView("65535")));
48   EXPECT_EQ(integer_to_string(uint16_t(-1)).str(), (StringView("65535")));
49 }
50 
51 TEST(LlvmLibcIntegerToStringTest, INT16) {
52   EXPECT_EQ(integer_to_string(int16_t(0)).str(), (StringView("0")));
53   EXPECT_EQ(integer_to_string(int16_t(1)).str(), (StringView("1")));
54   EXPECT_EQ(integer_to_string(int16_t(12)).str(), (StringView("12")));
55   EXPECT_EQ(integer_to_string(int16_t(123)).str(), (StringView("123")));
56   EXPECT_EQ(integer_to_string(int16_t(1234)).str(), (StringView("1234")));
57   EXPECT_EQ(integer_to_string(int16_t(12345)).str(), (StringView("12345")));
58   EXPECT_EQ(integer_to_string(int16_t(-1)).str(), (StringView("-1")));
59   EXPECT_EQ(integer_to_string(int16_t(-12)).str(), (StringView("-12")));
60   EXPECT_EQ(integer_to_string(int16_t(-123)).str(), (StringView("-123")));
61   EXPECT_EQ(integer_to_string(int16_t(-1234)).str(), (StringView("-1234")));
62   EXPECT_EQ(integer_to_string(int16_t(-12345)).str(), (StringView("-12345")));
63   EXPECT_EQ(integer_to_string(int16_t(INT16_MAX)).str(), (StringView("32767")));
64   EXPECT_EQ(integer_to_string(int16_t(INT16_MIN)).str(),
65             (StringView("-32768")));
66 }
67 
68 TEST(LlvmLibcIntegerToStringTest, UINT32) {
69   EXPECT_EQ(integer_to_string(uint32_t(0)).str(), (StringView("0")));
70   EXPECT_EQ(integer_to_string(uint32_t(1)).str(), (StringView("1")));
71   EXPECT_EQ(integer_to_string(uint32_t(12)).str(), (StringView("12")));
72   EXPECT_EQ(integer_to_string(uint32_t(123)).str(), (StringView("123")));
73   EXPECT_EQ(integer_to_string(uint32_t(1234)).str(), (StringView("1234")));
74   EXPECT_EQ(integer_to_string(uint32_t(12345)).str(), (StringView("12345")));
75   EXPECT_EQ(integer_to_string(uint32_t(123456)).str(), (StringView("123456")));
76   EXPECT_EQ(integer_to_string(uint32_t(1234567)).str(),
77             (StringView("1234567")));
78   EXPECT_EQ(integer_to_string(uint32_t(12345678)).str(),
79             (StringView("12345678")));
80   EXPECT_EQ(integer_to_string(uint32_t(123456789)).str(),
81             (StringView("123456789")));
82   EXPECT_EQ(integer_to_string(uint32_t(1234567890)).str(),
83             (StringView("1234567890")));
84   EXPECT_EQ(integer_to_string(uint32_t(UINT32_MAX)).str(),
85             (StringView("4294967295")));
86   EXPECT_EQ(integer_to_string(uint32_t(-1)).str(), (StringView("4294967295")));
87 }
88 
89 TEST(LlvmLibcIntegerToStringTest, INT32) {
90   EXPECT_EQ(integer_to_string(int32_t(0)).str(), (StringView("0")));
91   EXPECT_EQ(integer_to_string(int32_t(1)).str(), (StringView("1")));
92   EXPECT_EQ(integer_to_string(int32_t(12)).str(), (StringView("12")));
93   EXPECT_EQ(integer_to_string(int32_t(123)).str(), (StringView("123")));
94   EXPECT_EQ(integer_to_string(int32_t(1234)).str(), (StringView("1234")));
95   EXPECT_EQ(integer_to_string(int32_t(12345)).str(), (StringView("12345")));
96   EXPECT_EQ(integer_to_string(int32_t(123456)).str(), (StringView("123456")));
97   EXPECT_EQ(integer_to_string(int32_t(1234567)).str(), (StringView("1234567")));
98   EXPECT_EQ(integer_to_string(int32_t(12345678)).str(),
99             (StringView("12345678")));
100   EXPECT_EQ(integer_to_string(int32_t(123456789)).str(),
101             (StringView("123456789")));
102   EXPECT_EQ(integer_to_string(int32_t(1234567890)).str(),
103             (StringView("1234567890")));
104   EXPECT_EQ(integer_to_string(int32_t(-1)).str(), (StringView("-1")));
105   EXPECT_EQ(integer_to_string(int32_t(-12)).str(), (StringView("-12")));
106   EXPECT_EQ(integer_to_string(int32_t(-123)).str(), (StringView("-123")));
107   EXPECT_EQ(integer_to_string(int32_t(-1234)).str(), (StringView("-1234")));
108   EXPECT_EQ(integer_to_string(int32_t(-12345)).str(), (StringView("-12345")));
109   EXPECT_EQ(integer_to_string(int32_t(-123456)).str(), (StringView("-123456")));
110   EXPECT_EQ(integer_to_string(int32_t(-1234567)).str(),
111             (StringView("-1234567")));
112   EXPECT_EQ(integer_to_string(int32_t(-12345678)).str(),
113             (StringView("-12345678")));
114   EXPECT_EQ(integer_to_string(int32_t(-123456789)).str(),
115             (StringView("-123456789")));
116   EXPECT_EQ(integer_to_string(int32_t(-1234567890)).str(),
117             (StringView("-1234567890")));
118   EXPECT_EQ(integer_to_string(int32_t(INT32_MAX)).str(),
119             (StringView("2147483647")));
120   EXPECT_EQ(integer_to_string(int32_t(INT32_MIN)).str(),
121             (StringView("-2147483648")));
122 }
123 
124 TEST(LlvmLibcIntegerToStringTest, UINT64) {
125   EXPECT_EQ(integer_to_string(uint64_t(0)).str(), (StringView("0")));
126   EXPECT_EQ(integer_to_string(uint64_t(1)).str(), (StringView("1")));
127   EXPECT_EQ(integer_to_string(uint64_t(12)).str(), (StringView("12")));
128   EXPECT_EQ(integer_to_string(uint64_t(123)).str(), (StringView("123")));
129   EXPECT_EQ(integer_to_string(uint64_t(1234)).str(), (StringView("1234")));
130   EXPECT_EQ(integer_to_string(uint64_t(12345)).str(), (StringView("12345")));
131   EXPECT_EQ(integer_to_string(uint64_t(123456)).str(), (StringView("123456")));
132   EXPECT_EQ(integer_to_string(uint64_t(1234567)).str(),
133             (StringView("1234567")));
134   EXPECT_EQ(integer_to_string(uint64_t(12345678)).str(),
135             (StringView("12345678")));
136   EXPECT_EQ(integer_to_string(uint64_t(123456789)).str(),
137             (StringView("123456789")));
138   EXPECT_EQ(integer_to_string(uint64_t(1234567890)).str(),
139             (StringView("1234567890")));
140   EXPECT_EQ(integer_to_string(uint64_t(1234567890123456789)).str(),
141             (StringView("1234567890123456789")));
142   EXPECT_EQ(integer_to_string(uint64_t(UINT64_MAX)).str(),
143             (StringView("18446744073709551615")));
144   EXPECT_EQ(integer_to_string(uint64_t(-1)).str(),
145             (StringView("18446744073709551615")));
146 }
147 
148 TEST(LlvmLibcIntegerToStringTest, INT64) {
149   EXPECT_EQ(integer_to_string(int64_t(0)).str(), (StringView("0")));
150   EXPECT_EQ(integer_to_string(int64_t(1)).str(), (StringView("1")));
151   EXPECT_EQ(integer_to_string(int64_t(12)).str(), (StringView("12")));
152   EXPECT_EQ(integer_to_string(int64_t(123)).str(), (StringView("123")));
153   EXPECT_EQ(integer_to_string(int64_t(1234)).str(), (StringView("1234")));
154   EXPECT_EQ(integer_to_string(int64_t(12345)).str(), (StringView("12345")));
155   EXPECT_EQ(integer_to_string(int64_t(123456)).str(), (StringView("123456")));
156   EXPECT_EQ(integer_to_string(int64_t(1234567)).str(), (StringView("1234567")));
157   EXPECT_EQ(integer_to_string(int64_t(12345678)).str(),
158             (StringView("12345678")));
159   EXPECT_EQ(integer_to_string(int64_t(123456789)).str(),
160             (StringView("123456789")));
161   EXPECT_EQ(integer_to_string(int64_t(1234567890)).str(),
162             (StringView("1234567890")));
163   EXPECT_EQ(integer_to_string(int64_t(1234567890123456789)).str(),
164             (StringView("1234567890123456789")));
165   EXPECT_EQ(integer_to_string(int64_t(-1)).str(), (StringView("-1")));
166   EXPECT_EQ(integer_to_string(int64_t(-12)).str(), (StringView("-12")));
167   EXPECT_EQ(integer_to_string(int64_t(-123)).str(), (StringView("-123")));
168   EXPECT_EQ(integer_to_string(int64_t(-1234)).str(), (StringView("-1234")));
169   EXPECT_EQ(integer_to_string(int64_t(-12345)).str(), (StringView("-12345")));
170   EXPECT_EQ(integer_to_string(int64_t(-123456)).str(), (StringView("-123456")));
171   EXPECT_EQ(integer_to_string(int64_t(-1234567)).str(),
172             (StringView("-1234567")));
173   EXPECT_EQ(integer_to_string(int64_t(-12345678)).str(),
174             (StringView("-12345678")));
175   EXPECT_EQ(integer_to_string(int64_t(-123456789)).str(),
176             (StringView("-123456789")));
177   EXPECT_EQ(integer_to_string(int64_t(-1234567890)).str(),
178             (StringView("-1234567890")));
179   EXPECT_EQ(integer_to_string(int64_t(-1234567890123456789)).str(),
180             (StringView("-1234567890123456789")));
181   EXPECT_EQ(integer_to_string(int64_t(INT64_MAX)).str(),
182             (StringView("9223372036854775807")));
183   EXPECT_EQ(integer_to_string(int64_t(INT64_MIN)).str(),
184             (StringView("-9223372036854775808")));
185 }
186