LCOV - code coverage report
Current view: top level - unit_tests/tests - test_can_rx.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 31 32 96.9 %
Date: 2024-04-22 23:59:02 Functions: 22 23 95.7 %

          Line data    Source code
       1             : #include "pch.h"
       2             : 
       3             : #include "can_listener.h"
       4             : 
       5             : using ::testing::StrictMock;
       6             : using ::testing::_;
       7             : 
       8             : class MockCanListener : public CanListener {
       9             : public:
      10           2 :         MockCanListener(uint32_t id) : CanListener(id) { }
      11             : 
      12           2 :         MOCK_METHOD(void, decodeFrame, (const CANRxFrame& frame, efitick_t nowNt), (override));
      13           4 :         MOCK_METHOD(bool, acceptFrame, (const CANRxFrame& frame), (const, override));
      14             : };
      15             : 
      16           4 : TEST(CanListener, FrameAccepted) {
      17           1 :         StrictMock<MockCanListener> dut(0x123);
      18             : 
      19           1 :         CANRxFrame frame;
      20             : 
      21             :         // Accept should be called, returns true
      22           1 :         EXPECT_CALL(dut, acceptFrame(_)).WillOnce(Return(true));
      23             : 
      24             :         // Because accept returns true, decode is called
      25           1 :         EXPECT_CALL(dut, decodeFrame(_, 1234));
      26             : 
      27           1 :         dut.processFrame(frame, 1234);
      28           2 : }
      29             : 
      30           4 : TEST(CanListener, FrameNotAccepted) {
      31           1 :         StrictMock<MockCanListener> dut(0x123);
      32             : 
      33           1 :         CANRxFrame frame;
      34             : 
      35             :         // Accept should be called, returns false, so decode not called
      36           1 :         EXPECT_CALL(dut, acceptFrame(_)).WillOnce(Return(false));
      37             : 
      38           1 :         dut.processFrame(frame, 1234);
      39           2 : }
      40             : 
      41             : struct CanListenerNoDecode : public CanListener {
      42           2 :         CanListenerNoDecode(uint32_t id) : CanListener(id) { }
      43             : 
      44           0 :         void decodeFrame(const CANRxFrame& frame, efitick_t nowNt) override { }
      45             : };
      46             : 
      47           4 : TEST(CanListener, FrameAcceptedChecksId) {
      48           1 :         CanListenerNoDecode dut(0x123);
      49             : 
      50           1 :         CANRxFrame frame;
      51             : 
      52           1 :         frame.SID = 0x123;
      53           1 :         frame.IDE = false;
      54             : 
      55           1 :         EXPECT_TRUE(dut.acceptFrame(frame));
      56           1 : }
      57             : 
      58           4 : TEST(CanListener, FrameNotAcceptedChecksId) {
      59           1 :         CanListenerNoDecode dut(0x123);
      60             : 
      61           1 :         CANRxFrame frame;
      62             : 
      63           1 :         frame.SID = 0x456;
      64           1 :         frame.IDE = false;
      65             : 
      66           1 :         EXPECT_FALSE(dut.acceptFrame(frame));
      67           1 : }

Generated by: LCOV version 1.14