LCOV - code coverage report
Current view: top level - tests - catch_dispatcher.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 84.2 % 19 16
Test Date: 2025-05-30 15:24:13 Functions: 50.0 % 2 1
Legend: Lines: hit not hit

            Line data    Source code
       1              : // Copyright (c) 2012-2024  Made to Order Software Corp.  All Rights Reserved
       2              : //
       3              : // https://snapwebsites.org/project/eventdispatcher
       4              : // contact@m2osw.com
       5              : //
       6              : // This program is free software; you can redistribute it and/or modify
       7              : // it under the terms of the GNU General Public License as published by
       8              : // the Free Software Foundation; either version 2 of the License, or
       9              : // (at your option) any later version.
      10              : //
      11              : // This program is distributed in the hope that it will be useful,
      12              : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13              : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14              : // GNU General Public License for more details.
      15              : //
      16              : // You should have received a copy of the GNU General Public License along
      17              : // with this program; if not, write to the Free Software Foundation, Inc.,
      18              : // 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
      19              : 
      20              : // self
      21              : //
      22              : #include    "catch_main.h"
      23              : 
      24              : 
      25              : // eventdispatcher
      26              : //
      27              : #include    <eventdispatcher/dispatcher.h>
      28              : #include    <eventdispatcher/dispatcher_match.h>
      29              : 
      30              : 
      31              : // last include
      32              : //
      33              : #include    <snapdev/poison.h>
      34              : 
      35              : 
      36              : 
      37              : namespace
      38              : {
      39              : 
      40              : 
      41            0 : void callback(ed::message & msg)
      42              : {
      43            0 :     snapdev::NOT_USED(msg);
      44            0 : }
      45              : 
      46              : 
      47              : } // no name namespace
      48              : 
      49              : 
      50              : 
      51            3 : CATCH_TEST_CASE("dispatcher_setup_error", "[dispatcher][error][setup]")
      52              : {
      53            3 :     CATCH_START_SECTION("create a dispatcher with callback set to nullptr")
      54              :     {
      55              :         // the callback is required
      56              :         //
      57           10 :         CATCH_REQUIRE_THROWS_MATCHES(
      58              :               ::ed::define_match(
      59              :                   ::ed::Expression("REGISTER"),
      60              :                   ::ed::Callback(nullptr),
      61              :                   ::ed::MatchFunc(&ed::one_to_one_match)
      62              :               )
      63              :             , ed::parameter_error
      64              :             , Catch::Matchers::ExceptionMessage("parameter_error: a callback function is required in dispatcher_match, it cannot be set to nullptr."));
      65              :     }
      66            3 :     CATCH_END_SECTION()
      67              : 
      68            3 :     CATCH_START_SECTION("create a dispatcher with missing expression when using the one_to_one_match() function")
      69              :     {
      70              :         // the callback is required
      71              :         //
      72           10 :         CATCH_REQUIRE_THROWS_MATCHES(
      73              :               ::ed::define_match(
      74              :                   ::ed::Callback(&::callback),
      75              :                   ::ed::MatchFunc(&ed::one_to_one_match)
      76              :               )
      77              :             , ed::parameter_error
      78              :             , Catch::Matchers::ExceptionMessage("parameter_error: an expression is required for the one_to_one_match()."));
      79              :     }
      80            3 :     CATCH_END_SECTION()
      81              : 
      82            3 :     CATCH_START_SECTION("create a dispatcher with missing expression when using the one_to_one_match() function")
      83              :     {
      84              :         // the priority must be between min & max
      85              :         //
      86          101 :         for(int count(0); count < 100; ++count)
      87              :         {
      88          100 :             ed::dispatcher_match::priority_t priority(0);
      89              :             for(;;)
      90              :             {
      91          100 :                 priority = rand();
      92          100 :                 if(priority > ed::dispatcher_match::DISPATCHER_MATCH_MAX_PRIORITY)
      93              :                 {
      94          100 :                     break;
      95              :                 }
      96              :             }
      97         1200 :             CATCH_REQUIRE_THROWS_MATCHES(
      98              :                   ::ed::define_match(
      99              :                       ::ed::Expression("REGISTER"),
     100              :                       ::ed::Callback(&::callback),
     101              :                       ::ed::MatchFunc(&ed::one_to_one_match),
     102              :                       ::ed::Priority(priority)
     103              :                   )
     104              :                 , ed::parameter_error
     105              :                 , Catch::Matchers::ExceptionMessage("parameter_error: priority too large for dispatcher match."));
     106              :         }
     107              :     }
     108            3 :     CATCH_END_SECTION()
     109            3 : }
     110              : 
     111              : 
     112              : // vim: ts=4 sw=4 et
        

Generated by: LCOV version 2.0-1

Snap C++ | List of projects | List of versions