xref: /llvm-project/libc/test/src/__support/integer_to_string_test.cpp (revision 7c666c14f82ee13ddd222aba9543a5579e608e03)
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_TRUE(integer_to_string(uint8_t(0)).str().equals(StringView("0")));
21   EXPECT_TRUE(integer_to_string(uint8_t(1)).str().equals(StringView("1")));
22   EXPECT_TRUE(integer_to_string(uint8_t(12)).str().equals(StringView("12")));
23   EXPECT_TRUE(integer_to_string(uint8_t(123)).str().equals(StringView("123")));
24   EXPECT_TRUE(
25       integer_to_string(uint8_t(UINT8_MAX)).str().equals(StringView("255")));
26   EXPECT_TRUE(integer_to_string(uint8_t(-1)).str().equals(StringView("255")));
27 }
28 
29 TEST(LlvmLibcIntegerToStringTest, INT8) {
30   EXPECT_TRUE(integer_to_string(int8_t(0)).str().equals(StringView("0")));
31   EXPECT_TRUE(integer_to_string(int8_t(1)).str().equals(StringView("1")));
32   EXPECT_TRUE(integer_to_string(int8_t(12)).str().equals(StringView("12")));
33   EXPECT_TRUE(integer_to_string(int8_t(123)).str().equals(StringView("123")));
34   EXPECT_TRUE(integer_to_string(int8_t(-12)).str().equals(StringView("-12")));
35   EXPECT_TRUE(integer_to_string(int8_t(-123)).str().equals(StringView("-123")));
36   EXPECT_TRUE(
37       integer_to_string(int8_t(INT8_MAX)).str().equals(StringView("127")));
38   EXPECT_TRUE(
39       integer_to_string(int8_t(INT8_MIN)).str().equals(StringView("-128")));
40 }
41 
42 TEST(LlvmLibcIntegerToStringTest, UINT16) {
43   EXPECT_TRUE(integer_to_string(uint16_t(0)).str().equals(StringView("0")));
44   EXPECT_TRUE(integer_to_string(uint16_t(1)).str().equals(StringView("1")));
45   EXPECT_TRUE(integer_to_string(uint16_t(12)).str().equals(StringView("12")));
46   EXPECT_TRUE(integer_to_string(uint16_t(123)).str().equals(StringView("123")));
47   EXPECT_TRUE(
48       integer_to_string(uint16_t(1234)).str().equals(StringView("1234")));
49   EXPECT_TRUE(
50       integer_to_string(uint16_t(12345)).str().equals(StringView("12345")));
51   EXPECT_TRUE(integer_to_string(uint16_t(UINT16_MAX))
52                   .str()
53                   .equals(StringView("65535")));
54   EXPECT_TRUE(
55       integer_to_string(uint16_t(-1)).str().equals(StringView("65535")));
56 }
57 
58 TEST(LlvmLibcIntegerToStringTest, INT16) {
59   EXPECT_TRUE(integer_to_string(int16_t(0)).str().equals(StringView("0")));
60   EXPECT_TRUE(integer_to_string(int16_t(1)).str().equals(StringView("1")));
61   EXPECT_TRUE(integer_to_string(int16_t(12)).str().equals(StringView("12")));
62   EXPECT_TRUE(integer_to_string(int16_t(123)).str().equals(StringView("123")));
63   EXPECT_TRUE(
64       integer_to_string(int16_t(1234)).str().equals(StringView("1234")));
65   EXPECT_TRUE(
66       integer_to_string(int16_t(12345)).str().equals(StringView("12345")));
67   EXPECT_TRUE(integer_to_string(int16_t(-1)).str().equals(StringView("-1")));
68   EXPECT_TRUE(integer_to_string(int16_t(-12)).str().equals(StringView("-12")));
69   EXPECT_TRUE(
70       integer_to_string(int16_t(-123)).str().equals(StringView("-123")));
71   EXPECT_TRUE(
72       integer_to_string(int16_t(-1234)).str().equals(StringView("-1234")));
73   EXPECT_TRUE(
74       integer_to_string(int16_t(-12345)).str().equals(StringView("-12345")));
75   EXPECT_TRUE(
76       integer_to_string(int16_t(INT16_MAX)).str().equals(StringView("32767")));
77   EXPECT_TRUE(
78       integer_to_string(int16_t(INT16_MIN)).str().equals(StringView("-32768")));
79 }
80 
81 TEST(LlvmLibcIntegerToStringTest, UINT32) {
82   EXPECT_TRUE(integer_to_string(uint32_t(0)).str().equals(StringView("0")));
83   EXPECT_TRUE(integer_to_string(uint32_t(1)).str().equals(StringView("1")));
84   EXPECT_TRUE(integer_to_string(uint32_t(12)).str().equals(StringView("12")));
85   EXPECT_TRUE(integer_to_string(uint32_t(123)).str().equals(StringView("123")));
86   EXPECT_TRUE(
87       integer_to_string(uint32_t(1234)).str().equals(StringView("1234")));
88   EXPECT_TRUE(
89       integer_to_string(uint32_t(12345)).str().equals(StringView("12345")));
90   EXPECT_TRUE(
91       integer_to_string(uint32_t(123456)).str().equals(StringView("123456")));
92   EXPECT_TRUE(
93       integer_to_string(uint32_t(1234567)).str().equals(StringView("1234567")));
94   EXPECT_TRUE(integer_to_string(uint32_t(12345678))
95                   .str()
96                   .equals(StringView("12345678")));
97   EXPECT_TRUE(integer_to_string(uint32_t(123456789))
98                   .str()
99                   .equals(StringView("123456789")));
100   EXPECT_TRUE(integer_to_string(uint32_t(1234567890))
101                   .str()
102                   .equals(StringView("1234567890")));
103   EXPECT_TRUE(integer_to_string(uint32_t(UINT32_MAX))
104                   .str()
105                   .equals(StringView("4294967295")));
106   EXPECT_TRUE(
107       integer_to_string(uint32_t(-1)).str().equals(StringView("4294967295")));
108 }
109 
110 TEST(LlvmLibcIntegerToStringTest, INT32) {
111   EXPECT_TRUE(integer_to_string(int32_t(0)).str().equals(StringView("0")));
112   EXPECT_TRUE(integer_to_string(int32_t(1)).str().equals(StringView("1")));
113   EXPECT_TRUE(integer_to_string(int32_t(12)).str().equals(StringView("12")));
114   EXPECT_TRUE(integer_to_string(int32_t(123)).str().equals(StringView("123")));
115   EXPECT_TRUE(
116       integer_to_string(int32_t(1234)).str().equals(StringView("1234")));
117   EXPECT_TRUE(
118       integer_to_string(int32_t(12345)).str().equals(StringView("12345")));
119   EXPECT_TRUE(
120       integer_to_string(int32_t(123456)).str().equals(StringView("123456")));
121   EXPECT_TRUE(
122       integer_to_string(int32_t(1234567)).str().equals(StringView("1234567")));
123   EXPECT_TRUE(integer_to_string(int32_t(12345678))
124                   .str()
125                   .equals(StringView("12345678")));
126   EXPECT_TRUE(integer_to_string(int32_t(123456789))
127                   .str()
128                   .equals(StringView("123456789")));
129   EXPECT_TRUE(integer_to_string(int32_t(1234567890))
130                   .str()
131                   .equals(StringView("1234567890")));
132   EXPECT_TRUE(integer_to_string(int32_t(-1)).str().equals(StringView("-1")));
133   EXPECT_TRUE(integer_to_string(int32_t(-12)).str().equals(StringView("-12")));
134   EXPECT_TRUE(
135       integer_to_string(int32_t(-123)).str().equals(StringView("-123")));
136   EXPECT_TRUE(
137       integer_to_string(int32_t(-1234)).str().equals(StringView("-1234")));
138   EXPECT_TRUE(
139       integer_to_string(int32_t(-12345)).str().equals(StringView("-12345")));
140   EXPECT_TRUE(
141       integer_to_string(int32_t(-123456)).str().equals(StringView("-123456")));
142   EXPECT_TRUE(integer_to_string(int32_t(-1234567))
143                   .str()
144                   .equals(StringView("-1234567")));
145   EXPECT_TRUE(integer_to_string(int32_t(-12345678))
146                   .str()
147                   .equals(StringView("-12345678")));
148   EXPECT_TRUE(integer_to_string(int32_t(-123456789))
149                   .str()
150                   .equals(StringView("-123456789")));
151   EXPECT_TRUE(integer_to_string(int32_t(-1234567890))
152                   .str()
153                   .equals(StringView("-1234567890")));
154   EXPECT_TRUE(integer_to_string(int32_t(INT32_MAX))
155                   .str()
156                   .equals(StringView("2147483647")));
157   EXPECT_TRUE(integer_to_string(int32_t(INT32_MIN))
158                   .str()
159                   .equals(StringView("-2147483648")));
160 }
161 
162 TEST(LlvmLibcIntegerToStringTest, UINT64) {
163   EXPECT_TRUE(integer_to_string(uint64_t(0)).str().equals(StringView("0")));
164   EXPECT_TRUE(integer_to_string(uint64_t(1)).str().equals(StringView("1")));
165   EXPECT_TRUE(integer_to_string(uint64_t(12)).str().equals(StringView("12")));
166   EXPECT_TRUE(integer_to_string(uint64_t(123)).str().equals(StringView("123")));
167   EXPECT_TRUE(
168       integer_to_string(uint64_t(1234)).str().equals(StringView("1234")));
169   EXPECT_TRUE(
170       integer_to_string(uint64_t(12345)).str().equals(StringView("12345")));
171   EXPECT_TRUE(
172       integer_to_string(uint64_t(123456)).str().equals(StringView("123456")));
173   EXPECT_TRUE(
174       integer_to_string(uint64_t(1234567)).str().equals(StringView("1234567")));
175   EXPECT_TRUE(integer_to_string(uint64_t(12345678))
176                   .str()
177                   .equals(StringView("12345678")));
178   EXPECT_TRUE(integer_to_string(uint64_t(123456789))
179                   .str()
180                   .equals(StringView("123456789")));
181   EXPECT_TRUE(integer_to_string(uint64_t(1234567890))
182                   .str()
183                   .equals(StringView("1234567890")));
184   EXPECT_TRUE(integer_to_string(uint64_t(1234567890123456789))
185                   .str()
186                   .equals(StringView("1234567890123456789")));
187   EXPECT_TRUE(integer_to_string(uint64_t(UINT64_MAX))
188                   .str()
189                   .equals(StringView("18446744073709551615")));
190   EXPECT_TRUE(integer_to_string(uint64_t(-1))
191                   .str()
192                   .equals(StringView("18446744073709551615")));
193 }
194 
195 TEST(LlvmLibcIntegerToStringTest, INT64) {
196   EXPECT_TRUE(integer_to_string(int64_t(0)).str().equals(StringView("0")));
197   EXPECT_TRUE(integer_to_string(int64_t(1)).str().equals(StringView("1")));
198   EXPECT_TRUE(integer_to_string(int64_t(12)).str().equals(StringView("12")));
199   EXPECT_TRUE(integer_to_string(int64_t(123)).str().equals(StringView("123")));
200   EXPECT_TRUE(
201       integer_to_string(int64_t(1234)).str().equals(StringView("1234")));
202   EXPECT_TRUE(
203       integer_to_string(int64_t(12345)).str().equals(StringView("12345")));
204   EXPECT_TRUE(
205       integer_to_string(int64_t(123456)).str().equals(StringView("123456")));
206   EXPECT_TRUE(
207       integer_to_string(int64_t(1234567)).str().equals(StringView("1234567")));
208   EXPECT_TRUE(integer_to_string(int64_t(12345678))
209                   .str()
210                   .equals(StringView("12345678")));
211   EXPECT_TRUE(integer_to_string(int64_t(123456789))
212                   .str()
213                   .equals(StringView("123456789")));
214   EXPECT_TRUE(integer_to_string(int64_t(1234567890))
215                   .str()
216                   .equals(StringView("1234567890")));
217   EXPECT_TRUE(integer_to_string(int64_t(1234567890123456789))
218                   .str()
219                   .equals(StringView("1234567890123456789")));
220   EXPECT_TRUE(integer_to_string(int64_t(-1)).str().equals(StringView("-1")));
221   EXPECT_TRUE(integer_to_string(int64_t(-12)).str().equals(StringView("-12")));
222   EXPECT_TRUE(
223       integer_to_string(int64_t(-123)).str().equals(StringView("-123")));
224   EXPECT_TRUE(
225       integer_to_string(int64_t(-1234)).str().equals(StringView("-1234")));
226   EXPECT_TRUE(
227       integer_to_string(int64_t(-12345)).str().equals(StringView("-12345")));
228   EXPECT_TRUE(
229       integer_to_string(int64_t(-123456)).str().equals(StringView("-123456")));
230   EXPECT_TRUE(integer_to_string(int64_t(-1234567))
231                   .str()
232                   .equals(StringView("-1234567")));
233   EXPECT_TRUE(integer_to_string(int64_t(-12345678))
234                   .str()
235                   .equals(StringView("-12345678")));
236   EXPECT_TRUE(integer_to_string(int64_t(-123456789))
237                   .str()
238                   .equals(StringView("-123456789")));
239   EXPECT_TRUE(integer_to_string(int64_t(-1234567890))
240                   .str()
241                   .equals(StringView("-1234567890")));
242   EXPECT_TRUE(integer_to_string(int64_t(-1234567890123456789))
243                   .str()
244                   .equals(StringView("-1234567890123456789")));
245   EXPECT_TRUE(integer_to_string(int64_t(INT64_MAX))
246                   .str()
247                   .equals(StringView("9223372036854775807")));
248   EXPECT_TRUE(integer_to_string(int64_t(INT64_MIN))
249                   .str()
250                   .equals(StringView("-9223372036854775808")));
251 }
252