1 // (C) Copyright Andy Tompkins 2007. Permission to copy, use, modify, sell and 2 // distribute this software is granted provided this copyright notice appears 3 // in all copies. This software is provided "as is" without express or implied 4 // warranty, and with no claim as to its suitability for any purpose. 5 6 // Distributed under the Boost Software License, Version 1.0. (See 7 // accompanying file LICENSE_1_0.txt or copy at 8 // https://www.boost.org/LICENSE_1_0.txt) 9 10 // Purpose to test serializing uuids with narrow archives 11 12 #include <boost/detail/lightweight_test.hpp> 13 #include <sstream> 14 #include <iostream> 15 16 #include <boost/uuid/uuid.hpp> 17 #include <boost/uuid/uuid_serialize.hpp> 18 #include <boost/uuid/uuid_io.hpp> 19 20 #include <boost/archive/text_oarchive.hpp> 21 #include <boost/archive/text_iarchive.hpp> 22 23 #include <boost/archive/xml_oarchive.hpp> 24 #include <boost/archive/xml_iarchive.hpp> 25 26 #include <boost/archive/binary_oarchive.hpp> 27 #include <boost/archive/binary_iarchive.hpp> 28 29 template <class OArchiveType, class IArchiveType, class OStringStreamType, class IStringStreamType> test_archive()30 void test_archive() 31 { 32 using namespace std; 33 using namespace boost::uuids; 34 35 OStringStreamType o_stream; 36 37 uuid u1 = {{0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef}}; 38 39 uuid u2; 40 41 // save 42 { 43 OArchiveType oa(o_stream); 44 45 oa << BOOST_SERIALIZATION_NVP(u1); 46 } 47 48 //cout << "stream:" << o_stream.str() << "\n\n"; 49 50 // load 51 { 52 IStringStreamType i_stream(o_stream.str()); 53 IArchiveType ia(i_stream); 54 55 ia >> BOOST_SERIALIZATION_NVP(u2); 56 } 57 58 BOOST_TEST_EQ(u1, u2); 59 } 60 main(int,char * [])61 int main( int /* argc */, char* /* argv */[] ) 62 { 63 using namespace std; 64 using namespace boost::archive; 65 66 test_archive<text_oarchive, text_iarchive, ostringstream, istringstream>(); 67 test_archive<xml_oarchive, xml_iarchive, ostringstream, istringstream>(); 68 test_archive<binary_oarchive, binary_iarchive, ostringstream, istringstream>(); 69 70 return boost::report_errors(); 71 } 72