]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/pfr/test/run/read_write_non_literal.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / pfr / test / run / read_write_non_literal.cpp
CommitLineData
1e59de90 1// Copyright (c) 2016-2022 Antony Polukhin
20effc67
TL
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#include <boost/pfr/io.hpp>
7
8#include <sstream>
9#include <string>
10
11#include <boost/core/lightweight_test.hpp>
12
13template <class T>
14void test_write_read(const T& value) {
15 T result;
16 std::stringstream ss;
17 ss << boost::pfr::io(value);
18 ss >> boost::pfr::io(result);
19 BOOST_TEST_EQ(value.f0, result.f0);
20 BOOST_TEST_EQ(value.f1, result.f1);
21 BOOST_TEST_EQ(value.f2, result.f2);
22 BOOST_TEST_EQ(value.f3, result.f3);
23 BOOST_TEST_EQ(value.f4, result.f4);
24}
25
26template <class T>
27void to_string_test(const T& value, const char* ethalon) {
28 std::stringstream ss;
29 ss << boost::pfr::io(value);
30 BOOST_TEST_EQ(ss.str(), ethalon);
31}
32
33template <class T>
34void test_type(const T& value, const char* ethalon) {
35 test_write_read(value);
36 to_string_test(value, ethalon);
37}
38
39
40int main() {
20effc67
TL
41 struct test4 {
42 int f0;
43 std::string f1;
44 char f2;
45 int f3;
46 std::string f4;
47 };
48 test_type(
49 test4{1, {"my o my"}, '3', 4, {"hello there!"} },
50 "{1, \"my o my\", 3, 4, \"hello there!\"}"
51 );
52
53 #if 0
54 // TODO:
55 std::string f1_referenced{"my O my"};
56 std::string f4_referenced{"Hello There!"};
57 struct test5 {
58 int f0;
59 const std::string& f1;
60 char f2;
61 int f3;
62 const std::string& f4;
63 };
64 to_string_test(
65 test5{1, f1_referenced, '3', 4, f4_referenced },
66 "{1, \"my o my\", 3, 4, \"hello there!\"}"
67 );
68 #endif
20effc67
TL
69
70 return boost::report_errors();
71}
72
73