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); 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 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); 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 48 ATF_INIT_TEST_CASES(tcs) 49 { 50 ATF_ADD_TEST_CASE(tcs, basic); 51 ATF_ADD_TEST_CASE(tcs, va_list); 52 } 53