Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

47 lines
1.2 KiB
C++

// This file is part of CAF, the C++ Actor Framework. See the file LICENSE in
// the main distribution directory for license terms and copyright or visit
// https://github.com/actor-framework/actor-framework/blob/master/LICENSE.
#define CAF_SUITE basp.header
#include "caf/net/basp/header.hpp"
#include "net-test.hpp"
#include "caf/binary_deserializer.hpp"
#include "caf/binary_serializer.hpp"
#include "caf/byte_buffer.hpp"
#include "caf/deep_to_string.hpp"
using namespace caf;
using namespace caf::net;
CAF_TEST(serialization) {
basp::header x{basp::message_type::handshake, 42, 4};
byte_buffer buf;
{
binary_serializer sink{nullptr, buf};
CHECK(sink.apply(x));
}
CHECK_EQ(buf.size(), basp::header_size);
auto buf2 = to_bytes(x);
REQUIRE_EQ(buf.size(), buf2.size());
CHECK(std::equal(buf.begin(), buf.end(), buf2.begin()));
basp::header y;
{
binary_deserializer source{nullptr, buf};
CHECK(source.apply(y));
}
CHECK_EQ(x, y);
auto z = basp::header::from_bytes(buf);
CHECK_EQ(x, z);
CHECK_EQ(y, z);
}
CAF_TEST(to_string) {
basp::header x{basp::message_type::handshake, 42, 4};
CHECK_EQ(
deep_to_string(x),
"caf::net::basp::header(caf::net::basp::message_type::handshake, 42, 4)");
}