Skip to content

Commit 1d02a8b

Browse files
[libc] fix string conversion tests for windows
There were some copy paste errors as well as some oddities around how windows handles the difference between long and long long types. This change fixes those. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D108591
1 parent db232de commit 1d02a8b

File tree

5 files changed

+109
-102
lines changed

5 files changed

+109
-102
lines changed

libc/test/src/stdlib/strtol_test.cpp

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#include <errno.h>
1414
#include <limits.h>
15+
#include <stddef.h>
1516

1617
TEST(LlvmLibcStrToLTest, InvalidBase) {
1718
const char *ten = "10";
@@ -27,7 +28,8 @@ TEST(LlvmLibcStrToLTest, CleanBaseTenDecode) {
2728
errno = 0;
2829
ASSERT_EQ(__llvm_libc::strtol(ten, &str_end, 10), 10l);
2930
ASSERT_EQ(errno, 0);
30-
EXPECT_EQ(str_end - ten, 2l);
31+
EXPECT_EQ(str_end - ten, ptrdiff_t(2));
32+
3133
errno = 0;
3234
ASSERT_EQ(__llvm_libc::strtol(ten, nullptr, 10), 10l);
3335
ASSERT_EQ(errno, 0);
@@ -36,47 +38,47 @@ TEST(LlvmLibcStrToLTest, CleanBaseTenDecode) {
3638
errno = 0;
3739
ASSERT_EQ(__llvm_libc::strtol(hundred, &str_end, 10), 100l);
3840
ASSERT_EQ(errno, 0);
39-
EXPECT_EQ(str_end - hundred, 3l);
41+
EXPECT_EQ(str_end - hundred, ptrdiff_t(3));
4042

4143
const char *negative = "-100";
4244
errno = 0;
4345
ASSERT_EQ(__llvm_libc::strtol(negative, &str_end, 10), -100l);
4446
ASSERT_EQ(errno, 0);
45-
EXPECT_EQ(str_end - negative, 4l);
47+
EXPECT_EQ(str_end - negative, ptrdiff_t(4));
4648

4749
const char *big_number = "123456789012345";
4850
errno = 0;
4951
ASSERT_EQ(__llvm_libc::strtol(big_number, &str_end, 10), 123456789012345l);
5052
ASSERT_EQ(errno, 0);
51-
EXPECT_EQ(str_end - big_number, 15l);
53+
EXPECT_EQ(str_end - big_number, ptrdiff_t(15));
5254

5355
const char *big_negative_number = "-123456789012345";
5456
errno = 0;
5557
ASSERT_EQ(__llvm_libc::strtol(big_negative_number, &str_end, 10),
5658
-123456789012345l);
5759
ASSERT_EQ(errno, 0);
58-
EXPECT_EQ(str_end - big_negative_number, 16l);
60+
EXPECT_EQ(str_end - big_negative_number, ptrdiff_t(16));
5961

6062
const char *too_big_number = "123456789012345678901";
6163
errno = 0;
6264
ASSERT_EQ(__llvm_libc::strtol(too_big_number, &str_end, 10), LONG_MAX);
6365
ASSERT_EQ(errno, ERANGE);
64-
EXPECT_EQ(str_end - too_big_number, 21l);
66+
EXPECT_EQ(str_end - too_big_number, ptrdiff_t(21));
6567

6668
const char *too_big_negative_number = "-123456789012345678901";
6769
errno = 0;
6870
ASSERT_EQ(__llvm_libc::strtol(too_big_negative_number, &str_end, 10),
6971
LONG_MIN);
7072
ASSERT_EQ(errno, ERANGE);
71-
EXPECT_EQ(str_end - too_big_negative_number, 22l);
73+
EXPECT_EQ(str_end - too_big_negative_number, ptrdiff_t(22));
7274

7375
const char *long_number_range_test =
7476
"10000000000000000000000000000000000000000000000000";
7577
errno = 0;
7678
ASSERT_EQ(__llvm_libc::strtol(long_number_range_test, &str_end, 10),
7779
LONG_MAX);
7880
ASSERT_EQ(errno, ERANGE);
79-
EXPECT_EQ(str_end - long_number_range_test, 50l);
81+
EXPECT_EQ(str_end - long_number_range_test, ptrdiff_t(50));
8082
}
8183

8284
TEST(LlvmLibcStrToLTest, MessyBaseTenDecode) {
@@ -86,61 +88,61 @@ TEST(LlvmLibcStrToLTest, MessyBaseTenDecode) {
8688
errno = 0;
8789
ASSERT_EQ(__llvm_libc::strtol(spaces_before, &str_end, 10), 10l);
8890
ASSERT_EQ(errno, 0);
89-
EXPECT_EQ(str_end - spaces_before, 7l);
91+
EXPECT_EQ(str_end - spaces_before, ptrdiff_t(7));
9092

9193
const char *spaces_after = "10 ";
9294
errno = 0;
9395
ASSERT_EQ(__llvm_libc::strtol(spaces_after, &str_end, 10), 10l);
9496
ASSERT_EQ(errno, 0);
95-
EXPECT_EQ(str_end - spaces_after, 2l);
97+
EXPECT_EQ(str_end - spaces_after, ptrdiff_t(2));
9698

9799
const char *word_before = "word10";
98100
errno = 0;
99101
ASSERT_EQ(__llvm_libc::strtol(word_before, &str_end, 10), 0l);
100102
ASSERT_EQ(errno, 0);
101-
EXPECT_EQ(str_end - word_before, 0l);
103+
EXPECT_EQ(str_end - word_before, ptrdiff_t(0));
102104

103105
const char *word_after = "10word";
104106
errno = 0;
105107
ASSERT_EQ(__llvm_libc::strtol(word_after, &str_end, 10), 10l);
106108
ASSERT_EQ(errno, 0);
107-
EXPECT_EQ(str_end - word_after, 2l);
109+
EXPECT_EQ(str_end - word_after, ptrdiff_t(2));
108110

109111
const char *two_numbers = "10 999";
110112
errno = 0;
111113
ASSERT_EQ(__llvm_libc::strtol(two_numbers, &str_end, 10), 10l);
112114
ASSERT_EQ(errno, 0);
113-
EXPECT_EQ(str_end - two_numbers, 2l);
115+
EXPECT_EQ(str_end - two_numbers, ptrdiff_t(2));
114116

115117
const char *two_signs = "--10 999";
116118
errno = 0;
117119
ASSERT_EQ(__llvm_libc::strtol(two_signs, &str_end, 10), 0l);
118120
ASSERT_EQ(errno, 0);
119-
EXPECT_EQ(str_end - two_signs, 1l);
121+
EXPECT_EQ(str_end - two_signs, ptrdiff_t(1));
120122

121123
const char *sign_before = "+2=4";
122124
errno = 0;
123125
ASSERT_EQ(__llvm_libc::strtol(sign_before, &str_end, 10), 2l);
124126
ASSERT_EQ(errno, 0);
125-
EXPECT_EQ(str_end - sign_before, 2l);
127+
EXPECT_EQ(str_end - sign_before, ptrdiff_t(2));
126128

127129
const char *sign_after = "2+2=4";
128130
errno = 0;
129131
ASSERT_EQ(__llvm_libc::strtol(sign_after, &str_end, 10), 2l);
130132
ASSERT_EQ(errno, 0);
131-
EXPECT_EQ(str_end - sign_after, 1l);
133+
EXPECT_EQ(str_end - sign_after, ptrdiff_t(1));
132134

133135
const char *tab_before = "\t10";
134136
errno = 0;
135137
ASSERT_EQ(__llvm_libc::strtol(tab_before, &str_end, 10), 10l);
136138
ASSERT_EQ(errno, 0);
137-
EXPECT_EQ(str_end - tab_before, 3l);
139+
EXPECT_EQ(str_end - tab_before, ptrdiff_t(3));
138140

139141
const char *all_together = "\t -12345and+67890";
140142
errno = 0;
141143
ASSERT_EQ(__llvm_libc::strtol(all_together, &str_end, 10), -12345l);
142144
ASSERT_EQ(errno, 0);
143-
EXPECT_EQ(str_end - all_together, 9l);
145+
EXPECT_EQ(str_end - all_together, ptrdiff_t(9));
144146
}
145147

146148
static char int_to_b36_char(int input) {
@@ -250,13 +252,13 @@ TEST(LlvmLibcStrToLTest, CleanBaseSixteenDecode) {
250252
errno = 0;
251253
ASSERT_EQ(__llvm_libc::strtol(no_prefix, &str_end, 16), 0x123abcl);
252254
ASSERT_EQ(errno, 0);
253-
EXPECT_EQ(str_end - no_prefix, 6l);
255+
EXPECT_EQ(str_end - no_prefix, ptrdiff_t(6));
254256

255257
const char *yes_prefix = "0x456def";
256258
errno = 0;
257259
ASSERT_EQ(__llvm_libc::strtol(yes_prefix, &str_end, 16), 0x456defl);
258260
ASSERT_EQ(errno, 0);
259-
EXPECT_EQ(str_end - yes_prefix, 8l);
261+
EXPECT_EQ(str_end - yes_prefix, ptrdiff_t(8));
260262
}
261263

262264
TEST(LlvmLibcStrToLTest, AutomaticBaseSelection) {
@@ -266,24 +268,24 @@ TEST(LlvmLibcStrToLTest, AutomaticBaseSelection) {
266268
errno = 0;
267269
ASSERT_EQ(__llvm_libc::strtol(base_ten, &str_end, 0), 12345l);
268270
ASSERT_EQ(errno, 0);
269-
EXPECT_EQ(str_end - base_ten, 5l);
271+
EXPECT_EQ(str_end - base_ten, ptrdiff_t(5));
270272

271273
const char *base_sixteen_no_prefix = "123abc";
272274
errno = 0;
273275
ASSERT_EQ(__llvm_libc::strtol(base_sixteen_no_prefix, &str_end, 0), 123l);
274276
ASSERT_EQ(errno, 0);
275-
EXPECT_EQ(str_end - base_sixteen_no_prefix, 3l);
277+
EXPECT_EQ(str_end - base_sixteen_no_prefix, ptrdiff_t(3));
276278

277279
const char *base_sixteen_with_prefix = "0x456def";
278280
errno = 0;
279281
ASSERT_EQ(__llvm_libc::strtol(base_sixteen_with_prefix, &str_end, 0),
280282
0x456defl);
281283
ASSERT_EQ(errno, 0);
282-
EXPECT_EQ(str_end - base_sixteen_with_prefix, 8l);
284+
EXPECT_EQ(str_end - base_sixteen_with_prefix, ptrdiff_t(8));
283285

284286
const char *base_eight_with_prefix = "012345";
285287
errno = 0;
286288
ASSERT_EQ(__llvm_libc::strtol(base_eight_with_prefix, &str_end, 0), 012345l);
287289
ASSERT_EQ(errno, 0);
288-
EXPECT_EQ(str_end - base_eight_with_prefix, 6l);
290+
EXPECT_EQ(str_end - base_eight_with_prefix, ptrdiff_t(6));
289291
}

0 commit comments

Comments
 (0)