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