1.1 --- a/test/logging_tests.c Tue May 06 12:30:12 2014 +0200 1.2 +++ b/test/logging_tests.c Tue May 06 14:22:08 2014 +0200 1.3 @@ -27,27 +27,79 @@ 1.4 */ 1.5 1.6 #include "logging_tests.h" 1.7 +#include <time.h> 1.8 + 1.9 +UCX_TEST(test_ucx_logger_new) { 1.10 + 1.11 + FILE *stream = tmpfile(); 1.12 + UcxLogger *logger = ucx_logger_new(stream, 1.13 + UCX_LOGGER_INFO, UCX_LOGGER_SOURCE | UCX_LOGGER_LEVEL); 1.14 + 1.15 + UCX_TEST_BEGIN 1.16 + UCX_TEST_ASSERT(logger->stream == stream, "stream not set"); 1.17 + UCX_TEST_ASSERT(logger->mask == (UCX_LOGGER_SOURCE | UCX_LOGGER_LEVEL), 1.18 + "mask not set"); 1.19 + UCX_TEST_ASSERT(logger->level == UCX_LOGGER_INFO, 1.20 + "level not set"); 1.21 + UCX_TEST_ASSERT(logger->writer == (write_func)fwrite, 1.22 + "writer not set to fwrite"); 1.23 + UCX_TEST_ASSERT(strcmp(logger->dateformat, "%F %T %z ") == 0, 1.24 + "date format not set to \"%F %T %z\""); 1.25 + 1.26 + UCX_TEST_ASSERT(logger->levels->count == 4, 1.27 + "incorrect number of registered log levels"); 1.28 + 1.29 + int level = UCX_LOGGER_ERROR; 1.30 + UCX_TEST_ASSERT(strcmp(ucx_map_int_get(logger->levels, level), 1.31 + "[ERROR]") == 0, "invalid error level"); 1.32 + level = UCX_LOGGER_WARN; 1.33 + UCX_TEST_ASSERT(strcmp(ucx_map_int_get(logger->levels, level), 1.34 + "[WARNING]") == 0, "invalid warning level"); 1.35 + level = UCX_LOGGER_INFO; 1.36 + UCX_TEST_ASSERT(strcmp(ucx_map_int_get(logger->levels, level), 1.37 + "[INFO]") == 0, "invalid info level"); 1.38 + level = UCX_LOGGER_TRACE; 1.39 + UCX_TEST_ASSERT(strcmp(ucx_map_int_get(logger->levels, level), 1.40 + "[TRACE]") == 0, "invalid trace level"); 1.41 + 1.42 + UCX_TEST_END 1.43 + 1.44 + fclose(stream); 1.45 + ucx_logger_free(logger); 1.46 +} 1.47 1.48 UCX_TEST(test_ucx_logger_log) { 1.49 char buffer[100]; 1.50 + 1.51 FILE *stream = tmpfile(); 1.52 1.53 UcxLogger *logger = ucx_logger_new(stream, 1.54 UCX_LOGGER_INFO, UCX_LOGGER_SOURCE | UCX_LOGGER_LEVEL); 1.55 + logger->dateformat = "%F:"; 1.56 1.57 UCX_TEST_BEGIN 1.58 - ucx_logger_info(logger, "allright"); 1.59 + const uint line1 = __LINE__; ucx_logger_info(logger, "allright"); 1.60 + 1.61 ucx_logger_trace(logger, "dont log this!"); 1.62 - ucx_logger_error(logger, "error %d!", 42); 1.63 + 1.64 + logger->mask |= UCX_LOGGER_TIMESTAMP; 1.65 + time_t now = time(NULL); 1.66 + char timestr[13]; 1.67 + strftime(timestr, 12, "%F:", localtime(&now)); 1.68 + const uint line2 = __LINE__; ucx_logger_error(logger, "error %d!", 42); 1.69 + 1.70 fseek(stream, 0, SEEK_SET); 1.71 size_t r = fread(buffer, 1, 100, stream); 1.72 1.73 - // TODO: completely rewrite this test 1.74 - 1.75 - size_t expected_length = 76; 1.76 - UCX_TEST_ASSERT(r == expected_length && strncmp(buffer, 1.77 - "[INFO] logging_tests.c:39 - allright\n" 1.78 - "[ERROR] logging_tests.c:41 - error 42!\n", expected_length) == 0, "incorrect logs"); 1.79 + const size_t expected_length = 87; 1.80 + char expected[expected_length+1]; 1.81 + snprintf(expected, expected_length+1, 1.82 + "[INFO] logging_tests.c:%u - allright\n" 1.83 + "[ERROR] %slogging_tests.c:%u - error 42!\n", line1, timestr, line2); 1.84 + 1.85 + UCX_TEST_ASSERT(r == expected_length, "incorrect log length"); 1.86 + UCX_TEST_ASSERT(strncmp(buffer, expected, expected_length) == 0, 1.87 + "incorrect logs"); 1.88 1.89 UCX_TEST_END 1.90