root/tools/perf/tests/is_printable_array.c
// SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h>
#include <linux/kernel.h>
#include "tests.h"
#include "debug.h"
#include "print_binary.h"

static int test__is_printable_array(struct test_suite *test __maybe_unused, int subtest __maybe_unused)
{
        char buf1[] = { 'k', 'r', 4, 'v', 'a', 0 };
        char buf2[] = { 'k', 'r', 'a', 'v', 4, 0 };
        struct {
                char            *buf;
                unsigned int     len;
                int              ret;
        } t[] = {
                { (char *) "krava",     sizeof("krava"),        1 },
                { (char *) "krava",     sizeof("krava") - 1,    0 },
                { (char *) "",          sizeof(""),             1 },
                { (char *) "",          0,                      0 },
                { NULL,                 0,                      0 },
                { buf1,                 sizeof(buf1),           0 },
                { buf2,                 sizeof(buf2),           0 },
        };
        unsigned int i;

        for (i = 0; i < ARRAY_SIZE(t); i++) {
                int ret;

                ret = is_printable_array((char *) t[i].buf, t[i].len);
                if (ret != t[i].ret) {
                        pr_err("failed: test %u\n", i);
                        return TEST_FAIL;
                }
        }

        return TEST_OK;
}

DEFINE_SUITE("is_printable_array", is_printable_array);