#include <ableton/link_audio/ChannelAnnouncements.hpp>
#include <ableton/platforms/stl/Random.hpp>
#include <ableton/test/CatchWrapper.hpp>
namespace ableton
{
namespace link_audio
{
TEST_CASE("AudioChannels")
{
using Random = ableton::platforms::stl::Random;
const auto foo = ChannelAnnouncement{"foo", Id::random<Random>()};
const auto bar = ChannelAnnouncement{"bar", Id::random<Random>()};
SECTION("Roundtrip")
{
auto channels = ChannelAnnouncements{{foo, bar}};
const auto size = sizeInByteStream(channels);
auto bytes = std::vector<uint8_t>(size);
auto serializedEnd = toNetworkByteStream(channels, bytes.begin());
CHECK(bytes.end() == serializedEnd);
CHECK(channels
== discovery::Deserialize<ChannelAnnouncements>::fromNetworkByteStream(
bytes.begin(), bytes.end())
.first);
}
SECTION("ByesRoundtrip")
{
auto channels = ChannelByes{{ChannelBye{foo.id}, ChannelBye{bar.id}}};
const auto size = sizeInByteStream(channels);
auto bytes = std::vector<uint8_t>(size);
auto serializedEnd = toNetworkByteStream(channels, bytes.begin());
CHECK(bytes.end() == serializedEnd);
CHECK(channels
== discovery::Deserialize<ChannelByes>::fromNetworkByteStream(
bytes.begin(), bytes.end())
.first);
}
}
} }