test/logging_tests.c

Sun, 21 Jan 2018 14:10:59 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 21 Jan 2018 14:10:59 +0100
changeset 273
9c1591b3c4a4
parent 259
2f5dea574a75
child 296
e325716a442c
permissions
-rw-r--r--

fixes return value for multiplication with zero in ucx_szmul

universe@54 1 /*
universe@103 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
universe@54 3 *
universe@259 4 * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.
universe@103 5 *
universe@103 6 * Redistribution and use in source and binary forms, with or without
universe@103 7 * modification, are permitted provided that the following conditions are met:
universe@103 8 *
universe@103 9 * 1. Redistributions of source code must retain the above copyright
universe@103 10 * notice, this list of conditions and the following disclaimer.
universe@103 11 *
universe@103 12 * 2. Redistributions in binary form must reproduce the above copyright
universe@103 13 * notice, this list of conditions and the following disclaimer in the
universe@103 14 * documentation and/or other materials provided with the distribution.
universe@103 15 *
universe@103 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
universe@103 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
universe@103 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
universe@103 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
universe@103 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
universe@103 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
universe@103 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
universe@103 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
universe@103 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
universe@103 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
universe@103 26 * POSSIBILITY OF SUCH DAMAGE.
universe@54 27 */
universe@54 28
universe@54 29 #include "logging_tests.h"
universe@170 30 #include <time.h>
universe@170 31
universe@170 32 UCX_TEST(test_ucx_logger_new) {
universe@170 33
universe@170 34 FILE *stream = tmpfile();
universe@170 35 UcxLogger *logger = ucx_logger_new(stream,
universe@170 36 UCX_LOGGER_INFO, UCX_LOGGER_SOURCE | UCX_LOGGER_LEVEL);
universe@170 37
universe@170 38 UCX_TEST_BEGIN
universe@170 39 UCX_TEST_ASSERT(logger->stream == stream, "stream not set");
universe@170 40 UCX_TEST_ASSERT(logger->mask == (UCX_LOGGER_SOURCE | UCX_LOGGER_LEVEL),
universe@170 41 "mask not set");
universe@170 42 UCX_TEST_ASSERT(logger->level == UCX_LOGGER_INFO,
universe@170 43 "level not set");
universe@170 44 UCX_TEST_ASSERT(logger->writer == (write_func)fwrite,
universe@170 45 "writer not set to fwrite");
universe@170 46 UCX_TEST_ASSERT(strcmp(logger->dateformat, "%F %T %z ") == 0,
universe@170 47 "date format not set to \"%F %T %z\"");
universe@170 48
universe@170 49 UCX_TEST_ASSERT(logger->levels->count == 4,
universe@170 50 "incorrect number of registered log levels");
universe@170 51
universe@170 52 int level = UCX_LOGGER_ERROR;
universe@185 53 UCX_TEST_ASSERT(strcmp((char*)ucx_map_int_get(logger->levels, level),
universe@170 54 "[ERROR]") == 0, "invalid error level");
universe@170 55 level = UCX_LOGGER_WARN;
universe@185 56 UCX_TEST_ASSERT(strcmp((char*)ucx_map_int_get(logger->levels, level),
universe@170 57 "[WARNING]") == 0, "invalid warning level");
universe@170 58 level = UCX_LOGGER_INFO;
universe@185 59 UCX_TEST_ASSERT(strcmp((char*)ucx_map_int_get(logger->levels, level),
universe@170 60 "[INFO]") == 0, "invalid info level");
universe@170 61 level = UCX_LOGGER_TRACE;
universe@185 62 UCX_TEST_ASSERT(strcmp((char*)ucx_map_int_get(logger->levels, level),
universe@170 63 "[TRACE]") == 0, "invalid trace level");
universe@170 64
universe@170 65 UCX_TEST_END
universe@170 66
universe@170 67 fclose(stream);
universe@170 68 ucx_logger_free(logger);
universe@170 69 }
universe@54 70
universe@134 71 UCX_TEST(test_ucx_logger_log) {
universe@54 72 char buffer[100];
universe@170 73
universe@55 74 FILE *stream = tmpfile();
universe@55 75
universe@80 76 UcxLogger *logger = ucx_logger_new(stream,
universe@80 77 UCX_LOGGER_INFO, UCX_LOGGER_SOURCE | UCX_LOGGER_LEVEL);
universe@187 78 logger->dateformat = (char*) "%Y-%m-%d:";
universe@54 79
universe@54 80 UCX_TEST_BEGIN
universe@187 81 const unsigned int line1 = __LINE__; ucx_logger_info(logger, "allright");
universe@170 82
universe@81 83 ucx_logger_trace(logger, "dont log this!");
universe@170 84
universe@170 85 logger->mask |= UCX_LOGGER_TIMESTAMP;
universe@170 86 time_t now = time(NULL);
universe@170 87 char timestr[13];
universe@186 88 strftime(timestr, 12, "%Y-%m-%d:", localtime(&now));
universe@187 89 const unsigned int line2 = __LINE__; ucx_logger_error(logger, "error %d!", 42);
universe@170 90
universe@54 91 fseek(stream, 0, SEEK_SET);
universe@95 92 size_t r = fread(buffer, 1, 100, stream);
universe@80 93
universe@170 94 const size_t expected_length = 87;
universe@185 95 char expected[88];
universe@170 96 snprintf(expected, expected_length+1,
universe@170 97 "[INFO] logging_tests.c:%u - allright\n"
universe@170 98 "[ERROR] %slogging_tests.c:%u - error 42!\n", line1, timestr, line2);
universe@170 99
universe@170 100 UCX_TEST_ASSERT(r == expected_length, "incorrect log length");
universe@170 101 UCX_TEST_ASSERT(strncmp(buffer, expected, expected_length) == 0,
universe@170 102 "incorrect logs");
universe@54 103
universe@54 104 UCX_TEST_END
universe@54 105
universe@80 106 ucx_logger_free(logger);
universe@54 107 fclose(stream);
universe@54 108 }

mercurial