#include #include #include #include "test_type.hpp" #include #include using namespace psemek; namespace { template void test_value(T const & x) { char buffer[1024]; { io::memory_ostream s{buffer, buffer + std::size(buffer)}; sir::ostream os{s}; write(os, x); } T x2; { io::memory_istream s{buffer, buffer + std::size(buffer)}; sir::istream is{s}; read(is, x2); } expect_equal(x, x2); } } test_case(sir_struct_pair_trivial) { std::pair p{'a', 1000000u}; test_value(p); } test_case(sir_struct_pair_custom) { std::pair p{'a', {1000000u}}; test_value(p); } test_case(sir_struct_tuple_trivial) { std::tuple p{'a', 1000000u, 3.1415f}; test_value(p); } test_case(sir_struct_tuple_custom) { std::tuple p{'a', {1000000u}, 3.1415f}; test_value(p); }