Merge pull request #10479 from iNavFlight/mmosca-fix-arming-flags-display
[inav.git] / src / test / unit / bitarray_unittest.cc
blob23e1dd3a93859bdc25c24819dc771fd5582ad0df
1 #include <cstdint>
2 #include <cstring>
4 extern "C" {
5 #include "common/bitarray.h"
6 #include "common/utils.h"
9 #include "gtest/gtest.h"
11 TEST(BitArrayTest, TestGetSet)
13 BITARRAY_DECLARE(p, 32);
14 ZERO_FARRAY(p);
16 bitArraySet(p, 14);
17 EXPECT_EQ(bitArrayGet(p, 14), true);
18 EXPECT_EQ(bitArrayGet(p, 13), false);
19 EXPECT_EQ(bitArrayGet(p, 15), false);
21 EXPECT_EQ(bitArrayGet(p, 0), false);
22 bitArraySet(p, 0);
23 EXPECT_EQ(bitArrayGet(p, 0), true);
26 TEST(BitArrayTest, TestClr)
28 BITARRAY_DECLARE(p, 32);
29 ZERO_FARRAY(p);
31 bitArraySet(p, 31);
32 EXPECT_EQ(bitArrayGet(p, 31), true);
33 EXPECT_EQ(bitArrayGet(p, 30), false);
34 EXPECT_EQ(bitArrayGet(p, 0), false);
35 bitArrayClr(p, 31);
36 EXPECT_EQ(bitArrayGet(p, 31), false);
39 TEST(BitArrayTest, TestFind)
41 BITARRAY_DECLARE(p, 32 * 4);
42 ZERO_FARRAY(p);
44 EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(p)), -1);
46 bitArraySet(p, 17);
47 EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(p)), 17);
48 EXPECT_EQ(bitArrayFindFirstSet(p, 16, sizeof(p)), 17);
49 EXPECT_EQ(bitArrayFindFirstSet(p, 17, sizeof(p)), 17);
50 EXPECT_EQ(bitArrayFindFirstSet(p, 18, sizeof(p)), -1);
52 bitArraySet(p, 44);
53 EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(p)), 17);
54 EXPECT_EQ(bitArrayFindFirstSet(p, 16, sizeof(p)), 17);
55 EXPECT_EQ(bitArrayFindFirstSet(p, 17, sizeof(p)), 17);
56 EXPECT_EQ(bitArrayFindFirstSet(p, 18, sizeof(p)), 44);
58 bitArrayClr(p, 17);
59 EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(p)), 44);
60 EXPECT_EQ(bitArrayFindFirstSet(p, 16, sizeof(p)), 44);
61 EXPECT_EQ(bitArrayFindFirstSet(p, 17, sizeof(p)), 44);
62 EXPECT_EQ(bitArrayFindFirstSet(p, 18, sizeof(p)), 44);
63 EXPECT_EQ(bitArrayFindFirstSet(p, 43, sizeof(p)), 44);
64 EXPECT_EQ(bitArrayFindFirstSet(p, 44, sizeof(p)), 44);
65 EXPECT_EQ(bitArrayFindFirstSet(p, 45, sizeof(p)), -1);
67 bitArrayClr(p, 44);
68 EXPECT_EQ(bitArrayFindFirstSet(p, 0, sizeof(p)), -1);
69 EXPECT_EQ(bitArrayFindFirstSet(p, 64, sizeof(p)), -1);
72 TEST(BitArrayTest, TestSetClrAll)
74 const int bits = 32 * 4;
76 BITARRAY_DECLARE(p, bits);
77 BITARRAY_CLR_ALL(p);
79 EXPECT_EQ(-1, BITARRAY_FIND_FIRST_SET(p, 0));
81 BITARRAY_SET_ALL(p);
83 for (int ii = 0; ii < bits; ii++) {
84 EXPECT_EQ(ii, BITARRAY_FIND_FIRST_SET(p, ii));
88 TEST(BitArrayTest, TestOutOfBounds)
90 const int bits = 32 * 4;
92 BITARRAY_DECLARE(p, bits);
93 BITARRAY_CLR_ALL(p);
94 EXPECT_EQ(-1, BITARRAY_FIND_FIRST_SET(p, 0));
95 EXPECT_EQ(-1, BITARRAY_FIND_FIRST_SET(p, bits));
96 EXPECT_EQ(-1, BITARRAY_FIND_FIRST_SET(p, bits + 1));