Skip to content

Commit 6807c7f

Browse files
add queue set tests with semaphores
1 parent 1828478 commit 6807c7f

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

cpputest-for-freertos-lib/tests/cpputest_for_freertos_queue_set_tests.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include "FreeRTOS.h"
2525
#include "queue.h"
26+
#include "semphr.h"
2627
#include "cpputest_for_freertos_memory.hpp"
2728

2829
//must be last
@@ -192,4 +193,54 @@ TEST(QueueSetTests, select_from_set_with_multiple_queues_will_return_expected_qu
192193
//confirm select shows null now
193194
auto selectResult = xQueueSelectFromSet(mUnderTest.get(), portMAX_DELAY);
194195
CHECK_EQUAL(nullptr, selectResult);
196+
}
197+
198+
TEST(QueueSetTests, select_from_set_will_return_expected_semaphore)
199+
{
200+
CreateSetUnderTest(2);
201+
cms::test::unique_sema sema (xSemaphoreCreateBinary());
202+
CHECK_TRUE(sema != nullptr);
203+
204+
auto rtn = xQueueAddToSet(sema.get(), mUnderTest.get());
205+
CHECK_EQUAL(pdPASS, rtn);
206+
207+
auto selectResult = xQueueSelectFromSet(mUnderTest.get(), portMAX_DELAY);
208+
CHECK_EQUAL(nullptr, selectResult);
209+
210+
xSemaphoreGive(sema.get());
211+
212+
selectResult = xQueueSelectFromSet(mUnderTest.get(), portMAX_DELAY);
213+
CHECK_EQUAL(sema.get(), selectResult);
214+
215+
auto count = uxSemaphoreGetCount(selectResult);
216+
CHECK_EQUAL(1, count);
217+
}
218+
219+
TEST(QueueSetTests, select_from_set_with_multiple_semaphores_will_return_expected_semaphore_in_expected_order)
220+
{
221+
CreateSetUnderTest(2);
222+
cms::test::unique_sema sema1 (xSemaphoreCreateBinary());
223+
CHECK_TRUE(sema1 != nullptr);
224+
cms::test::unique_sema sema2 (xSemaphoreCreateBinary());
225+
CHECK_TRUE(sema2 != nullptr);
226+
auto rtn = xQueueAddToSet(sema1.get(), mUnderTest.get());
227+
CHECK_EQUAL(pdPASS, rtn);
228+
rtn = xQueueAddToSet(sema2.get(), mUnderTest.get());
229+
CHECK_EQUAL(pdPASS, rtn);
230+
231+
auto selectResult = xQueueSelectFromSet(mUnderTest.get(), portMAX_DELAY);
232+
CHECK_EQUAL(nullptr, selectResult);
233+
234+
xSemaphoreGive(sema2.get());
235+
xSemaphoreGive(sema1.get());
236+
237+
selectResult = xQueueSelectFromSet(mUnderTest.get(), portMAX_DELAY);
238+
CHECK_EQUAL(sema2.get(), selectResult);
239+
auto count = uxSemaphoreGetCount(selectResult);
240+
CHECK_EQUAL(1, count);
241+
242+
selectResult = xQueueSelectFromSet(mUnderTest.get(), portMAX_DELAY);
243+
CHECK_EQUAL(sema1.get(), selectResult);
244+
count = uxSemaphoreGetCount(selectResult);
245+
CHECK_EQUAL(1, count);
195246
}

0 commit comments

Comments
 (0)