From 17656288a5acc90239e26a3558d44118d023908c Mon Sep 17 00:00:00 2001 From: Jeremy Boynes Date: Thu, 7 Sep 2023 13:48:45 +0100 Subject: [PATCH] Fix deprecated volatile access in CanMsgRingbuffer + testcase --- api/CanMsgRingbuffer.cpp | 4 +-- test/CMakeLists.txt | 2 ++ test/src/CanMsgRingbuffer/test_available.cpp | 33 ++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 test/src/CanMsgRingbuffer/test_available.cpp diff --git a/api/CanMsgRingbuffer.cpp b/api/CanMsgRingbuffer.cpp index c358a10a..e62db89a 100644 --- a/api/CanMsgRingbuffer.cpp +++ b/api/CanMsgRingbuffer.cpp @@ -40,7 +40,7 @@ void CanMsgRingbuffer::enqueue(CanMsg const & msg) _buf[_head] = msg; _head = next(_head); - _num_elems++; + _num_elems = _num_elems + 1; } CanMsg CanMsgRingbuffer::dequeue() @@ -50,7 +50,7 @@ CanMsg CanMsgRingbuffer::dequeue() CanMsg const msg = _buf[_tail]; _tail = next(_tail); - _num_elems--; + _num_elems = _num_elems - 1; return msg; } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e1ca18d2..a564faa4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -33,6 +33,7 @@ set(TEST_SRCS src/CanMsg/test_isStandardId.cpp src/CanMsg/test_operator_assignment.cpp src/CanMsg/test_printTo.cpp + src/CanMsgRingbuffer/test_available.cpp src/Common/test_makeWord.cpp src/Common/test_map.cpp src/Common/test_max.cpp @@ -104,6 +105,7 @@ set(TEST_SRCS set(TEST_DUT_SRCS ../api/CanMsg.cpp + ../api/CanMsgRingbuffer.cpp ../api/Common.cpp ../api/IPAddress.cpp ../api/String.cpp diff --git a/test/src/CanMsgRingbuffer/test_available.cpp b/test/src/CanMsgRingbuffer/test_available.cpp new file mode 100644 index 00000000..ba857c4b --- /dev/null +++ b/test/src/CanMsgRingbuffer/test_available.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 Arduino. All rights reserved. + */ + +/************************************************************************************** + * INCLUDE + **************************************************************************************/ + +#include + +#include + +/************************************************************************************** + * TEST CODE + **************************************************************************************/ + +TEST_CASE ("'available' should return 0 for empty CanMsg ring buffer", "[CanMsgRingbuffer-available-01]") +{ + arduino::CanMsgRingbuffer ringbuffer; + REQUIRE(ringbuffer.available() == 0); +} + +TEST_CASE ("'available' should return number of elements in CanMsg ringbuffer", "[CanMsgRingbuffer-available-02]") +{ + arduino::CanMsgRingbuffer ringbuffer; + arduino::CanMsg msg; + ringbuffer.enqueue(msg); + REQUIRE(ringbuffer.available() == 1); + ringbuffer.enqueue(msg); + REQUIRE(ringbuffer.available() == 2); + ringbuffer.dequeue(); + REQUIRE(ringbuffer.available() == 1); +} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy