test/zserio/BitFieldUtilTest.cpp
Line | Count | Source |
1 | | #include "zserio/BitFieldUtil.h" |
2 | | #include "zserio/Types.h" |
3 | | #include "zserio/CppRuntimeException.h" |
4 | | |
5 | | #include "gtest/gtest.h" |
6 | | |
7 | | namespace zserio |
8 | | { |
9 | | |
10 | | TEST(BitFieldUtilTest, getBitFieldLowerBound) |
11 | 1 | { |
12 | 1 | EXPECT_THROW(getBitFieldLowerBound(0, true), CppRuntimeException); |
13 | 1 | EXPECT_THROW(getBitFieldLowerBound(65, true), CppRuntimeException); |
14 | | |
15 | 1 | EXPECT_THROW(getBitFieldLowerBound(0, false), CppRuntimeException); |
16 | 1 | EXPECT_THROW(getBitFieldLowerBound(65, false), CppRuntimeException); |
17 | | |
18 | 1 | EXPECT_EQ(INT64_C(-1), getBitFieldLowerBound(1, true)); |
19 | 1 | EXPECT_EQ(INT64_C(-2), getBitFieldLowerBound(2, true)); |
20 | 1 | EXPECT_EQ(INT64_C(-128), getBitFieldLowerBound(8, true)); |
21 | 1 | EXPECT_EQ(INT64_C(-32768), getBitFieldLowerBound(16, true)); |
22 | 1 | EXPECT_EQ(INT64_C(-2147483648), getBitFieldLowerBound(32, true)); |
23 | | |
24 | | // -1 to avoid gcc warning about 9223372036854775808 being so high that's it's treated as unsigned |
25 | 1 | EXPECT_EQ(INT64_C(-9223372036854775807)-1, getBitFieldLowerBound(64, true)); |
26 | | |
27 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldLowerBound(1, false)); |
28 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldLowerBound(2, false)); |
29 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldLowerBound(8, false)); |
30 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldLowerBound(16, false)); |
31 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldLowerBound(32, false)); |
32 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldLowerBound(64, false)); |
33 | 1 | } |
34 | | |
35 | | TEST(BitFieldUtilTest, getBitFieldUpperBound) |
36 | 1 | { |
37 | 1 | EXPECT_THROW(getBitFieldUpperBound(0, true), CppRuntimeException); |
38 | 1 | EXPECT_THROW(getBitFieldUpperBound(65, true), CppRuntimeException); |
39 | | |
40 | 1 | EXPECT_THROW(getBitFieldUpperBound(0, false), CppRuntimeException); |
41 | 1 | EXPECT_THROW(getBitFieldUpperBound(65, false), CppRuntimeException); |
42 | | |
43 | 1 | EXPECT_EQ(UINT64_C(0), getBitFieldUpperBound(1, true)); |
44 | 1 | EXPECT_EQ(UINT64_C(1), getBitFieldUpperBound(2, true)); |
45 | 1 | EXPECT_EQ(UINT64_C(127), getBitFieldUpperBound(8, true)); |
46 | 1 | EXPECT_EQ(UINT64_C(32767), getBitFieldUpperBound(16, true)); |
47 | 1 | EXPECT_EQ(UINT64_C(2147483647), getBitFieldUpperBound(32, true)); |
48 | 1 | EXPECT_EQ(UINT64_C(9223372036854775807), getBitFieldUpperBound(64, true)); |
49 | | |
50 | 1 | EXPECT_EQ(UINT64_C(1), getBitFieldUpperBound(1, false)); |
51 | 1 | EXPECT_EQ(UINT64_C(3), getBitFieldUpperBound(2, false)); |
52 | 1 | EXPECT_EQ(UINT64_C(255), getBitFieldUpperBound(8, false)); |
53 | 1 | EXPECT_EQ(UINT64_C(65535), getBitFieldUpperBound(16, false)); |
54 | 1 | EXPECT_EQ(UINT64_C(4294967295), getBitFieldUpperBound(32, false)); |
55 | 1 | EXPECT_EQ(UINT64_C(0xffffffffffffffff), getBitFieldUpperBound(64, false)); |
56 | 1 | } |
57 | | |
58 | | } // namespace zserio |