/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // test_iterators.cpp // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to 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) #include #include #if (defined _MSC_VER) && (_MSC_VER == 1200) # pragma warning (disable : 4786) // too long name, harmless warning #endif #include #include // size_t #include #ifdef BOOST_NO_STDC_NAMESPACE namespace std{ using ::rand; using ::size_t; } #endif #include #include #include #include #include #include #include "../test/test_tools.hpp" #include template void test_base64(){ CharType rawdata[150]; std::size_t size = sizeof(rawdata) / sizeof(CharType); CharType * rptr; for(rptr = rawdata + size; rptr-- > rawdata;) *rptr = std::rand(); // convert to base64 typedef std::list text_base64_type; text_base64_type text_base64; typedef boost::archive::iterators::insert_linebreaks< boost::archive::iterators::base64_from_binary< boost::archive::iterators::transform_width< CharType * ,6 ,sizeof(CharType) * 8 > > ,72 > translate_out; std::copy( translate_out(BOOST_MAKE_PFTO_WRAPPER(static_cast(rawdata))), translate_out(BOOST_MAKE_PFTO_WRAPPER(rawdata + size)), std::back_inserter(text_base64) ); // convert from base64 to binary and compare with the original typedef boost::archive::iterators::transform_width< boost::archive::iterators::binary_from_base64< boost::archive::iterators::remove_whitespace< BOOST_DEDUCED_TYPENAME text_base64_type::iterator > >, sizeof(CharType) * 8, 6 > translate_in; BOOST_CHECK( std::equal( rawdata, rawdata + size, translate_in(BOOST_MAKE_PFTO_WRAPPER(text_base64.begin())) ) ); } int test_main( int argc, char* argv[] ) { test_base64(); #ifndef BOOST_NO_CWCHAR test_base64(); #endif return EXIT_SUCCESS; }