1
0
Fork 0
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:
Alberto García Hierro 2017-09-14 21:18:57 +01:00
parent 69a9760c46
commit daa4c17c3b
3 changed files with 73 additions and 0 deletions

View file

@ -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);
}