aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Jan Tattermusch <jtattermusch@google.com>2015-12-08 17:48:17 -0800
committerGravatar Jan Tattermusch <jtattermusch@google.com>2015-12-08 17:48:17 -0800
commit338ef4aa6cf39be4761b39b25ce5dec829af535b (patch)
tree9b394a6239581b9bab3a0975ed1510e759b8fdec /test
parentf67f071f7e1fadd144a867eb7fbe6551cbfcc3f5 (diff)
fix bug MIN_VALUE bug in ltoa and int64toa and add tests
Diffstat (limited to 'test')
-rw-r--r--test/core/support/string_test.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c
index f62cbe3435..b4024fb799 100644
--- a/test/core/support/string_test.c
+++ b/test/core/support/string_test.c
@@ -286,6 +286,53 @@ static void test_strsplit(void) {
gpr_free(parts);
}
+test_ltoa() {
+ char *str;
+ char buf[GPR_LTOA_MIN_BUFSIZE];
+
+ LOG_TEST_NAME("test_ltoa");
+
+ /* zero */
+ GPR_ASSERT(1 == gpr_ltoa(0, buf));
+ GPR_ASSERT(0 == strcmp("0", buf));
+
+ /* positive number */
+ GPR_ASSERT(3 == gpr_ltoa(123, buf));
+ GPR_ASSERT(0 == strcmp("123", buf));
+
+ /* negative number */
+ GPR_ASSERT(6 == gpr_ltoa(-12345, buf));
+ GPR_ASSERT(0 == strcmp("-12345", buf));
+
+ /* large negative - we don't know the size of long in advance */
+ GPR_ASSERT(gpr_asprintf(&str, "%lld", (long long)LONG_MIN));
+ GPR_ASSERT(strlen(str) == gpr_ltoa(LONG_MIN, buf));
+ GPR_ASSERT(0 == strcmp(str, buf));
+ gpr_free(str);
+}
+
+test_int64toa() {
+ char buf[GPR_INT64TOA_MIN_BUFSIZE];
+
+ LOG_TEST_NAME("test_int64toa");
+
+ /* zero */
+ GPR_ASSERT(1 == gpr_int64toa(0, buf));
+ GPR_ASSERT(0 == strcmp("0", buf));
+
+ /* positive */
+ GPR_ASSERT(3 == gpr_int64toa(123, buf));
+ GPR_ASSERT(0 == strcmp("123", buf));
+
+ /* large positive */
+ GPR_ASSERT(19 == gpr_int64toa(9223372036854775807LL, buf));
+ GPR_ASSERT(0 == strcmp("9223372036854775807", buf));
+
+ /* large negative */
+ GPR_ASSERT(20 == gpr_int64toa(-9223372036854775808LL, buf));
+ GPR_ASSERT(0 == strcmp("-9223372036854775808", buf));
+}
+
int main(int argc, char **argv) {
grpc_test_init(argc, argv);
test_strdup();
@@ -296,5 +343,7 @@ int main(int argc, char **argv) {
test_strjoin();
test_strjoin_sep();
test_strsplit();
+ test_ltoa();
+ test_int64toa();
return 0;
}