Introduced new object type `FLOAT32` and `FLOAT64`.
`FLOAT64` is equivalent to `FLOAT`.
The both internal expressions are f64(double).
This commit is contained in:
Takatoshi Kondo
2016-10-11 21:39:55 +09:00
parent 1df97bc37b
commit ccc9ac5538
12 changed files with 82 additions and 30 deletions

View File

@@ -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);

View File

@@ -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());
}

View File

@@ -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);