tests/unit/test_atoi_strtou_noneg.c: Test strtou[l]l_noneg()
Reviewed-by: Iker Pedrosa <ipedrosa@redhat.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
committed by
Serge Hallyn
parent
f14670ee1a
commit
0138819b2a
@@ -5,6 +5,7 @@ TESTS = $(check_PROGRAMS)
|
||||
|
||||
check_PROGRAMS = \
|
||||
test_adds \
|
||||
test_atoi_strtou_noneg \
|
||||
test_chkname \
|
||||
test_sprintf \
|
||||
test_strncpy \
|
||||
@@ -32,6 +33,19 @@ test_adds_LDADD = \
|
||||
$(CMOCKA_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
test_atoi_strtou_noneg_SOURCES = \
|
||||
../../lib/atoi/strtou_noneg.c \
|
||||
test_atoi_strtou_noneg.c \
|
||||
$(NULL)
|
||||
test_atoi_strtou_noneg_CFLAGS = \
|
||||
$(AM_FLAGS) \
|
||||
$(NULL)
|
||||
test_atoi_strtou_noneg_LDFLAGS = \
|
||||
$(NULL)
|
||||
test_atoi_strtou_noneg_LDADD = \
|
||||
$(CMOCKA_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
test_chkname_SOURCES = \
|
||||
../../lib/chkname.c \
|
||||
test_chkname.c \
|
||||
|
||||
76
tests/unit/test_atoi_strtou_noneg.c
Normal file
76
tests/unit/test_atoi_strtou_noneg.c
Normal file
@@ -0,0 +1,76 @@
|
||||
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <stdarg.h> // Required by <cmocka.h>
|
||||
#include <stddef.h> // Required by <cmocka.h>
|
||||
#include <setjmp.h> // Required by <cmocka.h>
|
||||
#include <stdint.h> // Required by <cmocka.h>
|
||||
#include <cmocka.h>
|
||||
|
||||
#include "atoi/strtou_noneg.h"
|
||||
|
||||
|
||||
static void test_strtoul_noneg(void **state);
|
||||
static void test_strtoull_noneg(void **state);
|
||||
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
const struct CMUnitTest tests[] = {
|
||||
cmocka_unit_test(test_strtoul_noneg),
|
||||
cmocka_unit_test(test_strtoull_noneg),
|
||||
};
|
||||
|
||||
return cmocka_run_group_tests(tests, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
test_strtoul_noneg(void **state)
|
||||
{
|
||||
errno = 0;
|
||||
assert_true(strtoul_noneg("42", NULL, 0) == 42);
|
||||
assert_true(errno == 0);
|
||||
|
||||
assert_true(strtoul_noneg("-1", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
errno = 0;
|
||||
assert_true(strtoul_noneg("-3", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
errno = 0;
|
||||
assert_true(strtoul_noneg("-0xFFFFFFFFFFFFFFFF", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
|
||||
errno = 0;
|
||||
assert_true(strtoul_noneg("-0x10000000000000000", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
test_strtoull_noneg(void **state)
|
||||
{
|
||||
errno = 0;
|
||||
assert_true(strtoull_noneg("42", NULL, 0) == 42);
|
||||
assert_true(errno == 0);
|
||||
|
||||
assert_true(strtoull_noneg("-1", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
errno = 0;
|
||||
assert_true(strtoull_noneg("-3", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
errno = 0;
|
||||
assert_true(strtoull_noneg("-0xFFFFFFFFFFFFFFFF", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
|
||||
errno = 0;
|
||||
assert_true(strtoull_noneg("-0x10000000000000000", NULL, 0) == 0);
|
||||
assert_true(errno == ERANGE);
|
||||
}
|
||||
Reference in New Issue
Block a user