]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/regex/test/quick.cpp
2 // Copyright 1998-2002 John Maddock
3 // Copyright 2017 Peter Dimov
5 // Distributed under the Boost Software License, Version 1.0.
7 // See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt
10 // See library home page at http://www.boost.org/libs/regex
12 #include <boost/regex.hpp>
13 #include <boost/core/lightweight_test.hpp>
16 bool validate_card_format(const std::string
& s
)
18 static const boost::regex
e("(\\d{4}[- ]){3}\\d{4}");
19 return boost::regex_match(s
, e
);
22 const boost::regex
card_rx("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
23 const std::string
machine_format("\\1\\2\\3\\4");
24 const std::string
human_format("\\1-\\2-\\3-\\4");
26 std::string
machine_readable_card_number(const std::string
& s
)
28 return boost::regex_replace(s
, card_rx
, machine_format
, boost::match_default
| boost::format_sed
);
31 std::string
human_readable_card_number(const std::string
& s
)
33 return boost::regex_replace(s
, card_rx
, human_format
, boost::match_default
| boost::format_sed
);
38 std::string s
[ 4 ] = { "0000111122223333", "0000 1111 2222 3333", "0000-1111-2222-3333", "000-1111-2222-3333" };
40 BOOST_TEST( !validate_card_format( s
[0] ) );
41 BOOST_TEST_EQ( machine_readable_card_number( s
[0] ), s
[0] );
42 BOOST_TEST_EQ( human_readable_card_number( s
[0] ), s
[2] );
44 BOOST_TEST( validate_card_format( s
[1] ) );
45 BOOST_TEST_EQ( machine_readable_card_number( s
[1] ), s
[0] );
46 BOOST_TEST_EQ( human_readable_card_number( s
[1] ), s
[2] );
48 BOOST_TEST( validate_card_format( s
[2] ) );
49 BOOST_TEST_EQ( machine_readable_card_number( s
[2] ), s
[0] );
50 BOOST_TEST_EQ( human_readable_card_number( s
[2] ), s
[2] );
52 BOOST_TEST( !validate_card_format( s
[3] ) );
54 return boost::report_errors();