Commit 91f5378e authored by Jakob Otto's avatar Jakob Otto

Add requested changes.

parent 673f2d56
...@@ -18,13 +18,13 @@ ...@@ -18,13 +18,13 @@
#pragma once #pragma once
#include <caf/detail/ieee_754.hpp>
#include <caf/detail/network_order.hpp>
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
#include <vector> #include <vector>
#include "caf/deserializer.hpp" #include "caf/deserializer.hpp"
#include "caf/detail/ieee_754.hpp"
#include "caf/detail/network_order.hpp"
namespace caf { namespace caf {
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#pragma once #pragma once
#include <caf/detail/network_order.hpp>
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
#include <iomanip> #include <iomanip>
...@@ -26,6 +25,7 @@ ...@@ -26,6 +25,7 @@
#include <vector> #include <vector>
#include "caf/detail/ieee_754.hpp" #include "caf/detail/ieee_754.hpp"
#include "caf/detail/network_order.hpp"
#include "caf/serializer.hpp" #include "caf/serializer.hpp"
namespace caf { namespace caf {
...@@ -40,6 +40,8 @@ public: ...@@ -40,6 +40,8 @@ public:
using container_type = Container; using container_type = Container;
using value_type = typename container_type::value_type;
// -- constructors, destructors, and assignment operators -------------------- // -- constructors, destructors, and assignment operators --------------------
serializer_impl(actor_system& sys, container_type& buf) serializer_impl(actor_system& sys, container_type& buf)
...@@ -105,7 +107,8 @@ public: ...@@ -105,7 +107,8 @@ public:
error apply_raw(size_t num_bytes, void* data) override { error apply_raw(size_t num_bytes, void* data) override {
CAF_ASSERT(write_pos_ <= buf_.size()); CAF_ASSERT(write_pos_ <= buf_.size());
auto ptr = reinterpret_cast<typename container_type::value_type*>(data); static_assert((sizeof(value_type) == 1), "sizeof(value_type) > 1");
auto ptr = reinterpret_cast<value_type*>(data);
auto buf_size = buf_.size(); auto buf_size = buf_.size();
if (write_pos_ == buf_size) { if (write_pos_ == buf_size) {
buf_.insert(buf_.end(), ptr, ptr + num_bytes); buf_.insert(buf_.end(), ptr, ptr + num_bytes);
...@@ -214,7 +217,7 @@ protected: ...@@ -214,7 +217,7 @@ protected:
if (auto err = begin_sequence(str_size)) if (auto err = begin_sequence(str_size))
return err; return err;
for (auto c : x) { for (auto c : x) {
// The standard does not guarantee that char16_t is exactly 16 bits. // The standard does not guarantee that char32_t is exactly 16 bits.
if (auto err = apply_int(*this, static_cast<uint32_t>(c))) if (auto err = apply_int(*this, static_cast<uint32_t>(c)))
return err; return err;
} }
......
...@@ -16,68 +16,66 @@ ...@@ -16,68 +16,66 @@
* http://www.boost.org/LICENSE_1_0.txt. * * http://www.boost.org/LICENSE_1_0.txt. *
******************************************************************************/ ******************************************************************************/
#include "caf/config.hpp"
#define CAF_SUITE serializer_impl #define CAF_SUITE serializer_impl
#include "caf/serializer_impl.hpp"
#include "caf/test/dsl.hpp"
#include "serialization_fixture.hpp"
#include <cstring> #include <cstring>
#include <vector> #include <vector>
#include "caf/binary_serializer.hpp" #include "caf/binary_serializer.hpp"
#include "caf/byte.hpp" #include "caf/byte.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/test/unit_test.hpp"
#include "serialization_fixture.hpp"
using namespace caf; using namespace caf;
CAF_TEST_FIXTURE_SCOPE(deserialization_tests, serialization_fixture) CAF_TEST_FIXTURE_SCOPE(serialization_tests, serialization_fixture)
CAF_TEST("serialize to std::vector<char>") { CAF_TEST(serialize to std::vector<char>) {
using container_type = std::vector<char>; using container_type = std::vector<char>;
std::vector<char> binary_serializer_buffer; std::vector<char> binary_serializer_buffer;
container_type serializer_impl_buffer; container_type serializer_impl_buffer;
binary_serializer binarySerializer{sys, binary_serializer_buffer}; binary_serializer sink1{sys, binary_serializer_buffer};
serializer_impl<container_type> serializerImpl{sys, serializer_impl_buffer}; serializer_impl<container_type> sink2{sys, serializer_impl_buffer};
if (auto err = binarySerializer(source)) if (auto err = sink1(source))
CAF_FAIL( CAF_FAIL("serialization failed: " << sys.render(err));
"serialisation failed with binary_serializer: " << sys.render(err)); if (auto err = sink2(source))
if (auto err = serializerImpl(source)) CAF_FAIL("serialization failed: " << sys.render(err));
CAF_FAIL("serialisation failed with serializer_impl: " << sys.render(err));
CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(), CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(),
serializer_impl_buffer.data(), serializer_impl_buffer.data(),
binary_serializer_buffer.size()), binary_serializer_buffer.size()),
0); 0);
} }
CAF_TEST("serialize to std::vector<byte>") { CAF_TEST(serialize to std::vector<byte>) {
using container_type = std::vector<byte>; using container_type = std::vector<byte>;
std::vector<char> binary_serializer_buffer; std::vector<char> binary_serializer_buffer;
container_type serializer_impl_buffer; container_type serializer_impl_buffer;
binary_serializer binarySerializer{sys, binary_serializer_buffer}; binary_serializer sink1{sys, binary_serializer_buffer};
serializer_impl<container_type> serializerImpl{sys, serializer_impl_buffer}; serializer_impl<container_type> sink2{sys, serializer_impl_buffer};
if (auto err = binarySerializer(source)) if (auto err = sink1(source))
CAF_FAIL( CAF_FAIL("serialization failed: " << sys.render(err));
"serialisation failed with binary_serializer: " << sys.render(err)); if (auto err = sink2(source))
if (auto err = serializerImpl(source)) CAF_FAIL("serialization failed: " << sys.render(err));
CAF_FAIL("serialisation failed with serializer_impl: " << sys.render(err));
CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(), CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(),
serializer_impl_buffer.data(), serializer_impl_buffer.data(),
binary_serializer_buffer.size()), binary_serializer_buffer.size()),
0); 0);
} }
CAF_TEST("serialize to std::vector<uint8_t>") { CAF_TEST(serialize to std::vector<uint8_t>) {
using container_type = std::vector<uint8_t>; using container_type = std::vector<uint8_t>;
std::vector<char> binary_serializer_buffer; std::vector<char> binary_serializer_buffer;
container_type serializer_impl_buffer; container_type serializer_impl_buffer;
binary_serializer binarySerializer{sys, binary_serializer_buffer}; binary_serializer sink1{sys, binary_serializer_buffer};
serializer_impl<container_type> serializerImpl{sys, serializer_impl_buffer}; serializer_impl<container_type> sink2{sys, serializer_impl_buffer};
if (auto err = binarySerializer(source)) if (auto err = sink1(source))
CAF_FAIL( CAF_FAIL("serialization failed: " << sys.render(err));
"serialisation failed with binary_serializer: " << sys.render(err)); if (auto err = sink2(source))
if (auto err = serializerImpl(source)) CAF_FAIL("serialization failed: " << sys.render(err));
CAF_FAIL("serialisation failed with serializer_impl: " << sys.render(err));
CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(), CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(),
serializer_impl_buffer.data(), serializer_impl_buffer.data(),
binary_serializer_buffer.size()), binary_serializer_buffer.size()),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment