Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/lib/libc/tests/stdbit/stdbit-test-framework.c
96309 views
1
/*
2
* Copyright (c) 2025 Robert Clausecker <[email protected]>
3
*
4
* SPDX-License-Identifier: BSD-2-Clause
5
*/
6
7
/*
8
* Test framework for stdbit functions.
9
* Requires the following macros to be defined:
10
*
11
* FUNCSTEM -- name of the function without type suffix
12
* MKREFFUNC(name, type) -- macro to generate a reference
13
* implementation of the function as a static function
14
* named name with give argument type.
15
*/
16
17
#include <sys/cdefs.h>
18
#include <atf-c.h>
19
#include <limits.h>
20
#include <stdbit.h>
21
#include <stdint.h>
22
23
#define ATF_TC_WITHOUT_HEAD1(stem, suffix) ATF_TC_WITHOUT_HEAD2(__CONCAT(stem, suffix))
24
#define ATF_TC_WITHOUT_HEAD2(case) ATF_TC_WITHOUT_HEAD(case)
25
#define ATF_TC_BODY1(stem, suffix, tc) ATF_TC_BODY2(__CONCAT(stem, suffix), tc)
26
#define ATF_TC_BODY2(case, tc) ATF_TC_BODY(case, tc)
27
28
#define SUFFIX _uc
29
#define TYPE unsigned char
30
#define TYPE_WIDTH UCHAR_WIDTH
31
#include "stdbit-test-kernel.c"
32
#undef TYPE_WIDTH
33
#undef TYPE
34
#undef SUFFIX
35
36
#define SUFFIX _us
37
#define TYPE unsigned short
38
#define TYPE_WIDTH USHRT_WIDTH
39
#include "stdbit-test-kernel.c"
40
#undef TYPE_WIDTH
41
#undef TYPE
42
#undef SUFFIX
43
44
#define SUFFIX _ui
45
#define TYPE unsigned int
46
#define TYPE_WIDTH UINT_WIDTH
47
#include "stdbit-test-kernel.c"
48
#undef TYPE_WIDTH
49
#undef TYPE
50
#undef SUFFIX
51
52
#define SUFFIX _ul
53
#define TYPE unsigned long
54
#define TYPE_WIDTH ULONG_WIDTH
55
#include "stdbit-test-kernel.c"
56
#undef TYPE_WIDTH
57
#undef TYPE
58
#undef SUFFIX
59
60
#define SUFFIX _ull
61
#define TYPE unsigned long long
62
#define TYPE_WIDTH ULLONG_WIDTH
63
#include "stdbit-test-kernel.c"
64
#undef TYPE_WIDTH
65
#undef TYPE
66
#undef SUFFIX
67
68
#define ADD_CASE(stem, suffix) ADD_CASE1(__CONCAT(stem, suffix))
69
#define ADD_CASE1(case) ATF_TP_ADD_TC(tp, case)
70
71
ATF_TP_ADD_TCS(tp)
72
{
73
ADD_CASE(FUNCSTEM, _uc);
74
ADD_CASE(FUNCSTEM, _us);
75
ADD_CASE(FUNCSTEM, _ui);
76
ADD_CASE(FUNCSTEM, _ul);
77
ADD_CASE(FUNCSTEM, _ull);
78
79
return (atf_no_error());
80
}
81
82