LCOV - code coverage report
Current view: top level - datahandlinglibs/unittest - datahandlinglibs_SkiplistLatencyBufferModel_test.cxx (source / functions) Coverage Total Hit
Test: code.result Lines: 100.0 % 34 34
Test Date: 2026-07-12 15:23:06 Functions: 100.0 % 4 4

            Line data    Source code
       1              : /**
       2              :  * @file datahandlinglibs_SkiplistLatencyBufferModel_test.cxx Unit Tests for SkiplistLatencyBufferModel
       3              :  *
       4              :  * This is part of the DUNE DAQ Application Framework, copyright 2020.
       5              :  * Licensing/copyright details are in the COPYING file that you should have
       6              :  * received with this code.
       7              :  */
       8              : 
       9              : /**
      10              :  * @brief Name of this test module
      11              :  */
      12              : #define BOOST_TEST_MODULE datahandlinglibs_SkiplistLatencyBufferModel_test // NOLINT
      13              : 
      14              : #include "boost/test/unit_test.hpp"
      15              : 
      16              : #include "datahandlinglibs/ReadoutTypes.hpp"
      17              : #include "datahandlinglibs/models/SkipListLatencyBufferModel.hpp"
      18              : 
      19              : #include <utility>
      20              : 
      21              : BOOST_AUTO_TEST_SUITE(datahandlinglibs_SkiplistLatencyBufferModel_test)
      22              : 
      23              : using namespace dunedaq::datahandlinglibs;
      24              : 
      25              : using ReadoutType = types::DUMMY_FRAME_STRUCT;
      26              : 
      27            2 : BOOST_AUTO_TEST_CASE(datahandlinglibs_SkiplistLatencyBufferModel_write_and_return)
      28              : {
      29            1 :   SkipListLatencyBufferModel<ReadoutType> buffer;
      30              : 
      31            1 :   ReadoutType frame1;
      32            1 :   frame1.timestamp = 2;
      33            1 :   frame1.another_key = 1;
      34            1 :   const auto [written1, result1] = buffer.write_and_return(std::move(frame1)); // NOLINT(performance-move-const-arg)
      35            1 :   BOOST_REQUIRE_EQUAL(result1, true);
      36            1 :   BOOST_REQUIRE_EQUAL(written1->get_timestamp(), 2);
      37              : 
      38              :   // Last written != back() in skip list since it is ordered
      39            1 :   ReadoutType frame2;
      40            1 :   frame2.timestamp = 1;
      41            1 :   frame2.another_key = 1;
      42            1 :   const auto [written2, result2] = buffer.write_and_return(std::move(frame2)); // NOLINT(performance-move-const-arg)
      43            1 :   BOOST_REQUIRE_EQUAL(result2, true);
      44            1 :   BOOST_REQUIRE_EQUAL(written2->get_timestamp(), 1);
      45            1 :   BOOST_REQUIRE_NE(written2, buffer.back());
      46            1 :   BOOST_REQUIRE_EQUAL(buffer.back()->get_timestamp(), 2);
      47              : 
      48              :   // Skip list doesn't accept duplicates, it returns an iterator to the existing element
      49            1 :   ReadoutType frame3;
      50            1 :   frame3.timestamp = 1;  
      51            1 :   frame3.another_key = 1;
      52            1 :   const auto [written3, result3] = buffer.write_and_return(std::move(frame3)); // NOLINT(performance-move-const-arg)
      53            1 :   BOOST_REQUIRE_EQUAL(result3, false);
      54            1 :   BOOST_REQUIRE_EQUAL(written3, written2);
      55            1 : }
      56              : 
      57            2 : BOOST_AUTO_TEST_CASE(datahandlinglibs_SkiplistLatencyBufferModel_write)
      58              : {
      59            1 :   SkipListLatencyBufferModel<ReadoutType> buffer;
      60              : 
      61            1 :   ReadoutType frame1;
      62            1 :   frame1.timestamp = 2;
      63            1 :   frame1.another_key = 1;
      64            1 :   BOOST_REQUIRE_EQUAL(buffer.write(std::move(frame1)), true);
      65              : 
      66              :   // Duplicate returns false
      67            1 :   ReadoutType frame2;
      68            1 :   frame2.timestamp = 2;
      69            1 :   frame2.another_key = 1;
      70            1 :   BOOST_REQUIRE_EQUAL(buffer.write(std::move(frame2)), false);
      71            1 : }
      72              : 
      73              : BOOST_AUTO_TEST_SUITE_END()
        

Generated by: LCOV version 2.0-1