]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/convert/test/spirit_converter.cpp
0eea2ea8ee8b4d4662c6b9285a02116a3f5d804f
1 // Boost.Convert test and usage example
2 // Copyright (c) 2009-2016 Vladimir Batov.
3 // Use, modification and distribution are subject to the Boost Software License,
4 // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
8 #ifdef BOOST_CONVERT_INTEL_SFINAE_BROKEN
9 int main(int, char const* []) { return 0; }
12 #include <boost/convert.hpp>
13 #include <boost/convert/spirit.hpp>
14 #include <boost/detail/lightweight_test.hpp>
21 namespace cnv
= boost::cnv
;
22 namespace arg
= boost::cnv::parameter
;
24 struct boost::cnv::by_default
: public boost::cnv::spirit
{};
27 main(int, char const* [])
29 char const* const c_stri ("12345");
30 char const* const c_strd ("123.45");
31 wchar_t const* const c_wstri (L
"12345");
32 wchar_t const* const c_wstrd (L
"123.45");
33 std::string
const std_stri (c_stri
);
34 std::string
const std_strd (c_strd
);
35 std::wstring
const std_wstri (c_wstri
);
36 std::wstring
const std_wstrd (c_wstrd
);
37 my_string
const my_stri (c_stri
, c_stri
+ strlen(c_stri
));
38 my_string
const my_strd (c_strd
, c_strd
+ strlen(c_strd
));
40 boost::cnv::spirit cnv
;
42 BOOST_TEST( 12345 == convert
< int>( c_stri
).value());
43 BOOST_TEST( 12345 == convert
< int>( c_wstri
).value());
44 BOOST_TEST( 12345 == convert
< int>( std_stri
).value());
45 BOOST_TEST( 12345 == convert
< int>(std_wstri
).value());
46 BOOST_TEST( 12345 == convert
< int>( my_stri
).value());
47 BOOST_TEST( 12345 == convert
<unsigned int>(c_stri
).value());
48 BOOST_TEST( 12345 == convert
<long int>( c_stri
).value());
49 BOOST_TEST( 12345 == convert
<long int>( c_wstri
).value());
50 BOOST_TEST( 12345 == convert
<long int>( std_stri
).value());
51 BOOST_TEST( 12345 == convert
<long int>(std_wstri
).value());
52 BOOST_TEST( 12345 == convert
<long int>( my_stri
).value());
53 BOOST_TEST( 12345 == convert
<unsigned long int>(c_stri
).value());
54 BOOST_TEST( 12345 == convert
<long long int>(c_stri
).value());
55 BOOST_TEST( 12345 == convert
<unsigned long long int>(c_stri
).value());
56 BOOST_TEST(123.45 == convert
< double>( c_strd
).value());
57 BOOST_TEST(123.45 == convert
< double>( c_wstrd
).value());
58 // BOOST_TEST(123.45 == convert< double>( std_strd).value());
59 // BOOST_TEST(123.45 == convert< double>(std_wstrd).value());
60 BOOST_TEST(123.45 == convert
< double>( my_strd
).value());
62 BOOST_TEST(!convert
< int>("uhm"));
63 BOOST_TEST(!convert
< int>(L
"uhm"));
64 BOOST_TEST(!convert
<double>("12.uhm"));
65 BOOST_TEST(!convert
<double>("L12.uhm"));
67 BOOST_TEST( "1234" == convert
<string
>(1234).value());
68 BOOST_TEST( "1234" == convert
<string
>(1234u).value());
69 BOOST_TEST( "1234" == convert
<string
>(1234ll).value());
70 BOOST_TEST( "1234" == convert
<string
>(1234ull).value());
71 BOOST_TEST( L
"1234" == convert
<wstring
>(1234).value());
72 BOOST_TEST( "12xxx" == convert
<string
>(12, cnv(arg::width
= 5)
74 (arg::adjust
= cnv::adjust::left
)).value());
75 BOOST_TEST(L
"12xxx" == convert
<wstring
>(12, cnv(arg::width
= 5)
77 (arg::adjust
= cnv::adjust::left
)).value());
78 BOOST_TEST( "x12xx" == convert
<string
>(12, cnv(arg::adjust
= cnv::adjust::center
)).value());
79 BOOST_TEST(L
"x12xx" == convert
<wstring
>(12, cnv(arg::adjust
= cnv::adjust::center
)).value());
81 // BOOST_TEST("12.34" == convert<std::string>(12.34).value());
82 // printf("%s\n", convert<std::string>(12.34).value().c_str());
84 return boost::report_errors();