mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-11-03 00:23:28 +01:00
Fixed #521.
Introduced new object type `FLOAT32` and `FLOAT64`. `FLOAT64` is equivalent to `FLOAT`. The both internal expressions are f64(double).
This commit is contained in:
@@ -225,10 +225,7 @@ TEST(MSGPACKC, simple_buffer_float)
|
||||
msgpack_unpack_return ret =
|
||||
msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj);
|
||||
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
|
||||
EXPECT_EQ(MSGPACK_OBJECT_FLOAT, obj.type);
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, obj.type);
|
||||
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
|
||||
EXPECT_EQ(MSGPACK_OBJECT_FLOAT32, obj.type);
|
||||
if (isnan(val)) {
|
||||
EXPECT_TRUE(isnan(obj.via.f64));
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
@@ -290,6 +287,7 @@ TEST(MSGPACKC, simple_buffer_double)
|
||||
msgpack_unpack_return ret =
|
||||
msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj);
|
||||
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
|
||||
EXPECT_EQ(MSGPACK_OBJECT_FLOAT64, obj.type);
|
||||
EXPECT_EQ(MSGPACK_OBJECT_FLOAT, obj.type);
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, obj.type);
|
||||
|
||||
@@ -277,12 +277,17 @@ TEST(object, construct_primitive)
|
||||
EXPECT_EQ(msgpack::type::NEGATIVE_INTEGER, obj_int.type);
|
||||
EXPECT_EQ(-1, obj_int.via.i64);
|
||||
|
||||
msgpack::object obj_float(1.2);
|
||||
EXPECT_EQ(msgpack::type::FLOAT, obj_float.type);
|
||||
EXPECT_EQ(1.2, obj_float.via.f64);
|
||||
msgpack::object obj_float(1.2F);
|
||||
EXPECT_EQ(msgpack::type::FLOAT32, obj_float.type);
|
||||
EXPECT_EQ(1.2F, obj_float.via.f64);
|
||||
|
||||
msgpack::object obj_double(1.2);
|
||||
EXPECT_EQ(msgpack::type::FLOAT64, obj_double.type);
|
||||
EXPECT_EQ(msgpack::type::FLOAT, obj_double.type);
|
||||
EXPECT_EQ(1.2, obj_double.via.f64);
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
EXPECT_EQ(msgpack::type::DOUBLE, obj_float.type);
|
||||
EXPECT_EQ(1.2, obj_float.via.dec);
|
||||
EXPECT_EQ(msgpack::type::DOUBLE, obj_double.type);
|
||||
EXPECT_EQ(1.2, obj_double.via.dec);
|
||||
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
|
||||
|
||||
msgpack::object obj_bool(true);
|
||||
@@ -418,3 +423,25 @@ TEST(object, clone_map)
|
||||
EXPECT_EQ(h.get(), obj);
|
||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||
}
|
||||
|
||||
TEST(object, pack_float)
|
||||
{
|
||||
msgpack::object obj(1.2F);
|
||||
std::stringstream ss1;
|
||||
msgpack::pack(ss1, obj);
|
||||
std::stringstream ss2;
|
||||
msgpack::pack(ss2, 1.2F);
|
||||
EXPECT_EQ(5, ss1.str().size());
|
||||
EXPECT_EQ(ss1.str(), ss2.str());
|
||||
}
|
||||
|
||||
TEST(object, pack_double)
|
||||
{
|
||||
msgpack::object obj(1.2);
|
||||
std::stringstream ss1;
|
||||
msgpack::pack(ss1, obj);
|
||||
std::stringstream ss2;
|
||||
msgpack::pack(ss2, 1.2);
|
||||
EXPECT_EQ(9, ss1.str().size());
|
||||
EXPECT_EQ(ss1.str(), ss2.str());
|
||||
}
|
||||
|
||||
@@ -176,6 +176,7 @@ TEST(object_with_zone, float)
|
||||
float v = 1.23f;
|
||||
msgpack::zone z;
|
||||
msgpack::object obj(v, z);
|
||||
EXPECT_EQ(obj.type, msgpack::type::FLOAT32);
|
||||
EXPECT_TRUE(fabs(obj.as<float>() - v) <= kEPS);
|
||||
v = 4.56f;
|
||||
EXPECT_TRUE(fabs(obj.as<float>() - static_cast<float>(1.23)) <= kEPS);
|
||||
@@ -187,6 +188,7 @@ TEST(object_with_zone, double)
|
||||
double v = 1.23;
|
||||
msgpack::zone z;
|
||||
msgpack::object obj(v, z);
|
||||
EXPECT_EQ(obj.type, msgpack::type::FLOAT64);
|
||||
EXPECT_TRUE(fabs(obj.as<double>() - v) <= kEPS);
|
||||
v = 4.56;
|
||||
EXPECT_TRUE(fabs(obj.as<double>() - 1.23) <= kEPS);
|
||||
|
||||
Reference in New Issue
Block a user