Path: blob/main/lib/libc/tests/stdbit/stdbit-test-framework.c
96309 views
/*1* Copyright (c) 2025 Robert Clausecker <[email protected]>2*3* SPDX-License-Identifier: BSD-2-Clause4*/56/*7* Test framework for stdbit functions.8* Requires the following macros to be defined:9*10* FUNCSTEM -- name of the function without type suffix11* MKREFFUNC(name, type) -- macro to generate a reference12* implementation of the function as a static function13* named name with give argument type.14*/1516#include <sys/cdefs.h>17#include <atf-c.h>18#include <limits.h>19#include <stdbit.h>20#include <stdint.h>2122#define ATF_TC_WITHOUT_HEAD1(stem, suffix) ATF_TC_WITHOUT_HEAD2(__CONCAT(stem, suffix))23#define ATF_TC_WITHOUT_HEAD2(case) ATF_TC_WITHOUT_HEAD(case)24#define ATF_TC_BODY1(stem, suffix, tc) ATF_TC_BODY2(__CONCAT(stem, suffix), tc)25#define ATF_TC_BODY2(case, tc) ATF_TC_BODY(case, tc)2627#define SUFFIX _uc28#define TYPE unsigned char29#define TYPE_WIDTH UCHAR_WIDTH30#include "stdbit-test-kernel.c"31#undef TYPE_WIDTH32#undef TYPE33#undef SUFFIX3435#define SUFFIX _us36#define TYPE unsigned short37#define TYPE_WIDTH USHRT_WIDTH38#include "stdbit-test-kernel.c"39#undef TYPE_WIDTH40#undef TYPE41#undef SUFFIX4243#define SUFFIX _ui44#define TYPE unsigned int45#define TYPE_WIDTH UINT_WIDTH46#include "stdbit-test-kernel.c"47#undef TYPE_WIDTH48#undef TYPE49#undef SUFFIX5051#define SUFFIX _ul52#define TYPE unsigned long53#define TYPE_WIDTH ULONG_WIDTH54#include "stdbit-test-kernel.c"55#undef TYPE_WIDTH56#undef TYPE57#undef SUFFIX5859#define SUFFIX _ull60#define TYPE unsigned long long61#define TYPE_WIDTH ULLONG_WIDTH62#include "stdbit-test-kernel.c"63#undef TYPE_WIDTH64#undef TYPE65#undef SUFFIX6667#define ADD_CASE(stem, suffix) ADD_CASE1(__CONCAT(stem, suffix))68#define ADD_CASE1(case) ATF_TP_ADD_TC(tp, case)6970ATF_TP_ADD_TCS(tp)71{72ADD_CASE(FUNCSTEM, _uc);73ADD_CASE(FUNCSTEM, _us);74ADD_CASE(FUNCSTEM, _ui);75ADD_CASE(FUNCSTEM, _ul);76ADD_CASE(FUNCSTEM, _ull);7778return (atf_no_error());79}808182