LCOV - code coverage report
Current view: top level - test - logtest.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 71 71 100.0 %
Date: 2015-05-24 18:28:16 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /***************************************************************************//**
       2             : 
       3             :   @file         logtest.c
       4             : 
       5             :   @author       Stephen Brennan
       6             : 
       7             :   @date         Created Sunday, 24 May 2015
       8             : 
       9             :   @brief        Tests for logging (can't use smbunit though)
      10             : 
      11             :   @copyright    Copyright (c) 2015, Stephen Brennan.  Released under the Revised
      12             :                 BSD License.  See LICENSE.txt for details.
      13             : 
      14             : *******************************************************************************/
      15             : 
      16             : #include <stdio.h>
      17             : 
      18             : #include "libstephen/log.h"
      19             : #include "libstephen/ut.h"
      20             : 
      21           1 : int test_levels(void)
      22             : {
      23           1 :   smb_status status = SMB_SUCCESS;
      24           1 :   sl_clear_handlers(NULL);
      25           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LDEBUG, .dst=stdout}, &status);
      26           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
      27           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LWARNING, .dst=stdout}, &status);
      28           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LERROR, .dst=stdout}, &status);
      29           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL,  .dst=stdout}, &status);
      30           1 :   LOG(NULL, LNOTSET, "this appears 0 times");
      31           1 :   DEBUG("this appears 1 time");
      32           1 :   INFO("this appears 2 times");
      33           1 :   WARNING("this appears 3 times");
      34           1 :   ERROR("this appears 4 times");
      35           1 :   CRITICAL("this appears 5 times");
      36           1 :   sl_set_level(NULL, LDEBUG);
      37           1 :   DEBUG("this appears 5 times");
      38           1 :   LOG(NULL, LDEBUG + 1, "this also appears 5 times, with level 11");
      39           1 :   return 0;
      40             : }
      41             : 
      42           1 : int test_override(void)
      43             : {
      44           1 :   smb_status status = SMB_SUCCESS;
      45           1 :   smb_logger *logger = sl_create();
      46           1 :   sl_clear_handlers(NULL);
      47           1 :   sl_add_handler(logger, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
      48           1 :   DEBUG("you shouldn't see this");
      49           1 :   INFO("you shouldn't see this");
      50           1 :   sl_set_default_logger(logger);
      51           1 :   DEBUG("you shouldn't see this");
      52           1 :   INFO("you should see this");
      53           1 :   sl_set_default_logger(NULL);
      54           1 :   DEBUG("you shouldn't see this");
      55           1 :   INFO("you shouldn't see this");
      56           1 :   sl_delete(logger);
      57           1 :   return 0;
      58             : }
      59             : 
      60           1 : int test_too_many_levels(void)
      61             : {
      62           1 :   smb_status status = SMB_SUCCESS;
      63           1 :   sl_clear_handlers(NULL);
      64           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LDEBUG, .dst=stdout}, &status);
      65           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      66           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
      67           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      68           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LWARNING, .dst=stdout}, &status);
      69           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      70           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LERROR, .dst=stdout}, &status);
      71           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      72           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL,  .dst=stdout}, &status);
      73           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      74           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LDEBUG, .dst=stdout}, &status);
      75           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      76           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LINFO, .dst=stdout}, &status);
      77           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      78           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LWARNING, .dst=stdout}, &status);
      79           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      80           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LERROR, .dst=stdout}, &status);
      81           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      82           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL,  .dst=stdout}, &status);
      83           1 :   TEST_ASSERT(status == SMB_SUCCESS);
      84           1 :   sl_add_handler(NULL, (smb_loghandler){.level=LCRITICAL,  .dst=stdout}, &status);
      85           1 :   TEST_ASSERT(status == SMB_INDEX_ERROR);
      86           1 :   return 0;
      87             : }
      88             : 
      89           1 : void log_test(void)
      90             : {
      91           1 :   smb_ut_group *group = su_create_test_group("log");
      92             : 
      93           1 :   smb_ut_test *levels = su_create_test("levels", test_levels);
      94           1 :   su_add_test(group, levels);
      95             : 
      96           1 :   smb_ut_test *override = su_create_test("override", test_override);
      97           1 :   su_add_test(group, override);
      98             : 
      99           1 :   smb_ut_test *too_many_levels = su_create_test("too_many_levels", test_too_many_levels);
     100           1 :   su_add_test(group, too_many_levels);
     101             : 
     102           1 :   printf("ALERT: Some logging tests are manual!\n");
     103           1 :   su_run_group(group);
     104           1 :   su_delete_group(group);
     105           1 : }

Generated by: LCOV version 1.11