1.1 --- a/test/utils_tests.c Mon Dec 30 09:54:10 2019 +0100 1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 1.3 @@ -1,187 +0,0 @@ 1.4 -/* 1.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 1.6 - * 1.7 - * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved. 1.8 - * 1.9 - * Redistribution and use in source and binary forms, with or without 1.10 - * modification, are permitted provided that the following conditions are met: 1.11 - * 1.12 - * 1. Redistributions of source code must retain the above copyright 1.13 - * notice, this list of conditions and the following disclaimer. 1.14 - * 1.15 - * 2. Redistributions in binary form must reproduce the above copyright 1.16 - * notice, this list of conditions and the following disclaimer in the 1.17 - * documentation and/or other materials provided with the distribution. 1.18 - * 1.19 - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1.20 - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1.21 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1.22 - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 1.23 - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1.24 - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1.25 - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 1.26 - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1.27 - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 1.28 - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1.29 - * POSSIBILITY OF SUCH DAMAGE. 1.30 - */ 1.31 - 1.32 -#include "utils_tests.h" 1.33 -#include <ucx/buffer.h> 1.34 - 1.35 -UCX_TEST(test_ucx_fprintf) { 1.36 - UcxBuffer *b1 = ucx_buffer_new(NULL, 32, UCX_BUFFER_AUTOEXTEND); 1.37 - UcxBuffer *b2 = ucx_buffer_new(NULL, 4096, UCX_BUFFER_AUTOEXTEND); 1.38 - 1.39 - char *teststr1 = (char*)calloc(1, 1024); 1.40 - char *teststr2 = (char*)calloc(1, 1024); 1.41 - memset(teststr1, 'a', 1023); 1.42 - memset(teststr2, 'b', 1023); 1.43 - 1.44 - UCX_TEST_BEGIN 1.45 - 1.46 - ucx_fprintf(b1, (write_func)ucx_buffer_write, "Hello %s", "World"); 1.47 - UCX_TEST_ASSERT(!strcmp(b1->space, "Hello World"), "wrong content in b1"); 1.48 - ucx_fprintf(b1, (write_func)ucx_buffer_write, "\nend.\n"); 1.49 - UCX_TEST_ASSERT(!strcmp(b1->space, "Hello World\nend.\n"), 1.50 - "wrong content in b1 after second fprintf"); 1.51 - 1.52 - ucx_bprintf(b2, "%s%s", teststr1, teststr2); 1.53 - UCX_TEST_ASSERT(b2->pos == 2046, "wrong length"); 1.54 - UCX_TEST_ASSERT(!memcmp(b2->space, teststr1, 1023), 1.55 - "wrong first half in b2"); 1.56 - UCX_TEST_ASSERT(!memcmp(b2->space+1023, teststr2, 1023), 1.57 - "wrong second half in b2"); 1.58 - 1.59 - UCX_TEST_END 1.60 - 1.61 - ucx_buffer_free(b1); 1.62 - ucx_buffer_free(b2); 1.63 - free(teststr1); 1.64 - free(teststr2); 1.65 -} 1.66 - 1.67 -UCX_TEST(test_ucx_asprintf) { 1.68 - char *teststr1 = (char*)calloc(1, 1024); 1.69 - char *teststr2 = (char*)calloc(1, 1024); 1.70 - memset(teststr1, 'a', 1023); 1.71 - memset(teststr2, 'b', 1023); 1.72 - UcxAllocator *a = ucx_default_allocator(); 1.73 - 1.74 - UCX_TEST_BEGIN 1.75 - 1.76 - sstr_t s1 = ucx_asprintf(a, "int: %d\nHello %s!", 123, "World"); 1.77 - UCX_TEST_ASSERT(s1.ptr, "s1.ptr is NULL"); 1.78 - UCX_TEST_ASSERT(s1.length == 21, "wrong length"); 1.79 - UCX_TEST_ASSERT(!sstrcmp(s1, S("int: 123\nHello World!")), "wrong content"); 1.80 - free(s1.ptr); 1.81 - 1.82 - sstr_t s2 = ucx_asprintf(a, "%s%s", teststr1, teststr2); 1.83 - UCX_TEST_ASSERT(s2.ptr, "s2.ptr is NULL"); 1.84 - UCX_TEST_ASSERT(s2.length == 2046, "wrong length"); 1.85 - UCX_TEST_ASSERT(!memcmp(s2.ptr, teststr1, 1023), 1.86 - "wrong first half in s2"); 1.87 - UCX_TEST_ASSERT(!memcmp(s2.ptr+1023, teststr2, 1023), 1.88 - "wrong second half in s2"); 1.89 - free(s2.ptr); 1.90 - 1.91 - UCX_TEST_END 1.92 - 1.93 - free(teststr1); 1.94 - free(teststr2); 1.95 -} 1.96 - 1.97 -UCX_TEST(test_ucx_sprintf) { 1.98 - UCX_TEST_BEGIN 1.99 - 1.100 - sstr_t s1 = ucx_sprintf("int: %d\nHello %s!", 123, "World"); 1.101 - UCX_TEST_ASSERT(s1.ptr, "s1.ptr is NULL"); 1.102 - UCX_TEST_ASSERT(s1.length == 21, "wrong length"); 1.103 - UCX_TEST_ASSERT(!sstrcmp(s1, S("int: 123\nHello World!")), "wrong content"); 1.104 - free(s1.ptr); 1.105 - 1.106 - sstr_t s2 = ucx_sprintf("Nothing to format!"); 1.107 - UCX_TEST_ASSERT(s2.ptr, "s2.ptr is NULL"); 1.108 - UCX_TEST_ASSERT(s2.length == 18, "wrong length"); 1.109 - UCX_TEST_ASSERT(!memcmp(s2.ptr, "Nothing to format!", 18), 1.110 - "wrong string without format arguments"); 1.111 - free(s2.ptr); 1.112 - 1.113 - UCX_TEST_END 1.114 -} 1.115 - 1.116 -UCX_TEST(test_ucx_bprintf) { 1.117 - UcxBuffer *b = ucx_buffer_new(NULL, 64, UCX_BUFFER_DEFAULT); 1.118 - 1.119 - UCX_TEST_BEGIN 1.120 - 1.121 - ucx_bprintf(b, "int: %d\nHello %s!", 123, "World"); 1.122 - UCX_TEST_ASSERT(b->size == 21, "wrong length"); 1.123 - UCX_TEST_ASSERT(!memcmp(b->space, "int: 123\nHello World!", 21), 1.124 - "wrong content"); 1.125 - 1.126 - ucx_buffer_clear(b); 1.127 - 1.128 - ucx_bprintf(b, "Nothing to format!"); 1.129 - UCX_TEST_ASSERT(b->size == 18, "wrong length"); 1.130 - UCX_TEST_ASSERT(!memcmp(b->space, "Nothing to format!", 18), 1.131 - "wrong string without format arguments"); 1.132 - 1.133 - UCX_TEST_END 1.134 - 1.135 - ucx_buffer_free(b); 1.136 -} 1.137 - 1.138 -UCX_TEST(test_ucx_stream_copy) { 1.139 - UcxBuffer *b1 = ucx_buffer_new(NULL, 64, UCX_BUFFER_DEFAULT); 1.140 - UcxBuffer *b2 = ucx_buffer_new(NULL, 2, UCX_BUFFER_AUTOEXTEND); 1.141 - 1.142 - UCX_TEST_BEGIN 1.143 - 1.144 - ucx_buffer_write("01234567", 1, 8, b1); 1.145 - ucx_buffer_write("abcdefgh", 1, 8, b1); 1.146 - UCX_TEST_ASSERT(b1->size == 16, "failed to fill buffer b1"); 1.147 - ucx_buffer_seek(b1, 0, SEEK_SET); 1.148 - 1.149 - char copybuf[256]; 1.150 - size_t ncp = ucx_stream_bcopy(b1, b2, ucx_buffer_read, ucx_buffer_write, 1.151 - copybuf, sizeof(copybuf)); 1.152 - UCX_TEST_ASSERT(ncp == 16, "wrong number of copied bytes"); 1.153 - UCX_TEST_ASSERT(b2->size == 16, "b2 has wrong size"); 1.154 - UCX_TEST_ASSERT(memcmp(b1->space, b2->space, 16) == 0, 1.155 - "b1 and b2 have not the same content"); 1.156 - 1.157 - memset(b2->space, 0, b2->capacity); 1.158 - b2->pos = 0; 1.159 - b2->size = 0; 1.160 - ucx_buffer_seek(b1, 0, SEEK_SET); 1.161 - 1.162 - FILE *file = tmpfile(); 1.163 - UCX_TEST_ASSERT(file, "test file cannot be opened, test aborted"); 1.164 - 1.165 - ncp = ucx_stream_copy(b1, file, ucx_buffer_read, fwrite); 1.166 - UCX_TEST_ASSERT(ncp == 16, "copied wrong number of bytes to file"); 1.167 - 1.168 - fseek(file, 0, SEEK_SET); 1.169 - 1.170 - ncp = ucx_stream_copy(file, b2, fread, ucx_buffer_write); 1.171 - UCX_TEST_ASSERT(ncp == 16, "copied wrong number of bytes from file"); 1.172 - 1.173 - UCX_TEST_ASSERT(memcmp(b1->space, b2->space, 16) == 0, 1.174 - "b1 and b2 content mismatch"); 1.175 - 1.176 - fclose(file); 1.177 - 1.178 - ucx_buffer_clear(b1); 1.179 - ucx_buffer_seek(b2, 0, SEEK_SET); 1.180 - ncp = ucx_stream_ncopy(b2, b1, ucx_buffer_read, ucx_buffer_write, 8); 1.181 - UCX_TEST_ASSERT(ncp == 8, "copied wrong number of bytes with ncopy"); 1.182 - UCX_TEST_ASSERT(memcmp(b1->space, "01234567\0\0\0\0\0\0\0\0", 16) == 0, 1.183 - "content wrong after ncopy"); 1.184 - 1.185 - UCX_TEST_END 1.186 - 1.187 - ucx_buffer_free(b1); 1.188 - ucx_buffer_free(b2); 1.189 -} 1.190 -