]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/describe/test/enum_from_string_test.cpp
1 // Copyright 2021 Peter Dimov
2 // Distributed under the Boost Software License, Version 1.0.
3 // https://www.boost.org/LICENSE_1_0.txt
5 #include <boost/describe/enum_from_string.hpp>
6 #include <boost/describe/enum.hpp>
7 #include <boost/core/lightweight_test.hpp>
9 #if !defined(BOOST_DESCRIBE_CXX14)
11 #include <boost/config/pragma_message.hpp>
13 BOOST_PRAGMA_MESSAGE("Skipping test because C++14 is not available")
18 enum E1
{ v101
= 101, v102
= 102 };
19 BOOST_DESCRIBE_ENUM(E1
, v101
, v102
)
21 enum class E2
{ v201
= 201, v202
= 202 };
22 BOOST_DESCRIBE_ENUM(E2
, v201
, v202
)
24 BOOST_DEFINE_ENUM(E3
, v301
, v302
);
25 BOOST_DEFINE_ENUM_CLASS(E4
, v401
, v402
)
29 using boost::describe::enum_from_string
;
33 BOOST_TEST( enum_from_string( "v101", w
) ) && BOOST_TEST_EQ( w
, v101
);
34 BOOST_TEST( enum_from_string( "v102", w
) ) && BOOST_TEST_EQ( w
, v102
);
35 BOOST_TEST_NOT( enum_from_string( "v103", w
) );
40 BOOST_TEST( enum_from_string( "v201", w
) ) && BOOST_TEST_EQ( (int)w
, (int)E2::v201
);
41 BOOST_TEST( enum_from_string( "v202", w
) ) && BOOST_TEST_EQ( (int)w
, (int)E2::v202
);
42 BOOST_TEST_NOT( enum_from_string( "v203", w
) );
47 BOOST_TEST( enum_from_string( "v301", w
) ) && BOOST_TEST_EQ( w
, v301
);
48 BOOST_TEST( enum_from_string( "v302", w
) ) && BOOST_TEST_EQ( w
, v302
);
49 BOOST_TEST_NOT( enum_from_string( "v303", w
) );
54 BOOST_TEST( enum_from_string( "v401", w
) ) && BOOST_TEST_EQ( (int)w
, (int)E4::v401
);
55 BOOST_TEST( enum_from_string( "v402", w
) ) && BOOST_TEST_EQ( (int)w
, (int)E4::v402
);
56 BOOST_TEST_NOT( enum_from_string( "v403", w
) );
59 return boost::report_errors();
62 #endif // !defined(BOOST_DESCRIBE_CXX14)