xref: /freebsd/tests/include/stdckdint_test.c (revision 4fbb9c43aa44d9145151bb5f77d302ba01fb7551)
1*4fbb9c43SDag-Erling Smørgrav /*-
2*4fbb9c43SDag-Erling Smørgrav  * Copyright (c) 2023 Dag-Erling Smørgrav
3*4fbb9c43SDag-Erling Smørgrav  *
4*4fbb9c43SDag-Erling Smørgrav  * SPDX-License-Identifier: BSD-2-Clause
5*4fbb9c43SDag-Erling Smørgrav  */
6*4fbb9c43SDag-Erling Smørgrav 
7*4fbb9c43SDag-Erling Smørgrav #include <limits.h>
8*4fbb9c43SDag-Erling Smørgrav #include <stdckdint.h>
9*4fbb9c43SDag-Erling Smørgrav 
10*4fbb9c43SDag-Erling Smørgrav #include <atf-c.h>
11*4fbb9c43SDag-Erling Smørgrav 
12*4fbb9c43SDag-Erling Smørgrav ATF_TC_WITHOUT_HEAD(ckd_add);
ATF_TC_BODY(ckd_add,tc)13*4fbb9c43SDag-Erling Smørgrav ATF_TC_BODY(ckd_add, tc)
14*4fbb9c43SDag-Erling Smørgrav {
15*4fbb9c43SDag-Erling Smørgrav 	int result;
16*4fbb9c43SDag-Erling Smørgrav 
17*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK(!ckd_add(&result, INT_MAX, 0));
18*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK_EQ(INT_MAX, result);
19*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK(ckd_add(&result, INT_MAX, 1));
20*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK_EQ(INT_MIN, result);
21*4fbb9c43SDag-Erling Smørgrav }
22*4fbb9c43SDag-Erling Smørgrav 
23*4fbb9c43SDag-Erling Smørgrav ATF_TC_WITHOUT_HEAD(ckd_sub);
ATF_TC_BODY(ckd_sub,tc)24*4fbb9c43SDag-Erling Smørgrav ATF_TC_BODY(ckd_sub, tc)
25*4fbb9c43SDag-Erling Smørgrav {
26*4fbb9c43SDag-Erling Smørgrav 	int result;
27*4fbb9c43SDag-Erling Smørgrav 
28*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK(!ckd_sub(&result, INT_MIN, 0));
29*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK_EQ(INT_MIN, result);
30*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK(ckd_sub(&result, INT_MIN, 1));
31*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK_EQ(INT_MAX, result);
32*4fbb9c43SDag-Erling Smørgrav }
33*4fbb9c43SDag-Erling Smørgrav 
34*4fbb9c43SDag-Erling Smørgrav ATF_TC_WITHOUT_HEAD(ckd_mul);
ATF_TC_BODY(ckd_mul,tc)35*4fbb9c43SDag-Erling Smørgrav ATF_TC_BODY(ckd_mul, tc)
36*4fbb9c43SDag-Erling Smørgrav {
37*4fbb9c43SDag-Erling Smørgrav 	int result;
38*4fbb9c43SDag-Erling Smørgrav 
39*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK(!ckd_mul(&result, INT_MAX / 2, 2));
40*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK_EQ(INT_MAX - 1, result);
41*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK(ckd_mul(&result, INT_MAX / 2 + 1, 2));
42*4fbb9c43SDag-Erling Smørgrav 	ATF_CHECK_EQ(INT_MIN, result);
43*4fbb9c43SDag-Erling Smørgrav }
44*4fbb9c43SDag-Erling Smørgrav 
ATF_TP_ADD_TCS(tp)45*4fbb9c43SDag-Erling Smørgrav ATF_TP_ADD_TCS(tp)
46*4fbb9c43SDag-Erling Smørgrav {
47*4fbb9c43SDag-Erling Smørgrav 	ATF_TP_ADD_TC(tp, ckd_add);
48*4fbb9c43SDag-Erling Smørgrav 	ATF_TP_ADD_TC(tp, ckd_sub);
49*4fbb9c43SDag-Erling Smørgrav 	ATF_TP_ADD_TC(tp, ckd_mul);
50*4fbb9c43SDag-Erling Smørgrav 	return (atf_no_error());
51*4fbb9c43SDag-Erling Smørgrav 
52*4fbb9c43SDag-Erling Smørgrav }
53