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