diff options
Diffstat (limited to 'libs/algorithm/test/hex_test4.cpp')
-rw-r--r-- | libs/algorithm/test/hex_test4.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/libs/algorithm/test/hex_test4.cpp b/libs/algorithm/test/hex_test4.cpp new file mode 100644 index 0000000000..002dd00536 --- /dev/null +++ b/libs/algorithm/test/hex_test4.cpp @@ -0,0 +1,145 @@ +/* + Copyright (c) Marshall Clow 2011-2012. + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + For more information, see http://www.boost.org + +Try ostream_iterators +*/ + +#include <boost/config.hpp> +#include <boost/algorithm/hex.hpp> +#include <boost/test/included/test_exec_monitor.hpp> + +#include <string> +#include <iostream> + +namespace ba = boost::algorithm; + +void test_short_input1 () { + std::string s; + + try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } + catch ( const std::exception &ex ) { return; } + BOOST_TEST_MESSAGE ( "Failed to catch std::exception in test_short_input1" ); + BOOST_CHECK ( false ); + } + +void test_short_input2 () { + std::string s; + + try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } + catch ( const ba::hex_decode_error &ex ) { return; } + BOOST_TEST_MESSAGE ( "Failed to catch ba::hex_decode_error in test_short_input2" ); + BOOST_CHECK ( false ); + } + +void test_short_input3 () { + std::string s; + + try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } + catch ( const ba::not_enough_input &ex ) { return; } + BOOST_TEST_MESSAGE ( "Failed to catch ba::not_enough_input in test_short_input3" ); + BOOST_CHECK ( false ); + } + +// Make sure that the right thing is thrown +void test_short_input4 () { + std::string s; + + try { ba::unhex ( std::string ( "A" ), std::back_inserter(s)); } + catch ( const ba::non_hex_input &ex ) { BOOST_CHECK ( false ); } + catch ( const ba::not_enough_input &ex ) { return; } + catch ( ... ) { BOOST_CHECK ( false ); } + BOOST_CHECK ( false ); + } + +// Make sure that the right thing is thrown +void test_short_input5 () { + std::string s; + + try { ba::unhex ( "A", std::back_inserter(s)); } + catch ( const ba::non_hex_input &ex ) { BOOST_CHECK ( false ); } + catch ( const ba::not_enough_input &ex ) { return; } + catch ( ... ) { BOOST_CHECK ( false ); } + BOOST_CHECK ( false ); + } + + +void test_short_input () { +// BOOST_TEST_MESSAGE ( "Short input tests for boost::algorithm::unhex" ); + test_short_input1 (); + test_short_input2 (); + test_short_input3 (); + test_short_input4 (); + test_short_input5 (); + } + + +void test_nonhex_input1 () { + std::string s; + + try { ba::unhex ( "01234FG1234", std::back_inserter(s)); } + catch ( const std::exception &ex ) { + BOOST_CHECK ( 'G' == *boost::get_error_info<ba::bad_char>(ex)); + return; + } + catch ( ... ) {} + BOOST_TEST_MESSAGE ( "Failed to catch std::exception in test_nonhex_input1" ); + BOOST_CHECK ( false ); + } + +void test_nonhex_input2 () { + std::string s; + + try { ba::unhex ( "012Z4FA1234", std::back_inserter(s)); } + catch ( const ba::hex_decode_error &ex ) { + BOOST_CHECK ( 'Z' == *boost::get_error_info<ba::bad_char>(ex)); + return; + } + catch ( ... ) {} + BOOST_TEST_MESSAGE ( "Failed to catch ba::hex_decode_error in test_nonhex_input2" ); + BOOST_CHECK ( false ); + } + +void test_nonhex_input3 () { + std::string s; + + try { ba::unhex ( "01234FA12Q4", std::back_inserter(s)); } + catch ( const ba::non_hex_input &ex ) { + BOOST_CHECK ( 'Q' == *boost::get_error_info<ba::bad_char>(ex)); + return; + } + catch ( ... ) {} + BOOST_TEST_MESSAGE ( "Failed to catch ba::non_hex_input in test_nonhex_input3" ); + BOOST_CHECK ( false ); + } + +// Make sure that the right thing is thrown +void test_nonhex_input4 () { + std::string s; + + try { ba::unhex ( "P1234FA1234", std::back_inserter(s)); } + catch ( const ba::not_enough_input &ex ) { BOOST_CHECK ( false ); } + catch ( const ba::non_hex_input &ex ) { return; } + catch ( ... ) { BOOST_CHECK ( false ); } + BOOST_CHECK ( false ); + } + +void test_nonhex_input () { +// BOOST_TEST_MESSAGE ( "Non hex input tests for for boost::algorithm::unhex" ); + test_nonhex_input1 (); + test_nonhex_input2 (); + test_nonhex_input3 (); + test_nonhex_input4 (); + } + +int test_main( int , char* [] ) +{ + test_short_input (); + test_nonhex_input (); + + return 0; +} |