Files
serialization/test/test_iterators_base64.cpp
Robert Ramey 967934453c 1. Moved pfto, state_saver, strong_typedef, smart_cast, static_warning into serialization Library.vcproj
2. created copy of original throw exception for use in the serialization Library.vcproj
3. addressed error maintenance of static type table which shows up on GCC
4. fixed internal names in xml_grammar so as not to conflict with likely preprocessor macros.
5. streamlined xml_grammar so as not to depend upon on non-thread safe component.


[SVN r48575]
2008-09-04 16:44:57 +00:00

101 lines
2.7 KiB
C++

/////////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 <algorithm>
#include <list>
#if (defined _MSC_VER) && (_MSC_VER == 1200)
# pragma warning (disable : 4786) // too long name, harmless warning
#endif
#include <cstdlib>
#include <cstddef> // size_t
#include <boost/config.hpp>
#ifdef BOOST_NO_STDC_NAMESPACE
namespace std{
using ::rand;
using ::size_t;
}
#endif
#include <boost/serialization/pfto.hpp>
#include <boost/archive/iterators/binary_from_base64.hpp>
#include <boost/archive/iterators/base64_from_binary.hpp>
#include <boost/archive/iterators/insert_linebreaks.hpp>
#include <boost/archive/iterators/remove_whitespace.hpp>
#include <boost/archive/iterators/transform_width.hpp>
#include "test_tools.hpp"
#include <iostream>
template<typename CharType>
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<CharType> 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<CharType *>(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<char>();
#ifndef BOOST_NO_CWCHAR
test_base64<wchar_t>();
#endif
return EXIT_SUCCESS;
}