xref: /freebsd/lib/libutil++/tests/up_test.cc (revision b3127a2dc25ac63cae8e33e6f3dbd3580644fe52)
1*b3127a2dSJohn Baldwin /*-
2*b3127a2dSJohn Baldwin  * SPDX-License-Identifier: BSD-2-Clause
3*b3127a2dSJohn Baldwin  *
4*b3127a2dSJohn Baldwin  * Copyright (c) 2025 Chelsio Communications, Inc.
5*b3127a2dSJohn Baldwin  * Written by: John Baldwin <jhb@FreeBSD.org>
6*b3127a2dSJohn Baldwin  */
7*b3127a2dSJohn Baldwin 
8*b3127a2dSJohn Baldwin #include <atf-c++.hpp>
9*b3127a2dSJohn Baldwin #include <libutil.h>
10*b3127a2dSJohn Baldwin 
11*b3127a2dSJohn Baldwin #include <libutil++.hh>
12*b3127a2dSJohn Baldwin 
13*b3127a2dSJohn Baldwin ATF_TEST_CASE_WITHOUT_HEAD(FILE_up);
ATF_TEST_CASE_BODY(FILE_up)14*b3127a2dSJohn Baldwin ATF_TEST_CASE_BODY(FILE_up)
15*b3127a2dSJohn Baldwin {
16*b3127a2dSJohn Baldwin 	FILE *fp = fopen("/dev/null", "r");
17*b3127a2dSJohn Baldwin 	ATF_REQUIRE(fp != NULL);
18*b3127a2dSJohn Baldwin 	ATF_REQUIRE(fileno(fp) != -1);
19*b3127a2dSJohn Baldwin 
20*b3127a2dSJohn Baldwin 	freebsd::FILE_up f(fp);
21*b3127a2dSJohn Baldwin 	ATF_REQUIRE_EQ(fileno(fp), fileno(f.get()));
22*b3127a2dSJohn Baldwin 
23*b3127a2dSJohn Baldwin 	f.reset();
24*b3127a2dSJohn Baldwin 	ATF_REQUIRE_EQ(f.get(), nullptr);
25*b3127a2dSJohn Baldwin 
26*b3127a2dSJohn Baldwin 	ATF_REQUIRE_EQ(-1, fileno(fp));
27*b3127a2dSJohn Baldwin 	ATF_REQUIRE_EQ(EBADF, errno);
28*b3127a2dSJohn Baldwin }
29*b3127a2dSJohn Baldwin 
ATF_INIT_TEST_CASES(tcs)30*b3127a2dSJohn Baldwin ATF_INIT_TEST_CASES(tcs)
31*b3127a2dSJohn Baldwin {
32*b3127a2dSJohn Baldwin 	ATF_ADD_TEST_CASE(tcs, FILE_up);
33*b3127a2dSJohn Baldwin }
34