56 #include "unity_fixture.h"
58 #include "Mock_rkhfwk_bittbl.h"
59 #include "Mock_rkhassert.h"
63 static const rui8_t bitMaskTbl[] =
65 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80
68 static const rui8_t leastBitSetTbl[] =
70 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
71 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
72 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
73 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
74 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
75 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
76 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
77 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
78 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
79 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
80 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
81 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
82 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
83 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
84 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
85 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
96 MockAssertCallback(
const char*
const file,
int line,
int cmock_num_calls)
117 TEST(prio, ClearAfterInit)
122 TEST_ASSERT_EQUAL(0, result);
125 TEST(prio, SetOneActiveObjectReadyToRun)
128 rui8_t prio = 1, resultPrio, column, row;
132 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
133 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
137 TEST_ASSERT_EQUAL(1, result);
139 rkh_bittbl_getLeastBitSetPos_ExpectAndReturn(1, leastBitSetTbl[1]);
140 rkh_bittbl_getLeastBitSetPos_ExpectAndReturn(2, leastBitSetTbl[2]);
142 TEST_ASSERT_EQUAL(prio, resultPrio);
145 TEST(prio, SetMultipleActiveObjectsReadyToRun)
147 rui8_t prioA = 1, prioC = 0, prioB = 15, resultPrio, column, row;
151 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
152 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
157 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
158 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
163 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
164 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
167 rkh_bittbl_getLeastBitSetPos_ExpectAndReturn(3, leastBitSetTbl[3]);
168 rkh_bittbl_getLeastBitSetPos_ExpectAndReturn(3, leastBitSetTbl[3]);
170 TEST_ASSERT_EQUAL(prioC, resultPrio);
173 TEST(prio, SetOneActiveObjectUnready)
176 rui8_t prio = 1, resultPrio, column, row;
180 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
181 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
185 rkh_bittbl_getLeastBitSetPos_ExpectAndReturn(1, leastBitSetTbl[1]);
186 rkh_bittbl_getLeastBitSetPos_ExpectAndReturn(2, leastBitSetTbl[2]);
188 TEST_ASSERT_EQUAL(prio, resultPrio);
190 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
191 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
194 TEST_ASSERT_EQUAL(0, result);
197 TEST(prio, SetMultipleActiveObjectsUnready)
200 rui8_t prioA = 1, prioC = 0, prioB = 15, column, row;
204 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
205 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
210 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
211 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
216 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
217 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
222 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
227 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
228 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
233 rkh_bittbl_getBitMask_ExpectAndReturn(row, bitMaskTbl[row]);
234 rkh_bittbl_getBitMask_ExpectAndReturn(column, bitMaskTbl[column]);
238 TEST_ASSERT_EQUAL(0, result);
241 TEST(prio, Fails_InvalidActiveObjectOnSet)
245 rkh_assert_Expect(
"rkhsma_prio", 0);
246 rkh_assert_IgnoreArg_line();
247 rkh_assert_StubWithCallback(MockAssertCallback);
void rkh_smaPrio_setUnready(rui8_t prio)
Removing an active object from the ready list.
rui8_t rkh_smaPrio_findHighest(void)
Finding the highest priority active object ready to run.
void rkh_smaPrio_init(void)
Initializes the native priority mechanism for active object scheduling.
Specifies the native priority mechanism for active object scheduling.
#define RKH_CFG_FWK_MAX_SMA
Specify the maximum number of state machine applications (SMA) to be used by the application (can be ...
rbool_t rkh_smaPrio_isReady(void)
Evaluates to true if any active object is ready to run.
void rkh_smaPrio_setReady(rui8_t prio)
Making an active object ready-to-run inserting it into the ready list.