GCC Code Coverage Report | |||||||||||||||||||||
|
|||||||||||||||||||||
Line | Branch | Exec | Source |
1 |
#include "zserio/BuiltInOperators.h" |
||
2 |
|||
3 |
#include "gtest/gtest.h" |
||
4 |
|||
5 |
namespace zserio |
||
6 |
{ |
||
7 |
|||
8 |
namespace builtin |
||
9 |
{ |
||
10 |
|||
11 |
namespace |
||
12 |
{ |
||
13 |
|||
14 |
class DummyBitmask |
||
15 |
{ |
||
16 |
public: |
||
17 |
using underlying_type = uint8_t; |
||
18 |
|||
19 |
enum class Values : underlying_type |
||
20 |
{ |
||
21 |
READ = 1U, |
||
22 |
WRITE = 2U, |
||
23 |
CREATE = 1U | 2U |
||
24 |
}; |
||
25 |
|||
26 |
11 |
constexpr DummyBitmask(Values value) noexcept : |
|
27 |
11 |
m_value(static_cast<underlying_type>(value)) |
|
28 |
11 |
{} |
|
29 |
|||
30 |
8 |
constexpr explicit DummyBitmask(underlying_type value) noexcept : |
|
31 |
8 |
m_value(value) |
|
32 |
8 |
{} |
|
33 |
|||
34 |
22 |
constexpr underlying_type getValue() const |
|
35 |
{ |
||
36 |
22 |
return m_value; |
|
37 |
} |
||
38 |
|||
39 |
private: |
||
40 |
underlying_type m_value; |
||
41 |
}; |
||
42 |
|||
43 |
7 |
inline bool operator==(const DummyBitmask& lhs, const DummyBitmask& rhs) |
|
44 |
{ |
||
45 |
7 |
return lhs.getValue() == rhs.getValue(); |
|
46 |
} |
||
47 |
|||
48 |
1 |
inline DummyBitmask operator|(DummyBitmask::Values lhs, DummyBitmask::Values rhs) |
|
49 |
{ |
||
50 |
return DummyBitmask(static_cast<DummyBitmask::underlying_type>(lhs) | |
||
51 |
1 |
static_cast<DummyBitmask::underlying_type>(rhs)); |
|
52 |
} |
||
53 |
|||
54 |
|||
55 |
3 |
inline DummyBitmask operator&(DummyBitmask::Values lhs, DummyBitmask::Values rhs) |
|
56 |
{ |
||
57 |
return DummyBitmask(static_cast<DummyBitmask::underlying_type>(lhs) & |
||
58 |
3 |
static_cast<DummyBitmask::underlying_type>(rhs)); |
|
59 |
} |
||
60 |
|||
61 |
4 |
inline DummyBitmask operator&(const DummyBitmask& lhs, const DummyBitmask& rhs) |
|
62 |
{ |
||
63 |
4 |
return DummyBitmask(lhs.getValue() & rhs.getValue()); |
|
64 |
} |
||
65 |
|||
66 |
} // namespace |
||
67 |
|||
68 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(BuiltInOperatorsTest, isSet) |
69 |
{ |
||
70 |
// randomly mix bitmask instances with DummyBitmask::Values enum values to check that all variants work |
||
71 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(isSet(DummyBitmask(DummyBitmask::Values::READ), DummyBitmask::Values::READ)); |
72 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(isSet(DummyBitmask::Values::CREATE, DummyBitmask::Values::READ)); |
73 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(isSet(DummyBitmask::Values::CREATE, DummyBitmask(DummyBitmask::Values::WRITE))); |
74 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(isSet(DummyBitmask::Values::CREATE, DummyBitmask::Values::CREATE)); |
75 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(isSet(DummyBitmask::Values::CREATE, DummyBitmask::Values::READ | DummyBitmask::Values::WRITE)); |
76 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_FALSE(isSet(DummyBitmask(DummyBitmask::Values::READ), DummyBitmask(DummyBitmask::Values::WRITE))); |
77 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_FALSE(isSet(DummyBitmask::Values::READ, DummyBitmask::Values::CREATE)); |
78 |
} |
||
79 |
|||
80 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(BuiltInOperatorsTest, numBits) |
81 |
{ |
||
82 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(0, numBits(0)); |
83 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(1, numBits(1)); |
84 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(1, numBits(2)); |
85 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(2, numBits(3)); |
86 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(2, numBits(4)); |
87 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(3, numBits(5)); |
88 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(3, numBits(6)); |
89 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(3, numBits(7)); |
90 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(3, numBits(8)); |
91 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(4, numBits(16)); |
92 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(5, numBits(32)); |
93 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(6, numBits(64)); |
94 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(7, numBits(128)); |
95 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(8, numBits(256)); |
96 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(9, numBits(512)); |
97 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(10, numBits(1024)); |
98 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(11, numBits(2048)); |
99 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(12, numBits(4096)); |
100 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(13, numBits(8192)); |
101 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(14, numBits(16384)); |
102 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(15, numBits(32768)); |
103 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(16, numBits(65536)); |
104 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(24, numBits(UINT64_C(1) << 24U)); |
105 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(25, numBits((UINT64_C(1) << 24U) + 1)); |
106 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(32, numBits(UINT64_C(1) << 32U)); |
107 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(33, numBits((UINT64_C(1) << 32U) + 1)); |
108 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(63, numBits(UINT64_C(1) << 63U)); |
109 |
✓✗✓✗ ✗✓✗✗ ✗✗✗✗ |
1 |
EXPECT_EQ(64, numBits((UINT64_C(1) << 63U) + 1)); |
110 |
1 |
} |
|
111 |
|||
112 |
} // namespace builtin |
||
113 |
|||
114 |
✓✗✓✗ |
2394 |
} // namespace zserio |
Generated by: GCOVR (Version 4.2) |