diff options
Diffstat (limited to 'internal_tests.c')
-rw-r--r-- | internal_tests.c | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/internal_tests.c b/internal_tests.c index 836b012..4df068a 100644 --- a/internal_tests.c +++ b/internal_tests.c @@ -6,17 +6,57 @@ #include "memcached.h" -int main(int argc, char **argv) { - unsigned long long ull; - assert(safe_strtoull("123", &ull)); - assert(ull == 123); +static void test_safe_strtoull(void); +static void test_safe_strtoll(void); + +static void test_safe_strtoull() { + unsigned long long val; + assert(safe_strtoull("123", &val)); + assert(val == 123); + assert(safe_strtoull("+123", &val)); + assert(val == 123); + assert(!safe_strtoull("", &val)); // empty + assert(!safe_strtoull("123BOGUS", &val)); // non-numeric + assert(!safe_strtoull("92837498237498237498029383", &val)); // out of range + + // extremes: + assert(safe_strtoull("18446744073709551615", &val)); // 2**64 - 1 + assert(val == 18446744073709551615ULL); + assert(!safe_strtoull("18446744073709551616", &val)); // 2**64 + assert(!safe_strtoull("-1", &val)); // negative +} - // Empty: - assert(!safe_strtoull("", &ull)); +static void test_safe_strtoll() { + long long val; + assert(safe_strtoll("123", &val)); + assert(val == 123); + assert(safe_strtoll("+123", &val)); + assert(val == 123); + assert(safe_strtoll("-123", &val)); + assert(val == -123); + assert(!safe_strtoll("", &val)); // empty + assert(!safe_strtoll("123BOGUS", &val)); // non-numeric + assert(!safe_strtoll("92837498237498237498029383", &val)); // out of range - // Bogus: - assert(!safe_strtoull("123BOGUS", &ull)); + // extremes: + assert(!safe_strtoll("18446744073709551615", &val)); // 2**64 - 1 + assert(safe_strtoll("9223372036854775807", &val)); // 2**63 - 1 + assert(val == 9223372036854775807LL); + /* + assert(safe_strtoll("-9223372036854775808", &val)); // -2**63 + assert(val == -9223372036854775808LL); + */ + assert(!safe_strtoll("-9223372036854775809", &val)); // -2**63 - 1 + // We'll allow space to terminate the string. And leading space. + assert(safe_strtoll(" 123 foo", &val)); + assert(val == 123); + +} + +int main(int argc, char **argv) { + test_safe_strtoull(); + test_safe_strtoll(); printf("OK.\n"); return 0; } |