diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-06-12 21:21:40 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-06-15 13:38:25 +0200 |
commit | ba99ef34e7b073c03519ef74f017091de6c9bee8 (patch) | |
tree | 8c134f72990200550ac96e46bd47d4cc0ba85810 /lib/io/test/stream_splice.c | |
parent | e811851deba9c45f3d9b3c5b4ad5eaa7945382d5 (diff) |
Move sqfs_istream_t & sqfs_ostream_t into libsquashfs
For now, only the interfaces and helper functions are moved, the
concrete implementations remain in libio.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/io/test/stream_splice.c')
-rw-r--r-- | lib/io/test/stream_splice.c | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/lib/io/test/stream_splice.c b/lib/io/test/stream_splice.c deleted file mode 100644 index a9edd76..0000000 --- a/lib/io/test/stream_splice.c +++ /dev/null @@ -1,98 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * stream_splice.c - * - * Copyright (C) 2023 David Oberhollenzer <goliath@infraroot.at> - */ -#include "config.h" - -#include "io/istream.h" -#include "io/ostream.h" -#include "io/mem.h" -#include "util/test.h" - -static const sqfs_u64 end0 = 449; /* region 1: filled with 'A' */ -static const sqfs_u64 end1 = 521; /* region 2: filled with 'B' */ -static const sqfs_u64 end2 = 941; /* region 3: filled with 'C' */ - -static sqfs_u8 rd_buffer[941]; - -static sqfs_u8 byte_at_offset(sqfs_u64 off) -{ - if (off < end0) - return 'A'; - if (off < end1) - return 'B'; - return 'C'; -} - -static void init_rd_buffer(void) -{ - for (size_t i = 0; i < end2; ++i) - rd_buffer[i] = byte_at_offset(i); -} - -/*****************************************************************************/ - -static int out_append(sqfs_ostream_t *strm, const void *data, size_t size); - -static sqfs_u64 out_offset = 0; - -static sqfs_ostream_t out = { - { 1, NULL, NULL }, - out_append, - NULL, - NULL, - NULL, -}; - -static int out_append(sqfs_ostream_t *strm, const void *data, size_t size) -{ - const sqfs_u8 *ptr = data; - - TEST_ASSERT(strm == &out); - TEST_ASSERT(size > 0); - - while (size--) { - sqfs_u8 x = *(ptr++); - sqfs_u8 y = byte_at_offset(out_offset++); - - TEST_EQUAL_UI(x, y); - TEST_ASSERT(out_offset <= end2); - } - - return 0; -} - -/*****************************************************************************/ - -int main(int argc, char **argv) -{ - sqfs_u64 total = 0; - sqfs_istream_t *in; - sqfs_s32 ret; - (void)argc; (void)argv; - - init_rd_buffer(); - in = istream_memory_create("memory_in", 109, - rd_buffer, sizeof(rd_buffer)); - TEST_NOT_NULL(in); - - for (;;) { - ret = istream_splice(in, &out, 211); - TEST_ASSERT(ret >= 0); - - if (ret == 0) - break; - - total += ret; - TEST_ASSERT(total <= end2); - TEST_ASSERT(out_offset <= end2); - TEST_EQUAL_UI(total, out_offset); - } - - TEST_EQUAL_UI(total, end2); - TEST_EQUAL_UI(out_offset, end2); - sqfs_drop(in); - return EXIT_SUCCESS; -} |