aboutsummaryrefslogtreecommitdiff
path: root/lib/io/test/stream_splice.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-06-12 21:21:40 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2023-06-15 13:38:25 +0200
commitba99ef34e7b073c03519ef74f017091de6c9bee8 (patch)
tree8c134f72990200550ac96e46bd47d4cc0ba85810 /lib/io/test/stream_splice.c
parente811851deba9c45f3d9b3c5b4ad5eaa7945382d5 (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.c98
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;
-}