]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-io-util.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 Copyright 2010 Lennart Poettering
10 #include "alloc-util.h"
15 static void test_sparse_write_one(int fd
, const char *buffer
, size_t n
) {
18 assert_se(lseek(fd
, 0, SEEK_SET
) == 0);
19 assert_se(ftruncate(fd
, 0) >= 0);
20 assert_se(sparse_write(fd
, buffer
, n
, 4) == (ssize_t
) n
);
22 assert_se(lseek(fd
, 0, SEEK_CUR
) == (off_t
) n
);
23 assert_se(ftruncate(fd
, n
) >= 0);
25 assert_se(lseek(fd
, 0, SEEK_SET
) == 0);
26 assert_se(read(fd
, check
, n
) == (ssize_t
) n
);
28 assert_se(memcmp(buffer
, check
, n
) == 0);
31 static void test_sparse_write(void) {
32 const char test_a
[] = "test";
33 const char test_b
[] = "\0\0\0\0test\0\0\0\0";
34 const char test_c
[] = "\0\0test\0\0\0\0";
35 const char test_d
[] = "\0\0test\0\0\0test\0\0\0\0test\0\0\0\0\0test\0\0\0test\0\0\0\0test\0\0\0\0\0\0\0\0";
36 const char test_e
[] = "test\0\0\0\0test";
37 _cleanup_close_
int fd
= -1;
38 char fn
[] = "/tmp/sparseXXXXXX";
40 fd
= mkostemp(fn
, O_CLOEXEC
);
44 test_sparse_write_one(fd
, test_a
, sizeof(test_a
));
45 test_sparse_write_one(fd
, test_b
, sizeof(test_b
));
46 test_sparse_write_one(fd
, test_c
, sizeof(test_c
));
47 test_sparse_write_one(fd
, test_d
, sizeof(test_d
));
48 test_sparse_write_one(fd
, test_e
, sizeof(test_e
));