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

Add requested changes.

parent 673f2d56
......@@ -18,13 +18,13 @@
#pragma once
#include <caf/detail/ieee_754.hpp>
#include <caf/detail/network_order.hpp>
#include <cstddef>
#include <cstdint>
#include <vector>
#include "caf/deserializer.hpp"
#include "caf/detail/ieee_754.hpp"
#include "caf/detail/network_order.hpp"
namespace caf {
......
......@@ -18,7 +18,6 @@
#pragma once
#include <caf/detail/network_order.hpp>
#include <cstddef>
#include <cstdint>
#include <iomanip>
......@@ -26,6 +25,7 @@
#include <vector>
#include "caf/detail/ieee_754.hpp"
#include "caf/detail/network_order.hpp"
#include "caf/serializer.hpp"
namespace caf {
......@@ -40,6 +40,8 @@ public:
using container_type = Container;
using value_type = typename container_type::value_type;
// -- constructors, destructors, and assignment operators --------------------
serializer_impl(actor_system& sys, container_type& buf)
......@@ -105,7 +107,8 @@ public:
error apply_raw(size_t num_bytes, void* data) override {
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();
if (write_pos_ == buf_size) {
buf_.insert(buf_.end(), ptr, ptr + num_bytes);
......@@ -214,7 +217,7 @@ protected:
if (auto err = begin_sequence(str_size))
return err;
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)))
return err;
}
......
......@@ -16,68 +16,66 @@
* http://www.boost.org/LICENSE_1_0.txt. *
******************************************************************************/
#include "caf/config.hpp"
#define CAF_SUITE serializer_impl
#include "caf/serializer_impl.hpp"
#include "caf/test/dsl.hpp"
#include "serialization_fixture.hpp"
#include <cstring>
#include <vector>
#include "caf/binary_serializer.hpp"
#include "caf/byte.hpp"
#include "caf/serializer_impl.hpp"
#include "caf/test/unit_test.hpp"
#include "serialization_fixture.hpp"
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>;
std::vector<char> binary_serializer_buffer;
container_type serializer_impl_buffer;
binary_serializer binarySerializer{sys, binary_serializer_buffer};
serializer_impl<container_type> serializerImpl{sys, serializer_impl_buffer};
if (auto err = binarySerializer(source))
CAF_FAIL(
"serialisation failed with binary_serializer: " << sys.render(err));
if (auto err = serializerImpl(source))
CAF_FAIL("serialisation failed with serializer_impl: " << sys.render(err));
binary_serializer sink1{sys, binary_serializer_buffer};
serializer_impl<container_type> sink2{sys, serializer_impl_buffer};
if (auto err = sink1(source))
CAF_FAIL("serialization failed: " << sys.render(err));
if (auto err = sink2(source))
CAF_FAIL("serialization failed: " << sys.render(err));
CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(),
serializer_impl_buffer.data(),
binary_serializer_buffer.size()),
0);
}
CAF_TEST("serialize to std::vector<byte>") {
CAF_TEST(serialize to std::vector<byte>) {
using container_type = std::vector<byte>;
std::vector<char> binary_serializer_buffer;
container_type serializer_impl_buffer;
binary_serializer binarySerializer{sys, binary_serializer_buffer};
serializer_impl<container_type> serializerImpl{sys, serializer_impl_buffer};
if (auto err = binarySerializer(source))
CAF_FAIL(
"serialisation failed with binary_serializer: " << sys.render(err));
if (auto err = serializerImpl(source))
CAF_FAIL("serialisation failed with serializer_impl: " << sys.render(err));
binary_serializer sink1{sys, binary_serializer_buffer};
serializer_impl<container_type> sink2{sys, serializer_impl_buffer};
if (auto err = sink1(source))
CAF_FAIL("serialization failed: " << sys.render(err));
if (auto err = sink2(source))
CAF_FAIL("serialization failed: " << sys.render(err));
CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(),
serializer_impl_buffer.data(),
binary_serializer_buffer.size()),
0);
}
CAF_TEST("serialize to std::vector<uint8_t>") {
CAF_TEST(serialize to std::vector<uint8_t>) {
using container_type = std::vector<uint8_t>;
std::vector<char> binary_serializer_buffer;
container_type serializer_impl_buffer;
binary_serializer binarySerializer{sys, binary_serializer_buffer};
serializer_impl<container_type> serializerImpl{sys, serializer_impl_buffer};
if (auto err = binarySerializer(source))
CAF_FAIL(
"serialisation failed with binary_serializer: " << sys.render(err));
if (auto err = serializerImpl(source))
CAF_FAIL("serialisation failed with serializer_impl: " << sys.render(err));
binary_serializer sink1{sys, binary_serializer_buffer};
serializer_impl<container_type> sink2{sys, serializer_impl_buffer};
if (auto err = sink1(source))
CAF_FAIL("serialization failed: " << sys.render(err));
if (auto err = sink2(source))
CAF_FAIL("serialization failed: " << sys.render(err));
CAF_CHECK_EQUAL(memcmp(binary_serializer_buffer.data(),
serializer_impl_buffer.data(),
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