#define _GNU_SOURCE
#include "test-common.h"
#include <fcntl.h>
#include <unistd.h>
int test_close(const char *base_path) {
char path[512];
char buf[256];
int fd;
ssize_t n;
snprintf(path, sizeof(path), "%s/test.txt", base_path);
fd = open(path, O_RDONLY);
TEST_ASSERT_ERRNO(fd >= 0, "open should succeed");
int result = close(fd);
TEST_ASSERT_ERRNO(result == 0, "close should succeed");
n = read(fd, buf, sizeof(buf));
TEST_ASSERT(n < 0 && errno == EBADF, "read after close should fail with EBADF");
result = close(fd);
TEST_ASSERT(result < 0 && errno == EBADF, "close on already closed fd should fail with EBADF");
result = close(9999);
TEST_ASSERT(result < 0 && errno == EBADF, "close on invalid fd should fail with EBADF");
return 0;
}