1#include <msgpack.hpp>
2#include <sstream>
3#include <iterator>
4#include <gtest/gtest.h>
5
6#ifdef HAVE_CONFIG_H
7#include "config.h"
8#endif
9
10#if defined(MSGPACK_USE_BOOST)
11#if (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
12
13TEST(MSGPACK_BOOST, pack_convert_string_ref)
14{
15    std::stringstream ss;
16    std::string s = "ABC";
17    boost::string_ref val1(s);
18
19    msgpack::pack(ss, val1);
20
21    msgpack::unpacked ret;
22    msgpack::unpack(ret, ss.str().data(), ss.str().size());
23    boost::string_ref val2 = ret.get().as<boost::string_ref>();
24    EXPECT_TRUE(val1 == val2);
25}
26
27TEST(MSGPACK_BOOST, object_strinf_ref)
28{
29    std::string s = "ABC";
30    boost::string_ref val1(s);
31    msgpack::object obj(val1);
32    boost::string_ref val2 = obj.as<boost::string_ref>();
33    EXPECT_TRUE(val1 == val2);
34}
35
36TEST(MSGPACK_BOOST, object_with_zone_string_ref)
37{
38    msgpack::zone z;
39    std::string s = "ABC";
40    boost::string_ref val1(s);
41    msgpack::object obj(val1, z);
42    boost::string_ref val2 = obj.as<boost::string_ref>();
43    EXPECT_TRUE(val1 == val2);
44}
45
46#endif // (BOOST_VERSION / 100000) >= 1 && ((BOOST_VERSION / 100) % 1000) >= 53
47#endif // defined(MSGPACK_USE_BOOST)
48