/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/algorithm/test/hex_test3.cpp
124 строки
3 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
/* 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 ); }