@@ -154,6 +154,8 @@ BOOST_AUTO_TEST_CASE(simple_buffer_float)
154
154
v.push_back (-0.0 );
155
155
v.push_back (1.0 );
156
156
v.push_back (-1.0 );
157
+ v.push_back (1 .1f );
158
+ v.push_back (-1 .1f );
157
159
v.push_back (numeric_limits<float >::min ());
158
160
v.push_back (numeric_limits<float >::max ());
159
161
v.push_back (nanf (" tag" ));
@@ -186,6 +188,12 @@ BOOST_AUTO_TEST_CASE(simple_buffer_float)
186
188
BOOST_CHECK (std::isinf (val2));
187
189
else
188
190
BOOST_CHECK (fabs (val2 - val1) <= kEPS );
191
+
192
+ // check for compact storing of float
193
+ if (val1 == val1 && val1 >= float (std::numeric_limits<int64_t >::min ()) && val1 <= float (std::numeric_limits<int64_t >::max ()) && val1 == float (int64_t (val1)))
194
+ BOOST_REQUIRE_EQUAL (sbuf.size (),1 );
195
+ else
196
+ BOOST_REQUIRE_EQUAL (sbuf.data ()[0 ],char (0xca ));
189
197
}
190
198
}
191
199
@@ -236,6 +244,8 @@ BOOST_AUTO_TEST_CASE(simple_buffer_double)
236
244
v.push_back (-0.0 );
237
245
v.push_back (1.0 );
238
246
v.push_back (-1.0 );
247
+ v.push_back (1.1 );
248
+ v.push_back (-1.1 );
239
249
v.push_back (numeric_limits<double >::min ());
240
250
v.push_back (numeric_limits<double >::max ());
241
251
v.push_back (nanf (" tag" ));
@@ -272,6 +282,12 @@ BOOST_AUTO_TEST_CASE(simple_buffer_double)
272
282
BOOST_CHECK (std::isinf (val2));
273
283
else
274
284
BOOST_CHECK (fabs (val2 - val1) <= kEPS );
285
+
286
+ // check for compact storing of double
287
+ if (val1 == val1 && val1 >= double (std::numeric_limits<int64_t >::min ()) && val1 <= double (std::numeric_limits<int64_t >::max ()) && val1 == double (int64_t (val1)))
288
+ BOOST_REQUIRE_EQUAL (sbuf.size (),1 );
289
+ else
290
+ BOOST_REQUIRE_EQUAL (uint8_t (sbuf.data ()[0 ]),uint8_t (0xcb ));
275
291
}
276
292
}
277
293
0 commit comments