tests/test_utils.cpp

changeset 767
d31f4d4075dc
parent 766
e59b76889f00
child 768
0e1cf2cd500e
--- a/tests/test_utils.cpp	Wed Dec 20 16:46:14 2023 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *   1. Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *
- *   2. Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in the
- *      documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "cx/utils.h"
-
-#include "cx/buffer.h"
-
-#include <gtest/gtest.h>
-
-TEST(Utils, cx_stream_bncopy) {
-    CxBuffer source, target;
-    char sbuf[32], tbuf[32];
-    memset(tbuf, 0, 32);
-    cxBufferInit(&source, sbuf, 32, nullptr, 0);
-    cxBufferInit(&target, tbuf, 32, nullptr, 0);
-    cxBufferPutString(&source, "This is a stream copy test.");
-    cxBufferSeek(&source, 0, SEEK_SET);
-
-    char tmp[4];
-    size_t result = cx_stream_bncopy(&source, &target,
-                                     (cx_read_func) cxBufferRead,
-                                     (cx_write_func) cxBufferWrite,
-                                     tmp, 4, 20);
-    EXPECT_EQ(20, result);
-    EXPECT_EQ(20, target.size);
-    EXPECT_STREQ("This is a stream cop\0", tbuf);
-
-    result = cx_stream_bcopy(&source, &target,
-                             (cx_read_func) cxBufferRead,
-                             (cx_write_func) cxBufferWrite,
-                             nullptr, 16);
-
-    EXPECT_EQ(7, result);
-    EXPECT_EQ(27, target.size);
-    EXPECT_STREQ("This is a stream copy test.\0", tbuf);
-
-    cxBufferDestroy(&source);
-    cxBufferDestroy(&target);
-}
-
-TEST(Utils, cx_stream_ncopy) {
-    CxBuffer source, target;
-    char sbuf[32], tbuf[32];
-    memset(tbuf, 0, 32);
-    cxBufferInit(&source, sbuf, 32, nullptr, 0);
-    cxBufferInit(&target, tbuf, 32, nullptr, 0);
-    cxBufferPutString(&source, "This is a stream copy test.");
-    cxBufferSeek(&source, 0, SEEK_SET);
-
-    size_t result = cx_stream_ncopy(&source, &target,
-                                    (cx_read_func) cxBufferRead,
-                                    (cx_write_func) cxBufferWrite,
-                                    20);
-    EXPECT_EQ(20, result);
-    EXPECT_EQ(20, target.size);
-    EXPECT_STREQ("This is a stream cop\0", tbuf);
-
-    result = cx_stream_copy(&source, &target,
-                            (cx_read_func) cxBufferRead,
-                            (cx_write_func) cxBufferWrite);
-
-    EXPECT_EQ(7, result);
-    EXPECT_EQ(27, target.size);
-    EXPECT_STREQ("This is a stream copy test.\0", tbuf);
-
-    cxBufferDestroy(&source);
-    cxBufferDestroy(&target);
-}
-
-TEST(Utils, ForN) {
-    unsigned j;
-    j = 0;
-    cx_for_n(i, 50) {
-        EXPECT_EQ(i, j);
-        j++;
-    }
-}
-
-TEST(Utils, swap_ptr) {
-    int i = 5;
-    int j = 8;
-    int *ip = &i;
-    int *jp = &j;
-    cx_swap_ptr(ip, jp);
-    EXPECT_EQ(ip, &j);
-    EXPECT_EQ(jp, &i);
-}
-
-TEST(Utils, szmul) {
-    size_t r;
-    int e;
-    e = cx_szmul(5, 7, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(35, r);
-
-    size_t s = SIZE_MAX & ~3;
-
-    e = cx_szmul(s / 4, 2, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s / 2, r);
-    e = cx_szmul(2, s / 4, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s / 2, r);
-
-    e = cx_szmul(s / 4, 4, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s, r);
-
-    e = cx_szmul(4, s / 4, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s, r);
-
-    e = cx_szmul(s / 4, 5, &r);
-    EXPECT_NE(0, e);
-
-    e = cx_szmul(5, s / 4, &r);
-    EXPECT_NE(0, e);
-
-    e = cx_szmul(SIZE_MAX - 4, 0, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul(0, SIZE_MAX - 1, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul(SIZE_MAX, 0, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul(0, SIZE_MAX, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul(0, 0, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-}
-
-#ifdef CX_SZMUL_BUILTIN
-
-// also test the custom implementation
-struct Utils_szmul_impl : ::testing::Test {
-#undef CX_SZMUL_BUILTIN
-
-#include "../src/szmul.c"
-
-#define CX_SZMUL_BUILTIN
-};
-
-TEST_F(Utils_szmul_impl, Test) {
-    size_t r;
-    int e;
-    e = cx_szmul_impl(5, 7, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(35, r);
-
-    size_t s = SIZE_MAX & ~3;
-
-    e = cx_szmul_impl(s / 4, 2, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s / 2, r);
-    e = cx_szmul_impl(2, s / 4, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s / 2, r);
-
-    e = cx_szmul_impl(s / 4, 4, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s, r);
-
-    e = cx_szmul_impl(4, s / 4, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(s, r);
-
-    e = cx_szmul_impl(s / 4, 5, &r);
-    EXPECT_NE(0, e);
-
-    e = cx_szmul_impl(5, s / 4, &r);
-    EXPECT_NE(0, e);
-
-    e = cx_szmul_impl(SIZE_MAX - 4, 0, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul_impl(0, SIZE_MAX - 1, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul_impl(SIZE_MAX, 0, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul_impl(0, SIZE_MAX, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-
-    e = cx_szmul_impl(0, 0, &r);
-    EXPECT_EQ(0, e);
-    EXPECT_EQ(0, r);
-}
-
-#endif // CX_SZMUL_BUILTIN

mercurial