mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-06-03 21:37:17 +02:00
Merge pull request #268 from redboltz/support_boost
Added the Boost.Optional adaptor.
This commit is contained in:
commit
cb9114e31c
29
.travis.yml
29
.travis.yml
@ -19,16 +19,25 @@ install:
|
|||||||
- sudo apt-get install -y lib32z1-dev
|
- sudo apt-get install -y lib32z1-dev
|
||||||
- sudo apt-get install -y lib32stdc++6
|
- sudo apt-get install -y lib32stdc++6
|
||||||
- wget https://googletest.googlecode.com/files/gtest-1.7.0.zip
|
- wget https://googletest.googlecode.com/files/gtest-1.7.0.zip
|
||||||
- unzip gtest-1.7.0.zip && cd gtest-1.7.0 && sudo cp -r include/gtest /usr/local/include && g++ src/gtest-all.cc -I. -Iinclude -c && g++ src/gtest_main.cc -I. -Iinclude -c && ar -rv libgtest.a gtest-all.o && ar -rv libgtest_main.a gtest_main.o && sudo mv *.a /usr/local/lib && g++ -m32 src/gtest-all.cc -I. -Iinclude -c && g++ -m32 src/gtest_main.cc -I. -Iinclude -c && ar -rv libgtest.a gtest-all.o && ar -rv libgtest_main.a gtest_main.o && sudo mkdir /usr/local/lib32 && sudo mv *.a /usr/local/lib32 && cd ..
|
- wget http://sourceforge.net/projects/boost/files/boost/1.57.0/
|
||||||
|
- unzip -q gtest-1.7.0.zip && cd gtest-1.7.0 && sudo cp -r include/gtest /usr/local/include && g++ src/gtest-all.cc -I. -Iinclude -c && g++ src/gtest_main.cc -I. -Iinclude -c && ar -rv libgtest.a gtest-all.o && ar -rv libgtest_main.a gtest_main.o && sudo mv *.a /usr/local/lib && g++ -m32 src/gtest-all.cc -I. -Iinclude -c && g++ -m32 src/gtest_main.cc -I. -Iinclude -c && ar -rv libgtest.a gtest-all.o && ar -rv libgtest_main.a gtest_main.o && sudo mkdir /usr/local/lib32 && sudo mv *.a /usr/local/lib32 && cd .. && wget http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.zip && unzip -q boost_1_57_0.zip && sudo mkdir /usr/local/boost && sudo cp -r boost_1_57_0/boost /usr/local/boost/
|
||||||
env:
|
env:
|
||||||
- ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
- ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST=""
|
||||||
- ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
- ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST=""
|
||||||
- ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
- ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST=""
|
||||||
- ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
- ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32"
|
- ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST=""
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST=""
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST=""
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST=""
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost"
|
||||||
|
- ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST=""
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- git clean -xdf && CMAKE_LIBRARY_PATH=${LIBPATH} ${ACTION} ${VERSION} ${ARCH}
|
- git clean -xdf && CMAKE_LIBRARY_PATH=${LIBPATH} ${ACTION} ${VERSION} ${ARCH} ${BOOST} ${BOOST_INC}
|
||||||
|
@ -17,6 +17,7 @@ SET (includedir "\${prefix}/include")
|
|||||||
|
|
||||||
OPTION (MSGPACK_CXX11 "Using c++11 compiler" OFF)
|
OPTION (MSGPACK_CXX11 "Using c++11 compiler" OFF)
|
||||||
OPTION (MSGPACK_32BIT "32bit compile" OFF)
|
OPTION (MSGPACK_32BIT "32bit compile" OFF)
|
||||||
|
OPTION (MSGPACK_BOOST "Using boost libraries" OFF)
|
||||||
|
|
||||||
IF (MSGPACK_CXX11)
|
IF (MSGPACK_CXX11)
|
||||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
@ -40,6 +41,10 @@ IF (MSGPACK_32BIT)
|
|||||||
ENDIF ()
|
ENDIF ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
|
IF (MSGPACK_BOOST)
|
||||||
|
SET (CMAKE_CXX_FLAGS "-DMSGPACK_USE_BOOST ${CMAKE_CXX_FLAGS}")
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
FIND_PACKAGE (GTest)
|
FIND_PACKAGE (GTest)
|
||||||
FIND_PACKAGE (ZLIB)
|
FIND_PACKAGE (ZLIB)
|
||||||
FIND_PACKAGE (Threads)
|
FIND_PACKAGE (Threads)
|
||||||
@ -100,6 +105,7 @@ IF (MSGPACK_ENABLE_CXX)
|
|||||||
include/msgpack.hpp
|
include/msgpack.hpp
|
||||||
include/msgpack/adaptor/adaptor_base.hpp
|
include/msgpack/adaptor/adaptor_base.hpp
|
||||||
include/msgpack/adaptor/bool.hpp
|
include/msgpack/adaptor/bool.hpp
|
||||||
|
include/msgpack/adaptor/boost/optional.hpp
|
||||||
include/msgpack/adaptor/char_ptr.hpp
|
include/msgpack/adaptor/char_ptr.hpp
|
||||||
include/msgpack/adaptor/check_container_size.hpp
|
include/msgpack/adaptor/check_container_size.hpp
|
||||||
include/msgpack/adaptor/cpp11/array.hpp
|
include/msgpack/adaptor/cpp11/array.hpp
|
||||||
@ -162,6 +168,7 @@ INCLUDE_DIRECTORIES (
|
|||||||
./
|
./
|
||||||
include/
|
include/
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/include/
|
${CMAKE_CURRENT_BINARY_DIR}/include/
|
||||||
|
${MSGPACK_BOOST_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_LIBRARY (msgpack SHARED
|
ADD_LIBRARY (msgpack SHARED
|
||||||
|
@ -9,21 +9,27 @@ fi
|
|||||||
|
|
||||||
if [ $1 = "cpp11" ]
|
if [ $1 = "cpp11" ]
|
||||||
then
|
then
|
||||||
if [ $2 = "32" ]
|
cpp11="-std=c++11"
|
||||||
then
|
|
||||||
./configure CFLAGS="-m32" CXXFLAGS="-std=c++11 -m32"
|
|
||||||
else
|
|
||||||
./configure CXXFLAGS="-std=c++11"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ $2 = "32" ]
|
cpp11=""
|
||||||
then
|
|
||||||
./configure CFLAGS="-m32" CXXFLAGS="-m32"
|
|
||||||
else
|
|
||||||
./configure
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ $2 = "32" ]
|
||||||
|
then
|
||||||
|
bit32="-m32"
|
||||||
|
else
|
||||||
|
bit32=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $3 = "boost" ]
|
||||||
|
then
|
||||||
|
boost="-DMSGPACK_USE_BOOST"
|
||||||
|
else
|
||||||
|
boost=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
./configure CFLAGS="$bit32" CXXFLAGS="$bit32 $cpp11 $boost -I$4"
|
||||||
|
|
||||||
ret=$?
|
ret=$?
|
||||||
if [ $ret -ne 0 ]
|
if [ $ret -ne 0 ]
|
||||||
then
|
then
|
||||||
|
@ -18,21 +18,34 @@ fi
|
|||||||
|
|
||||||
if [ $1 = "cpp11" ]
|
if [ $1 = "cpp11" ]
|
||||||
then
|
then
|
||||||
if [ $2 = "32" ]
|
cpp11="-DMSGPACK_CXX11=ON"
|
||||||
then
|
|
||||||
cmake -DMSGPACK_CXX11=ON -DMSGPACK_32BIT=ON ..
|
|
||||||
else
|
|
||||||
cmake -DMSGPACK_CXX11=ON ..
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ $2 = "32" ]
|
cpp11=""
|
||||||
then
|
|
||||||
cmake -DMSGPACK_32BIT=ON ..
|
|
||||||
else
|
|
||||||
cmake ..
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ $2 = "32" ]
|
||||||
|
then
|
||||||
|
bit32="-DMSGPACK_32BIT=ON"
|
||||||
|
else
|
||||||
|
bit32=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $3 = "boost" ]
|
||||||
|
then
|
||||||
|
boost="-DMSGPACK_BOOST=ON"
|
||||||
|
else
|
||||||
|
boost=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$4" != "" ]
|
||||||
|
then
|
||||||
|
boost_dir="-DMSGPACK_BOOST_DIR=$4"
|
||||||
|
else
|
||||||
|
boost_dir=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmake $cpp11 $bit32 $boost $boost_dir ..
|
||||||
|
|
||||||
ret=$?
|
ret=$?
|
||||||
if [ $ret -ne 0 ]
|
if [ $ret -ne 0 ]
|
||||||
then
|
then
|
||||||
@ -63,7 +76,7 @@ then
|
|||||||
exit $ret
|
exit $ret
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $2 != "32" ]
|
if [ "$2" != "32" ]
|
||||||
then
|
then
|
||||||
ctest -T memcheck | tee memcheck.log
|
ctest -T memcheck | tee memcheck.log
|
||||||
|
|
||||||
|
82
include/msgpack/adaptor/boost/optional.hpp
Normal file
82
include/msgpack/adaptor/boost/optional.hpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
//
|
||||||
|
// MessagePack for C++ static resolution routine
|
||||||
|
//
|
||||||
|
// Copyright (C) 2008-2009 FURUHASHI Sadayuki
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
#ifndef MSGPACK_TYPE_BOOST_OPTIONAL_HPP
|
||||||
|
#define MSGPACK_TYPE_BOOST_OPTIONAL_HPP
|
||||||
|
|
||||||
|
#include "msgpack/versioning.hpp"
|
||||||
|
#include "msgpack/adaptor/adaptor_base.hpp"
|
||||||
|
#include "msgpack/adaptor/check_container_size.hpp"
|
||||||
|
|
||||||
|
#include <boost/optional.hpp>
|
||||||
|
|
||||||
|
namespace msgpack {
|
||||||
|
|
||||||
|
/// @cond
|
||||||
|
MSGPACK_API_VERSION_NAMESPACE(v1) {
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
namespace adaptor {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct convert<boost::optional<T> > {
|
||||||
|
msgpack::object const& operator()(msgpack::object const& o, boost::optional<T>& v) const {
|
||||||
|
if(o.is_nil()) v = boost::none;
|
||||||
|
else {
|
||||||
|
T t;
|
||||||
|
msgpack::adaptor::convert<T>()(o, t);
|
||||||
|
v = t;
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct pack<boost::optional<T> > {
|
||||||
|
template <typename Stream>
|
||||||
|
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const boost::optional<T>& v) const {
|
||||||
|
if (v) o.pack(*v);
|
||||||
|
else o.pack_nil();
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct object<boost::optional<T> > {
|
||||||
|
void operator()(msgpack::object& o, const boost::optional<T>& v) const {
|
||||||
|
if (v) msgpack::adaptor::object<T>()(o, *v);
|
||||||
|
else o.type = msgpack::type::NIL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct object_with_zone<boost::optional<T> > {
|
||||||
|
void operator()(msgpack::object::with_zone& o, const boost::optional<T>& v) const {
|
||||||
|
if (v) msgpack::adaptor::object_with_zone<T>()(o, *v);
|
||||||
|
else o.type = msgpack::type::NIL;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace adaptor
|
||||||
|
|
||||||
|
/// @cond
|
||||||
|
} // MSGPACK_API_VERSION_NAMESPACE(v1)
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
} // namespace msgpack
|
||||||
|
|
||||||
|
#endif // MSGPACK_TYPE_BOOST_OPTIONAL_HPP
|
@ -33,3 +33,9 @@
|
|||||||
#include "adaptor/cpp11/unordered_set.hpp"
|
#include "adaptor/cpp11/unordered_set.hpp"
|
||||||
|
|
||||||
#endif // defined(MSGPACK_USE_CPP03)
|
#endif // defined(MSGPACK_USE_CPP03)
|
||||||
|
|
||||||
|
#if defined(MSGPACK_USE_BOOST)
|
||||||
|
|
||||||
|
#include "adaptor/boost/optional.hpp"
|
||||||
|
|
||||||
|
#endif // defined(MSGPACK_USE_BOOST)
|
||||||
|
@ -56,6 +56,7 @@ nobase_include_HEADERS += \
|
|||||||
../include/msgpack.hpp \
|
../include/msgpack.hpp \
|
||||||
../include/msgpack/adaptor/adaptor_base.hpp \
|
../include/msgpack/adaptor/adaptor_base.hpp \
|
||||||
../include/msgpack/adaptor/bool.hpp \
|
../include/msgpack/adaptor/bool.hpp \
|
||||||
|
../include/msgpack/adaptor/boost/optional.hpp \
|
||||||
../include/msgpack/adaptor/char_ptr.hpp \
|
../include/msgpack/adaptor/char_ptr.hpp \
|
||||||
../include/msgpack/adaptor/check_container_size.hpp \
|
../include/msgpack/adaptor/check_container_size.hpp \
|
||||||
../include/msgpack/adaptor/cpp11/array.hpp \
|
../include/msgpack/adaptor/cpp11/array.hpp \
|
||||||
|
@ -31,6 +31,12 @@ LIST (APPEND check_PROGRAMS
|
|||||||
limit.cpp
|
limit.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
IF (MSGPACK_BOOST)
|
||||||
|
LIST (APPEND check_PROGRAMS
|
||||||
|
boost_optional.cpp
|
||||||
|
)
|
||||||
|
ENDIF ()
|
||||||
|
|
||||||
IF (MSGPACK_CXX11)
|
IF (MSGPACK_CXX11)
|
||||||
LIST (APPEND check_PROGRAMS
|
LIST (APPEND check_PROGRAMS
|
||||||
msgpack_cpp11.cpp
|
msgpack_cpp11.cpp
|
||||||
|
@ -26,7 +26,8 @@ check_PROGRAMS = \
|
|||||||
reference_cpp11 \
|
reference_cpp11 \
|
||||||
reference \
|
reference \
|
||||||
limit \
|
limit \
|
||||||
iterator_cpp11
|
iterator_cpp11 \
|
||||||
|
boost_optional
|
||||||
|
|
||||||
TESTS = $(check_PROGRAMS)
|
TESTS = $(check_PROGRAMS)
|
||||||
|
|
||||||
@ -79,4 +80,6 @@ limit_SOURCES = limit.cpp
|
|||||||
|
|
||||||
iterator_cpp11_SOURCES = iterator_cpp11.cpp
|
iterator_cpp11_SOURCES = iterator_cpp11.cpp
|
||||||
|
|
||||||
|
boost_optional_SOURCES = boost_optional.cpp
|
||||||
|
|
||||||
EXTRA_DIST = cases.mpac cases_compact.mpac
|
EXTRA_DIST = cases.mpac cases_compact.mpac
|
||||||
|
130
test/boost_optional.cpp
Normal file
130
test/boost_optional.cpp
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
#include <msgpack.hpp>
|
||||||
|
#include <sstream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(MSGPACK_USE_BOOST)
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, pack_convert_nil)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
boost::optional<int> val1;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::unpacked ret;
|
||||||
|
msgpack::unpack(ret, ss.str().data(), ss.str().size());
|
||||||
|
boost::optional<int> val2 = ret.get().as<boost::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, pack_convert_int)
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
boost::optional<int> val1 = 1;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::unpacked ret;
|
||||||
|
msgpack::unpack(ret, ss.str().data(), ss.str().size());
|
||||||
|
boost::optional<int> val2 = ret.get().as<boost::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, pack_convert_vector)
|
||||||
|
{
|
||||||
|
typedef boost::optional<std::vector<int> > ovi_t;
|
||||||
|
std::stringstream ss;
|
||||||
|
ovi_t val1;
|
||||||
|
std::vector<int> v;
|
||||||
|
v.push_back(1);
|
||||||
|
v.push_back(2);
|
||||||
|
v.push_back(3);
|
||||||
|
val1 = v;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::unpacked ret;
|
||||||
|
msgpack::unpack(ret, ss.str().data(), ss.str().size());
|
||||||
|
ovi_t val2 = ret.get().as<ovi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, pack_convert_vector_optional)
|
||||||
|
{
|
||||||
|
typedef std::vector<boost::optional<int> > voi_t;
|
||||||
|
std::stringstream ss;
|
||||||
|
voi_t val1;
|
||||||
|
val1.resize(3);
|
||||||
|
val1[0] = 1;
|
||||||
|
val1[2] = 3;
|
||||||
|
msgpack::pack(ss, val1);
|
||||||
|
msgpack::unpacked ret;
|
||||||
|
msgpack::unpack(ret, ss.str().data(), ss.str().size());
|
||||||
|
voi_t val2 = ret.get().as<voi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, object_nil)
|
||||||
|
{
|
||||||
|
boost::optional<int> val1;
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
boost::optional<int> val2 = obj.as<boost::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, object_int)
|
||||||
|
{
|
||||||
|
boost::optional<int> val1 = 1;
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
boost::optional<int> val2 = obj.as<boost::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compile error as expected
|
||||||
|
/*
|
||||||
|
TEST(MSGPACK_BOOST, object_vector)
|
||||||
|
{
|
||||||
|
typedef boost::optional<std::vector<int> > ovi_t;
|
||||||
|
ovi_t val1;
|
||||||
|
std::vector<int> v;
|
||||||
|
v.push_back(1);
|
||||||
|
v.push_back(2);
|
||||||
|
v.push_back(3);
|
||||||
|
val1 = v;
|
||||||
|
msgpack::object obj(val1);
|
||||||
|
ovi_t val2 = obj.as<ovi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, object_with_zone_nil)
|
||||||
|
{
|
||||||
|
msgpack::zone z;
|
||||||
|
boost::optional<int> val1;
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
boost::optional<int> val2 = obj.as<boost::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, object_with_zone_int)
|
||||||
|
{
|
||||||
|
msgpack::zone z;
|
||||||
|
boost::optional<int> val1 = 1;
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
boost::optional<int> val2 = obj.as<boost::optional<int> >();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK_BOOST, object_with_zone_vector_optional)
|
||||||
|
{
|
||||||
|
typedef std::vector<boost::optional<int> > voi_t;
|
||||||
|
msgpack::zone z;
|
||||||
|
voi_t val1;
|
||||||
|
val1.resize(3);
|
||||||
|
val1[0] = 1;
|
||||||
|
val1[2] = 3;
|
||||||
|
msgpack::object obj(val1, z);
|
||||||
|
voi_t val2 = obj.as<voi_t>();
|
||||||
|
EXPECT_TRUE(val1 == val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // defined(MSGPACK_USE_BOOST)
|
Loading…
x
Reference in New Issue
Block a user