LCOV - code coverage report
Current view: top level - test - suite_svcmgr-register.c (source / functions) Hit Total Coverage
Test: mkernel.info Lines: 54 54 100.0 %
Date: 2024-07-29 17:15:54 Functions: 11 11 100.0 %

          Line data    Source code
       1             : /**   \file  suite_svcmgr-register.c
       2             :  *   \brief  Check unit testing framework main function for SvcMgr
       3             :  *  \author  François Cerbelle (Fanfan), francois@cerbelle.net
       4             :  *
       5             :  *  \internal
       6             :  *       Created:  20/03/2022
       7             :  *      Revision:  none
       8             :  * Last modified:  2024-07-19 15:18
       9             :  *      Compiler:  gcc
      10             :  *  Organization:  Cerbelle.net
      11             :  *     Copyright:  Copyright (c) 2024, François Cerbelle
      12             :  *
      13             :  *  This source code is released for free distribution under the terms of the
      14             :  *  GNU General Public License as published by the Free Software Foundation.
      15             :  */
      16             : 
      17             : #ifdef HAVE_CONFIG_H
      18             : #include "config.h"
      19             : #endif
      20             : 
      21             : #include "svcmgr.h"
      22             : #include "oom.h"                                /* OOM simulation */
      23             : #include <check.h>
      24             : #include <unistd.h>                             /* pid_t getpid() */
      25             : #include <sys/stat.h>                           /* mkdir(), chdir(), mode_t */
      26             : #include <stdio.h>                              /* fprintf */
      27             : #include <stdlib.h>                             /* abort() */
      28             : #include "checktools.inc"
      29             : 
      30          13 : static uint8_t svc_func (va_list p_ap)
      31             : {
      32          13 :     uint8_t i=0;
      33             : 
      34          52 :     for (i=0; i<3; i++) {
      35          39 :         printf ("arg[%d]=%d, ",i,va_arg(p_ap,int));
      36             :     }
      37          13 :     printf("\n");
      38          13 :     return 0;
      39             : }
      40             : 
      41           3 : START_TEST(test_1)
      42             : {
      43           3 :     svcmgr_register("a",svc_func);
      44           3 :     svcmgr_call("a",1,2,3);
      45           3 : }
      46             : END_TEST
      47             : 
      48           3 : START_TEST(test_2)
      49             : {
      50           3 :     svcmgr_register("b",svc_func);
      51           3 :     svcmgr_call("a",4,5,6);
      52           3 :     svcmgr_call("b",7,8,9);
      53           3 : }
      54             : END_TEST
      55             : 
      56           3 : START_TEST(test_3)
      57             : {
      58           3 :     svcmgr_register("a",svc_func);
      59           3 :     svcmgr_call("a",10,11,12);
      60           3 :     svcmgr_call("b",13,14,15);
      61           3 : }
      62             : END_TEST
      63             : 
      64           3 : START_TEST(test_4)
      65             : {
      66           3 :     svcmgr_register("b/c",svc_func);
      67           3 :     svcmgr_call("a",16,17,18);
      68           3 :     svcmgr_call("b",19,20,21);
      69           3 :     svcmgr_call("b/c",22,23,24);
      70           3 :     svcmgr_call("c",25,26,27);
      71           3 : }
      72             : END_TEST
      73             : 
      74           3 : START_TEST(test_5)
      75             : {
      76           3 :     svcmgr_unregister("a");
      77           3 : }
      78             : END_TEST
      79             : 
      80             : /* Begining of test case */
      81          13 : void svcmgr_unchecked_setup()
      82             : {
      83          13 :     forktest_init();
      84          13 : }
      85             : /* Begining of test (potentially in child) */
      86          15 : void svcmgr_checked_setup()
      87             : {
      88          15 :     signals_catch();
      89          15 :     forktest_gprofdir();
      90          15 : }
      91             : /* End of test (potentially in child) */
      92          15 : void svcmgr_checked_teardown()
      93             : {
      94          15 :     signals_release();
      95          15 : }
      96             : /* End of testcase */
      97           3 : void svcmgr_unchecked_teardown()
      98             : {
      99           3 : }
     100             : 
     101          17 : Suite* svcmgr_register_suite()
     102             : {
     103             :     Suite *s;
     104             :     TCase *tc;
     105             : 
     106          17 :     s = suite_create("SvcMgr");
     107          17 :     tc = tcase_create("SvcMgr");
     108             :     /* tcase_set_tags(tc,"tag1 tag2"); */
     109             :     /* tcase_set_timeout(tc,5); */ /* seconds */
     110          17 :     tcase_add_checked_fixture(tc, svcmgr_checked_setup, svcmgr_checked_teardown);
     111          17 :     tcase_add_unchecked_fixture(tc, svcmgr_unchecked_setup, svcmgr_unchecked_teardown);
     112          17 :     suite_add_tcase(s, tc);
     113          17 :     tcase_add_test(tc, test_1);
     114          17 :     tcase_add_test(tc, test_2);
     115          17 :     tcase_add_test(tc, test_3);
     116          17 :     tcase_add_test(tc, test_4);
     117          17 :     tcase_add_test(tc, test_5);
     118             : 
     119          17 :     return s;
     120             : }

Generated by: LCOV version 1.16