mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-25 01:05:21 +03:00
Implement bitArrayFindFirstSet()
Returns the 1st bit set from a bitarray from a given starting index. Can be used to quickly iterate over the set bits.
This commit is contained in:
parent
69a9760c46
commit
daa4c17c3b
3 changed files with 73 additions and 0 deletions
|
@ -33,3 +33,34 @@ TEST(BitArrayTest, TestClr)
|
|||
bitArrayClr(p, 31);
|
||||
EXPECT_EQ(bitArrayGet(p, 31), false);
|
||||
}
|
||||
|
||||
TEST(BitArrayTest, TestFind)
|
||||
{
|
||||
uint32_t array[4] = {0, 0, 0, 0};
|
||||
void *p = array;
|
||||
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(array)), -1);
|
||||
|
||||
bitArraySet(p, 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(array)), 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 16, sizeof(array)), 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 17, sizeof(array)), 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 18, sizeof(array)), -1);
|
||||
|
||||
bitArraySet(p, 44);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(array)), 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 16, sizeof(array)), 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 17, sizeof(array)), 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 18, sizeof(array)), 44);
|
||||
|
||||
bitArrayClr(p, 17);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(array)), 44);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 16, sizeof(array)), 44);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 17, sizeof(array)), 44);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 18, sizeof(array)), 44);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 45, sizeof(array)), -1);
|
||||
|
||||
bitArrayClr(p, 44);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(array)), -1);
|
||||
EXPECT_EQ(bitArrayFindFirstSet(p, 64, sizeof(array)), -1);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue