1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2025 Chelsio Communications, Inc.
* Written by: John Baldwin <jhb@FreeBSD.org>
*/
#include <atf-c++.hpp>
#include <stdarg.h>
#include <stdio.h>
#include <libutil++.hh>
ATF_TEST_CASE_WITHOUT_HEAD(basic);
ATF_TEST_CASE_BODY(basic)
{
ATF_REQUIRE_EQ("foo", freebsd::stringf("foo"));
ATF_REQUIRE_EQ("bar", freebsd::stringf("%s", "bar"));
ATF_REQUIRE_EQ("42", freebsd::stringf("%u", 42));
ATF_REQUIRE_EQ("0xdeadbeef", freebsd::stringf("%#x", 0xdeadbeef));
ATF_REQUIRE_EQ("", freebsd::stringf(""));
ATF_REQUIRE_EQ("this is a test", freebsd::stringf("this %s test",
"is a"));
}
static std::string
stringv(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
std::string str = freebsd::stringf(fmt, ap);
va_end(ap);
return (str);
}
ATF_TEST_CASE_WITHOUT_HEAD(va_list);
ATF_TEST_CASE_BODY(va_list)
{
ATF_REQUIRE_EQ("foo", stringv("foo"));
ATF_REQUIRE_EQ("bar", stringv("%s", "bar"));
ATF_REQUIRE_EQ("42", stringv("%u", 42));
ATF_REQUIRE_EQ("0xdeadbeef", stringv("%#x", 0xdeadbeef));
ATF_REQUIRE_EQ("", stringv(""));
ATF_REQUIRE_EQ("this is a test", stringv("this %s test", "is a"));
}
ATF_INIT_TEST_CASES(tcs)
{
ATF_ADD_TEST_CASE(tcs, basic);
ATF_ADD_TEST_CASE(tcs, va_list);
}
|