123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /*
- 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>
- #define BOOST_TEST_MAIN
- #include <boost/test/unit_test.hpp>
- #include <string>
- #include <iostream>
- #include <deque>
- #include <list>
- template <typename char_type>
- void test_to_hex ( const char_type ** tests ) {
- typedef std::basic_string<char_type> String;
- typedef std::basic_ostringstream<char_type> Stream;
- typedef std::ostream_iterator<char_type, char_type> Iter;
- for ( const char_type **p = tests; *p; p++ ) {
- String arg, argh;
- Stream one, two, three;
- arg.assign ( *p );
- boost::algorithm::hex ( *p, Iter ( one ));
- boost::algorithm::hex ( arg, Iter ( two ));
- boost::algorithm::hex ( arg.begin (), arg.end (), Iter ( three ));
- boost::algorithm::hex ( arg );
- BOOST_CHECK ( one.str () == two.str ());
- BOOST_CHECK ( one.str () == three.str ());
- argh = one.str ();
- one.str (String()); two.str (String()); three.str (String());
- boost::algorithm::unhex ( argh.c_str (), Iter ( one ));
- boost::algorithm::unhex ( argh, Iter ( two ));
- boost::algorithm::unhex ( argh.begin (), argh.end (), Iter ( three ));
- BOOST_CHECK ( one.str () == two.str ());
- BOOST_CHECK ( one.str () == three.str ());
- BOOST_CHECK ( one.str () == arg );
- }
- }
- template <typename char_type>
- void test_from_hex_success ( const char_type ** tests ) {
- typedef std::basic_string<char_type> String;
- typedef std::basic_ostringstream<char_type> Stream;
- typedef std::ostream_iterator<char_type, char_type> Iter;
- for ( const char_type **p = tests; *p; p++ ) {
- String arg, argh;
- Stream one, two, three;
- arg.assign ( *p );
- boost::algorithm::unhex ( *p, Iter ( one ));
- boost::algorithm::unhex ( arg, Iter ( two ));
- boost::algorithm::unhex ( arg.begin (), arg.end (), Iter ( three ));
-
- BOOST_CHECK ( one.str () == two.str ());
- BOOST_CHECK ( one.str () == three.str ());
- argh = one.str ();
- one.str (String()); two.str (String()); three.str (String());
- boost::algorithm::hex ( argh.c_str (), Iter ( one ));
- boost::algorithm::hex ( argh, Iter ( two ));
- boost::algorithm::hex ( argh.begin (), argh.end (), Iter ( three ));
- BOOST_CHECK ( one.str () == two.str ());
- BOOST_CHECK ( one.str () == three.str ());
- BOOST_CHECK ( one.str () == arg );
- }
- }
- const char *tohex [] = {
- "",
- "a",
- "\001",
- "12",
- "asdfadsfsad",
- "01234567890ABCDEF",
- NULL // End of the list
- };
- const wchar_t *tohex_w [] = {
- L"",
- L"a",
- L"\001",
- L"12",
- L"asdfadsfsad",
- L"01234567890ABCDEF",
- NULL // End of the list
- };
- const char *fromhex [] = {
- "20",
- "2122234556FF",
- NULL // End of the list
- };
- const wchar_t *fromhex_w [] = {
- L"11223320",
- L"21222345010256FF",
- NULL // End of the list
- };
- BOOST_AUTO_TEST_CASE( test_main )
- {
- test_to_hex ( tohex );
- test_to_hex ( tohex_w );
- test_from_hex_success ( fromhex );
- test_from_hex_success ( fromhex_w );
- }
|