test/zserio/BitSizeOfCalculatorTest.cpp
Line | Count | Source |
1 | | #include "gtest/gtest.h" |
2 | | #include "zserio/BitSizeOfCalculator.h" |
3 | | #include "zserio/CppRuntimeException.h" |
4 | | |
5 | | namespace zserio |
6 | | { |
7 | | |
8 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarInt16) |
9 | 1 | { |
10 | 1 | EXPECT_EQ(8, bitSizeOfVarInt16(0)); |
11 | | |
12 | 1 | EXPECT_EQ(8, bitSizeOfVarInt16(static_cast<int16_t>(1U << (0U)))); |
13 | 1 | EXPECT_EQ(8, bitSizeOfVarInt16(-static_cast<int16_t>(1U << (0U)))); |
14 | 1 | EXPECT_EQ(8, bitSizeOfVarInt16(static_cast<int16_t>((1U << (6U)) - 1))); |
15 | 1 | EXPECT_EQ(8, bitSizeOfVarInt16(-static_cast<int16_t>((1U << (6U)) - 1))); |
16 | | |
17 | 1 | EXPECT_EQ(16, bitSizeOfVarInt16(static_cast<int16_t>(1U << (6U)))); |
18 | 1 | EXPECT_EQ(16, bitSizeOfVarInt16(-static_cast<int16_t>(1U << (6U)))); |
19 | 1 | EXPECT_EQ(16, bitSizeOfVarInt16(static_cast<int16_t>((1U << (6U + 8)) - 1))); |
20 | 1 | EXPECT_EQ(16, bitSizeOfVarInt16(-static_cast<int16_t>((1U << (6U + 8)) - 1))); |
21 | | |
22 | 1 | const int16_t outOfRangeValue = static_cast<int16_t>(1U << (6U + 8)); |
23 | 1 | ASSERT_THROW(bitSizeOfVarInt16(outOfRangeValue), CppRuntimeException); |
24 | 1 | } |
25 | | |
26 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarInt32) |
27 | 1 | { |
28 | 1 | EXPECT_EQ(8, bitSizeOfVarInt32(0)); |
29 | | |
30 | 1 | EXPECT_EQ(8, bitSizeOfVarInt32(static_cast<int32_t>(1U << (0U)))); |
31 | 1 | EXPECT_EQ(8, bitSizeOfVarInt32(-static_cast<int32_t>(1U << (0U)))); |
32 | 1 | EXPECT_EQ(8, bitSizeOfVarInt32(static_cast<int32_t>((1U << (6U)) - 1))); |
33 | 1 | EXPECT_EQ(8, bitSizeOfVarInt32(-static_cast<int32_t>(((1U << (6U)) - 1)))); |
34 | | |
35 | 1 | EXPECT_EQ(16, bitSizeOfVarInt32(static_cast<int32_t>(1U << (6U)))); |
36 | 1 | EXPECT_EQ(16, bitSizeOfVarInt32(-static_cast<int32_t>(1U << (6U)))); |
37 | 1 | EXPECT_EQ(16, bitSizeOfVarInt32(static_cast<int32_t>((1U << (6U + 7)) - 1))); |
38 | 1 | EXPECT_EQ(16, bitSizeOfVarInt32(-static_cast<int32_t>(((1U << (6U + 7)) - 1)))); |
39 | | |
40 | 1 | EXPECT_EQ(24, bitSizeOfVarInt32(static_cast<int32_t>(1U << (6U + 7)))); |
41 | 1 | EXPECT_EQ(24, bitSizeOfVarInt32(-static_cast<int32_t>(1U << (6U + 7)))); |
42 | 1 | EXPECT_EQ(24, bitSizeOfVarInt32(static_cast<int32_t>((1U << (6U + 7 + 7)) - 1))); |
43 | 1 | EXPECT_EQ(24, bitSizeOfVarInt32(-static_cast<int32_t>((1U << (6U + 7 + 7)) - 1))); |
44 | | |
45 | 1 | EXPECT_EQ(32, bitSizeOfVarInt32(static_cast<int32_t>(1U << (6U + 7 + 7)))); |
46 | 1 | EXPECT_EQ(32, bitSizeOfVarInt32(-static_cast<int32_t>(1U << (6U + 7 + 7)))); |
47 | 1 | EXPECT_EQ(32, bitSizeOfVarInt32(static_cast<int32_t>((1U << (6U + 7 + 7 + 8)) - 1))); |
48 | 1 | EXPECT_EQ(32, bitSizeOfVarInt32(-static_cast<int32_t>((1U << (6U + 7 + 7 + 8)) - 1))); |
49 | | |
50 | 1 | const int32_t outOfRangeValue = static_cast<int32_t>(1U << (6U + 7 + 7 + 8)); |
51 | 1 | ASSERT_THROW(bitSizeOfVarInt32(outOfRangeValue), CppRuntimeException); |
52 | 1 | } |
53 | | |
54 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarInt64) |
55 | 1 | { |
56 | 1 | EXPECT_EQ(8, bitSizeOfVarInt64(0)); |
57 | | |
58 | 1 | EXPECT_EQ(8, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (0U)))); |
59 | 1 | EXPECT_EQ(8, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (0U)))); |
60 | 1 | EXPECT_EQ(8, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U)) - 1))); |
61 | 1 | EXPECT_EQ(8, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U)) - 1))); |
62 | | |
63 | 1 | EXPECT_EQ(16, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U)))); |
64 | 1 | EXPECT_EQ(16, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U)))); |
65 | 1 | EXPECT_EQ(16, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7)) - 1))); |
66 | 1 | EXPECT_EQ(16, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7)) - 1))); |
67 | | |
68 | 1 | EXPECT_EQ(24, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U + 7)))); |
69 | 1 | EXPECT_EQ(24, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U + 7)))); |
70 | 1 | EXPECT_EQ(24, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7)) - 1))); |
71 | 1 | EXPECT_EQ(24, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7)) - 1))); |
72 | | |
73 | 1 | EXPECT_EQ(32, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7)))); |
74 | 1 | EXPECT_EQ(32, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7)))); |
75 | 1 | EXPECT_EQ(32, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7)) - 1))); |
76 | 1 | EXPECT_EQ(32, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7)) - 1))); |
77 | | |
78 | 1 | EXPECT_EQ(40, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7)))); |
79 | 1 | EXPECT_EQ(40, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7)))); |
80 | 1 | EXPECT_EQ(40, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7)) - 1))); |
81 | 1 | EXPECT_EQ(40, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7)) - 1))); |
82 | | |
83 | 1 | EXPECT_EQ(48, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7)))); |
84 | 1 | EXPECT_EQ(48, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7)))); |
85 | 1 | EXPECT_EQ(48, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7)) - 1))); |
86 | 1 | EXPECT_EQ(48, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7)) - 1))); |
87 | | |
88 | 1 | EXPECT_EQ(56, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7)))); |
89 | 1 | EXPECT_EQ(56, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7)))); |
90 | 1 | EXPECT_EQ(56, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7)) - 1))); |
91 | 1 | EXPECT_EQ(56, bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7)) - 1))); |
92 | | |
93 | 1 | EXPECT_EQ(64, bitSizeOfVarInt64(static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7)))); |
94 | 1 | EXPECT_EQ(64, bitSizeOfVarInt64(-static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7)))); |
95 | 1 | EXPECT_EQ( |
96 | 1 | 64, bitSizeOfVarInt64(static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7 + 8)) - 1))); |
97 | 1 | EXPECT_EQ(64, |
98 | 1 | bitSizeOfVarInt64(-static_cast<int64_t>((UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7 + 8)) - 1))); |
99 | | |
100 | 1 | const int64_t outOfRangeValue = static_cast<int64_t>(UINT64_C(1) << (6U + 7 + 7 + 7 + 7 + 7 + 7 + 8)); |
101 | 1 | ASSERT_THROW(bitSizeOfVarInt64(outOfRangeValue), CppRuntimeException); |
102 | 1 | } |
103 | | |
104 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarUInt16) |
105 | 1 | { |
106 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt16(0)); |
107 | | |
108 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt16(1U << (0U))); |
109 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt16((1U << (7U)) - 1)); |
110 | | |
111 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt16(1U << (7U))); |
112 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt16((1U << (7U + 8)) - 1)); |
113 | | |
114 | 1 | const uint16_t outOfRangeValue = 1U << (7U + 8); |
115 | 1 | ASSERT_THROW(bitSizeOfVarUInt16(outOfRangeValue), CppRuntimeException); |
116 | 1 | } |
117 | | |
118 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarUInt32) |
119 | 1 | { |
120 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt32(0)); |
121 | | |
122 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt32(1U << (0U))); |
123 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt32((1U << (7U)) - 1)); |
124 | | |
125 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt32(1U << (7U))); |
126 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt32((1U << (7U + 7)) - 1)); |
127 | | |
128 | 1 | EXPECT_EQ(24, bitSizeOfVarUInt32(1U << (7U + 7))); |
129 | 1 | EXPECT_EQ(24, bitSizeOfVarUInt32((1U << (7U + 7 + 7)) - 1)); |
130 | | |
131 | 1 | EXPECT_EQ(32, bitSizeOfVarUInt32(1U << (7U + 7 + 7))); |
132 | 1 | EXPECT_EQ(32, bitSizeOfVarUInt32((1U << (7U + 7 + 7 + 8)) - 1)); |
133 | | |
134 | 1 | const uint32_t outOfRangeValue = 1U << (7U + 7 + 7 + 8); |
135 | 1 | ASSERT_THROW(bitSizeOfVarUInt32(outOfRangeValue), CppRuntimeException); |
136 | 1 | } |
137 | | |
138 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarUInt64) |
139 | 1 | { |
140 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt64(0)); |
141 | | |
142 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt64(UINT64_C(1) << (0U))); |
143 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt64((UINT64_C(1) << (7U)) - 1)); |
144 | | |
145 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt64(UINT64_C(1) << (7U))); |
146 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7)) - 1)); |
147 | | |
148 | 1 | EXPECT_EQ(24, bitSizeOfVarUInt64(UINT64_C(1) << (7U + 7))); |
149 | 1 | EXPECT_EQ(24, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7 + 7)) - 1)); |
150 | | |
151 | 1 | EXPECT_EQ(32, bitSizeOfVarUInt64(UINT64_C(1) << (7U + 7 + 7))); |
152 | 1 | EXPECT_EQ(32, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7 + 7 + 7)) - 1)); |
153 | | |
154 | 1 | EXPECT_EQ(40, bitSizeOfVarUInt64(UINT64_C(1) << (7U + 7 + 7 + 7))); |
155 | 1 | EXPECT_EQ(40, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7 + 7 + 7 + 7)) - 1)); |
156 | | |
157 | 1 | EXPECT_EQ(48, bitSizeOfVarUInt64(UINT64_C(1) << (7U + 7 + 7 + 7 + 7))); |
158 | 1 | EXPECT_EQ(48, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7 + 7 + 7 + 7 + 7)) - 1)); |
159 | | |
160 | 1 | EXPECT_EQ(56, bitSizeOfVarUInt64(UINT64_C(1) << (7U + 7 + 7 + 7 + 7 + 7))); |
161 | 1 | EXPECT_EQ(56, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7 + 7 + 7 + 7 + 7 + 7)) - 1)); |
162 | | |
163 | 1 | EXPECT_EQ(64, bitSizeOfVarUInt64(UINT64_C(1) << (7U + 7 + 7 + 7 + 7 + 7 + 7))); |
164 | 1 | EXPECT_EQ(64, bitSizeOfVarUInt64((UINT64_C(1) << (7U + 7 + 7 + 7 + 7 + 7 + 7 + 8)) - 1)); |
165 | | |
166 | 1 | const uint64_t outOfRangeValue = UINT64_C(1) << (7U + 7 + 7 + 7 + 7 + 7 + 7 + 8); |
167 | 1 | ASSERT_THROW(bitSizeOfVarUInt64(outOfRangeValue), CppRuntimeException); |
168 | 1 | } |
169 | | |
170 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarInt) |
171 | 1 | { |
172 | 1 | EXPECT_EQ(8, bitSizeOfVarInt(INT64_C(0))); |
173 | 1 | EXPECT_EQ(8, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 6U) + 1)); |
174 | 1 | EXPECT_EQ(8, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 6U) - 1)); |
175 | 1 | EXPECT_EQ(16, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 6U))); |
176 | 1 | EXPECT_EQ(16, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 6U))); |
177 | 1 | EXPECT_EQ(16, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 13U) + 1)); |
178 | 1 | EXPECT_EQ(16, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 13U) - 1)); |
179 | 1 | EXPECT_EQ(24, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 13U))); |
180 | 1 | EXPECT_EQ(24, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 13U))); |
181 | 1 | EXPECT_EQ(24, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 20U) + 1)); |
182 | 1 | EXPECT_EQ(24, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 20U) - 1)); |
183 | 1 | EXPECT_EQ(32, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 20U))); |
184 | 1 | EXPECT_EQ(32, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 20U))); |
185 | 1 | EXPECT_EQ(32, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 27U) + 1)); |
186 | 1 | EXPECT_EQ(32, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 27U) - 1)); |
187 | 1 | EXPECT_EQ(40, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 27U))); |
188 | 1 | EXPECT_EQ(40, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 27U))); |
189 | 1 | EXPECT_EQ(40, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 34U) + 1)); |
190 | 1 | EXPECT_EQ(40, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 34U) - 1)); |
191 | 1 | EXPECT_EQ(48, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 34U))); |
192 | 1 | EXPECT_EQ(48, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 34U))); |
193 | 1 | EXPECT_EQ(48, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 41U) + 1)); |
194 | 1 | EXPECT_EQ(48, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 41U) - 1)); |
195 | 1 | EXPECT_EQ(56, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 41U))); |
196 | 1 | EXPECT_EQ(56, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 41U))); |
197 | 1 | EXPECT_EQ(56, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 48U) + 1)); |
198 | 1 | EXPECT_EQ(56, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 48U) - 1)); |
199 | 1 | EXPECT_EQ(64, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 48U))); |
200 | 1 | EXPECT_EQ(64, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 48U))); |
201 | 1 | EXPECT_EQ(64, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 55U) + 1)); |
202 | 1 | EXPECT_EQ(64, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 55U) - 1)); |
203 | 1 | EXPECT_EQ(72, bitSizeOfVarInt(-static_cast<int64_t>(UINT64_C(1) << 55U))); |
204 | 1 | EXPECT_EQ(72, bitSizeOfVarInt(static_cast<int64_t>(UINT64_C(1) << 55U))); |
205 | 1 | EXPECT_EQ(72, bitSizeOfVarInt(INT64_MIN + 1)); |
206 | 1 | EXPECT_EQ(72, bitSizeOfVarInt(INT64_MAX)); |
207 | | |
208 | | // special case, INT64_MIN is stored as -0 |
209 | 1 | EXPECT_EQ(8, bitSizeOfVarInt(INT64_MIN)); |
210 | 1 | } |
211 | | |
212 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarUInt) |
213 | 1 | { |
214 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt(UINT64_C(0))); |
215 | 1 | EXPECT_EQ(8, bitSizeOfVarUInt((UINT64_C(1) << 7U) - 1)); |
216 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt((UINT64_C(1) << 7U))); |
217 | 1 | EXPECT_EQ(16, bitSizeOfVarUInt((UINT64_C(1) << 14U) - 1)); |
218 | 1 | EXPECT_EQ(24, bitSizeOfVarUInt((UINT64_C(1) << 14U))); |
219 | 1 | EXPECT_EQ(24, bitSizeOfVarUInt((UINT64_C(1) << 21U) - 1)); |
220 | 1 | EXPECT_EQ(32, bitSizeOfVarUInt((UINT64_C(1) << 21U))); |
221 | 1 | EXPECT_EQ(32, bitSizeOfVarUInt((UINT64_C(1) << 28U) - 1)); |
222 | 1 | EXPECT_EQ(40, bitSizeOfVarUInt((UINT64_C(1) << 28U))); |
223 | 1 | EXPECT_EQ(40, bitSizeOfVarUInt((UINT64_C(1) << 35U) - 1)); |
224 | 1 | EXPECT_EQ(48, bitSizeOfVarUInt((UINT64_C(1) << 35U))); |
225 | 1 | EXPECT_EQ(48, bitSizeOfVarUInt((UINT64_C(1) << 42U) - 1)); |
226 | 1 | EXPECT_EQ(56, bitSizeOfVarUInt((UINT64_C(1) << 42U))); |
227 | 1 | EXPECT_EQ(56, bitSizeOfVarUInt((UINT64_C(1) << 49U) - 1)); |
228 | 1 | EXPECT_EQ(64, bitSizeOfVarUInt((UINT64_C(1) << 49U))); |
229 | 1 | EXPECT_EQ(64, bitSizeOfVarUInt((UINT64_C(1) << 56U) - 1)); |
230 | 1 | EXPECT_EQ(72, bitSizeOfVarUInt((UINT64_C(1) << 56U))); |
231 | 1 | EXPECT_EQ(72, bitSizeOfVarUInt(UINT64_MAX)); |
232 | 1 | } |
233 | | |
234 | | TEST(BitSizeOfCalculatorTest, bitSizeOfVarSize) |
235 | 1 | { |
236 | 1 | EXPECT_EQ(8, bitSizeOfVarSize(0)); |
237 | | |
238 | 1 | EXPECT_EQ(8, bitSizeOfVarSize(1U << (0U))); |
239 | 1 | EXPECT_EQ(8, bitSizeOfVarSize((1U << (7U)) - 1)); |
240 | | |
241 | 1 | EXPECT_EQ(16, bitSizeOfVarSize(1U << (7U))); |
242 | 1 | EXPECT_EQ(16, bitSizeOfVarSize((1U << (7U + 7)) - 1)); |
243 | | |
244 | 1 | EXPECT_EQ(24, bitSizeOfVarSize(1U << (7U + 7))); |
245 | 1 | EXPECT_EQ(24, bitSizeOfVarSize((1U << (7U + 7 + 7)) - 1)); |
246 | | |
247 | 1 | EXPECT_EQ(32, bitSizeOfVarSize(1U << (7U + 7 + 7))); |
248 | 1 | EXPECT_EQ(32, bitSizeOfVarSize((1U << (7U + 7 + 7 + 7)) - 1)); |
249 | | |
250 | 1 | EXPECT_EQ(40, bitSizeOfVarSize(1U << (7U + 7 + 7 + 7))); |
251 | 1 | EXPECT_EQ(40, bitSizeOfVarSize((1U << (2U + 7 + 7 + 7 + 8)) - 1)); |
252 | | |
253 | 1 | const uint32_t outOfRangeValue = 1U << (2U + 7 + 7 + 7 + 8); |
254 | 1 | ASSERT_THROW(bitSizeOfVarSize(outOfRangeValue), CppRuntimeException); |
255 | 1 | } |
256 | | |
257 | | TEST(BitSizeOfCalculatorTest, bitSizeOfString) |
258 | 1 | { |
259 | 1 | EXPECT_EQ((1 + 1) * 8, bitSizeOfString(std::string("T"))); |
260 | 1 | EXPECT_EQ((1 + 4) * 8, bitSizeOfString(std::string("Test"))); |
261 | | |
262 | 1 | const size_t testStringLength = static_cast<size_t>(1U << 7U); |
263 | 1 | std::string testString(testStringLength, '\xAB'); |
264 | 1 | EXPECT_EQ((2 + testStringLength) * 8, bitSizeOfString(testString)); |
265 | 1 | } |
266 | | |
267 | | TEST(BitSizeOfCalculatorTest, bitSizeOfBitBuffer) |
268 | 1 | { |
269 | 1 | EXPECT_EQ(8 + 8, bitSizeOfBitBuffer(BitBuffer(std::vector<uint8_t>({0xAB, 0xC0}), 8))); |
270 | 1 | EXPECT_EQ(8 + 11, bitSizeOfBitBuffer(BitBuffer(std::vector<uint8_t>({0xAB, 0xC0}), 11))); |
271 | 1 | EXPECT_EQ(8 + 16, bitSizeOfBitBuffer(BitBuffer(std::vector<uint8_t>({0xAB, 0xCD}), 16))); |
272 | 1 | EXPECT_EQ(8 + 16, bitSizeOfBitBuffer(BitBuffer(std::vector<uint8_t>({0xAB, 0xCD})))); |
273 | | |
274 | 1 | EXPECT_EQ(8 + 15 * 8 + 7, bitSizeOfBitBuffer(BitBuffer(std::vector<uint8_t>(16), 127))); |
275 | 1 | EXPECT_EQ(16 + 16 * 8, bitSizeOfBitBuffer(BitBuffer(std::vector<uint8_t>(16), 128))); |
276 | 1 | } |
277 | | |
278 | | } // namespace zserio |