Re: [PATCH v5 9/9] t/unit-tests: convert ctype tests to use clar
Hi Patrick
On 16/08/2024 08:05, Patrick Steinhardt wrote:
Show 15 quoted lines
> #define TEST_CHAR_CLASS(class, string) do { \
> size_t len = ARRAY_SIZE(string) - 1 + \
> BUILD_ASSERT_OR_ZERO(ARRAY_SIZE(string) > 0) + \
> BUILD_ASSERT_OR_ZERO(sizeof(string[0]) == sizeof(char)); \
> - int skip = test__run_begin(); \
> - if (!skip) { \
> - for (int i = 0; i < 256; i++) { \
> - if (!check_int(class(i), ==, !!memchr(string, i, len)))\
> - test_msg(" i: 0x%02x", i); \
> - } \
> - check(!class(EOF)); \
> - } \
> - test__run_end(!skip, TEST_LOCATION(), #class " works"); \
> + for (int i = 0; i < 256; i++) \
> + cl_assert_equal_i(class(i), !!memchr(string, i, len)); \If this fails how are we supposed to know which character it was checking?
Thanks
Phillip
Show 80 quoted lines
> + cl_assert(!class(EOF)); \
> } while (0)
>
> #define DIGIT "0123456789"
> @@ -33,21 +27,72 @@
> "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" \
> "\x7f"
>
> -int cmd_main(int argc, const char **argv) {
> +void test_ctype__isspace(void)
> +{
> TEST_CHAR_CLASS(isspace, " \n\r\t");
> +}
> +
> +void test_ctype__isdigit(void)
> +{
> TEST_CHAR_CLASS(isdigit, DIGIT);
> +}
> +
> +void test_ctype__isalpha(void)
> +{
> TEST_CHAR_CLASS(isalpha, LOWER UPPER);
> +}
> +
> +void test_ctype__isalnum(void)
> +{
> TEST_CHAR_CLASS(isalnum, LOWER UPPER DIGIT);
> +}
> +
> +void test_ctype__is_glob_special(void)
> +{
> TEST_CHAR_CLASS(is_glob_special, "*?[\\");
> +}
> +
> +void test_ctype__is_regex_special(void)
> +{
> TEST_CHAR_CLASS(is_regex_special, "$()*+.?[\\^{|");
> +}
> +
> +void test_ctype__is_pathspec_magic(void)
> +{
> TEST_CHAR_CLASS(is_pathspec_magic, "!\"#%&',-/:;<=>@_`~");
> +}
> +
> +void test_ctype__isascii(void)
> +{
> TEST_CHAR_CLASS(isascii, ASCII);
> +}
> +
> +void test_ctype__islower(void)
> +{
> TEST_CHAR_CLASS(islower, LOWER);
> +}
> +
> +void test_ctype__isupper(void)
> +{
> TEST_CHAR_CLASS(isupper, UPPER);
> +}
> +
> +void test_ctype__iscntrl(void)
> +{
> TEST_CHAR_CLASS(iscntrl, CNTRL);
> +}
> +
> +void test_ctype__ispunct(void)
> +{
> TEST_CHAR_CLASS(ispunct, PUNCT);
> +}
> +
> +void test_ctype__isxdigit(void)
> +{
> TEST_CHAR_CLASS(isxdigit, DIGIT "abcdefABCDEF");
> - TEST_CHAR_CLASS(isprint, LOWER UPPER DIGIT PUNCT " ");
> +}
>
> - return test_done();
> +void test_ctype__isprint(void)
> +{
> + TEST_CHAR_CLASS(isprint, LOWER UPPER DIGIT PUNCT " ");
> }