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