30 TEST_ASSERT_EQUAL((1U << 2) | (1U << 4) | (1U << 7), mask);
36 TEST_ASSERT_EQUAL(0b01111000, mask);
41 constexpr uint16_t mask =
indicesToBitmask< 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 >();
42 TEST_ASSERT_EQUAL(0xFFFF, mask);
54 TEST_ASSERT_TRUE((
are_pins_valid< 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 >()));
83 TEST_ASSERT_EQUAL(0, list.count);
84 TEST_ASSERT_EQUAL(0, list.toBitmask());
90 TEST_ASSERT_EQUAL(3, list.count);
91 TEST_ASSERT_EQUAL(3, list.pins[0]);
92 TEST_ASSERT_EQUAL(6, list.pins[1]);
93 TEST_ASSERT_EQUAL(9, list.pins[2]);
99 TEST_ASSERT_EQUAL(1, list.count);
100 TEST_ASSERT_EQUAL(7, list.pins[0]);
101 TEST_ASSERT_EQUAL(1U << 7, list.toBitmask());
107 TEST_ASSERT_EQUAL(4, list.count);
108 TEST_ASSERT_EQUAL((1U << 2) | (1U << 5) | (1U << 8) | (1U << 11), list.toBitmask());
114 constexpr uint16_t expected = (1U << 2) | (1U << 5) | (1U << 8);
115 TEST_ASSERT_EQUAL(expected, list.toBitmask());
120 constexpr PinList< 8 > list{
static_cast< uint16_t
>(0b10100100) };
121 TEST_ASSERT_EQUAL(3, list.count);
122 TEST_ASSERT_EQUAL(2, list.pins[0]);
123 TEST_ASSERT_EQUAL(5, list.pins[1]);
124 TEST_ASSERT_EQUAL(7, list.pins[2]);
125 TEST_ASSERT_EQUAL(0b10100100, list.toBitmask());
130 constexpr PinList< 4 > list{
static_cast< uint16_t
>(0) };
131 TEST_ASSERT_EQUAL(0, list.count);
132 TEST_ASSERT_EQUAL(0, list.toBitmask());
137 constexpr PinList< 16 > list{
static_cast< uint16_t
>(0xFFFF) };
138 TEST_ASSERT_EQUAL(16, list.count);
139 TEST_ASSERT_EQUAL(0xFFFF, list.toBitmask());
151 TEST_ASSERT_EQUAL(2, pair.pin);
159 TEST_ASSERT_EQUAL((1U << 4) | (1U << 5) | (1U << 6), pair.getBitmask());
165 TEST_ASSERT_EQUAL(10, pair.pin);
166 TEST_ASSERT_EQUAL(1U << 7, pair.getBitmask());
172 TEST_ASSERT_EQUAL(3, pair.pin);
173 TEST_ASSERT_EQUAL(0b11110000, pair.getBitmask());
186 TEST_ASSERT_EQUAL(1, pins.size());
187 TEST_ASSERT_EQUAL(9, pins.getPin(0));
188 TEST_ASSERT_EQUAL((1U << 2) | (1U << 3) | (1U << 4), pins.getBitmask(0));
198 TEST_ASSERT_EQUAL(2, pins.size());
199 TEST_ASSERT_EQUAL(2, pins.getPin(0));
200 TEST_ASSERT_EQUAL(3, pins.getPin(1));
201 TEST_ASSERT_EQUAL((1U << 4) | (1U << 5), pins.getBitmask(0));
202 TEST_ASSERT_EQUAL((1U << 6) | (1U << 7), pins.getBitmask(1));
211 TEST_ASSERT_EQUAL(0, pins.getPin(1));
212 TEST_ASSERT_EQUAL(0, pins.getPin(99));
221 TEST_ASSERT_EQUAL(0, pins.getBitmask(1));
222 TEST_ASSERT_EQUAL(0, pins.getBitmask(99));
233 TEST_ASSERT_EQUAL((1U << 4) | (1U << 5), pins.findBitmask(10));
234 TEST_ASSERT_EQUAL((1U << 6) | (1U << 7), pins.findBitmask(11));
235 TEST_ASSERT_EQUAL((1U << 8) | (1U << 9), pins.findBitmask(12));
244 TEST_ASSERT_EQUAL(0, pins.findBitmask(99));
245 TEST_ASSERT_EQUAL(0, pins.findBitmask(0));
255 TEST_ASSERT_EQUAL(5, pins.getPin(0));
256 TEST_ASSERT_EQUAL(0b11100, pins.getBitmask(0));
268 TEST_ASSERT_EQUAL(4, pins.size());
269 TEST_ASSERT_EQUAL((1U << 11) | (1U << 12), pins.findBitmask(5));
Manages override pins and their associated bitmasks for forced operation.
void test_are_pins_valid_rejects_pin_14_and_above(void)
void test_PinList_default_constructor(void)
void test_PinList_single_pin(void)
void test_OverridePins_getPin_out_of_bounds(void)
void test_OverridePins_getBitmask_out_of_bounds(void)
void test_are_pins_valid_all_valid(void)
void test_PinList_toBitmask(void)
void test_KeyIndexPair_getBitmask(void)
void test_PinList_from_bitmask(void)
void test_OverridePins_many_entries(void)
void test_KeyIndexPair_from_bitmask(void)
void test_OverridePins_with_bitmask_constructor(void)
void test_indicesToBitmask_consecutive(void)
void test_PinList_variadic_constructor(void)
void test_PinList_from_bitmask_full(void)
void test_PinList_from_bitmask_empty(void)
void test_indicesToBitmask_single_index(void)
void test_KeyIndexPair_construction(void)
void test_OverridePins_multiple_entries(void)
void test_KeyIndexPair_single_pin(void)
void test_are_pins_valid_rejects_pin_0(void)
void test_OverridePins_single_entry(void)
void test_OverridePins_findBitmask_found(void)
void test_PinList_max_pins(void)
void test_are_pins_valid_rejects_pin_1(void)
void test_indicesToBitmask_multiple_indices(void)
void test_indicesToBitmask_all_bits(void)
void test_OverridePins_findBitmask_not_found(void)
Structure holding a pin and its associated index list.
Wrapper for a list of pins, constructible from variadic arguments.
Compile-time utilities for managing override pins and index-to-bitmask mapping.
constexpr bool are_pins_valid()
Compile-time validation function for pin values.
constexpr uint16_t indicesToBitmask()
Helper to convert pins to a bitmask at compile-time.