Coverage Report

Created: 2023-12-13 14:58

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