Added complex type support.

This commit is contained in:
Takatoshi Kondo
2020-06-10 11:36:04 +09:00
parent 6b197e7328
commit 3b80c45725
7 changed files with 167 additions and 1 deletions

View File

@@ -372,6 +372,36 @@ TEST(MSGPACK_STL, simple_buffer_pair)
}
}
TEST(MSGPACK_STL, simple_buffer_complex_float)
{
complex<float> val1 = complex<float>(1.23F, 4.56F);
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, val1);
msgpack::object_handle oh =
msgpack::unpack(sbuf.data(), sbuf.size());
complex<float> val2 = oh.get().as<complex<float> >();
EXPECT_EQ(val1, val2);
complex<float> val3;
oh.get().convert(val3);
EXPECT_EQ(val1, val3);
}
TEST(MSGPACK_STL, simple_buffer_complex_double)
{
complex<double> val1 = complex<double>(1.23, 4.56);
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, val1);
msgpack::object_handle oh =
msgpack::unpack(sbuf.data(), sbuf.size());
complex<double> val2 = oh.get().as<complex<double> >();
EXPECT_EQ(val1, val2);
complex<double> val3;
oh.get().convert(val3);
EXPECT_EQ(val1, val3);
}
TEST(MSGPACK_STL, simple_buffer_multimap)
{
typedef multimap<int, int, test::less<int>, test::allocator<std::pair<const int, int> > > type;

View File

@@ -365,6 +365,33 @@ TEST(object_with_zone, char_ptr)
EXPECT_EQ(obj.as<string>()[0], 'a');
}
// complex
TEST(object_with_zone, complex_float)
{
typedef std::complex<float> test_t;
test_t v(1.23F, 4.56F);
msgpack::zone z;
msgpack::object obj(v, z);
float r = v.real();
EXPECT_TRUE(fabs(obj.as<test_t>().real() - v.real()) <= kEPS);
EXPECT_TRUE(fabs(obj.as<test_t>().imag() - v.imag()) <= kEPS);
v.real(7.89F);
EXPECT_TRUE(fabs(obj.as<test_t>().real() - r) <= kEPS);
}
TEST(object_with_zone, complex_double)
{
typedef std::complex<double> test_t;
test_t v(1.23, 4.56);
msgpack::zone z;
msgpack::object obj(v, z);
double r = v.real();
EXPECT_TRUE(fabs(obj.as<test_t>().real() - v.real()) <= kEPS);
EXPECT_TRUE(fabs(obj.as<test_t>().imag() - v.imag()) <= kEPS);
v.real(7.89);
EXPECT_TRUE(fabs(obj.as<test_t>().real() - r) <= kEPS);
}
#if MSGPACK_DEFAULT_API_VERSION == 1
TEST(object_without_zone, char_ptr)