Coverage Report

Created: 2024-07-18 11:41

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