$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r82200 - branches/release/libs/serialization/test
From: ramey_at_[hidden]
Date: 2012-12-24 13:12:44
Author: ramey
Date: 2012-12-24 13:12:43 EST (Mon, 24 Dec 2012)
New Revision: 82200
URL: http://svn.boost.org/trac/boost/changeset/82200
Log:
update test_utf8_codecvt test to use std::istream_iterator.
update other tests for improvements in base64_from_binary
tweak test_complex to play nice with PGI library.
Properties modified: 
   branches/release/libs/serialization/test/   (props changed)
   branches/release/libs/serialization/test/test_diamond_complex.cpp   (props changed)
Text files modified: 
   branches/release/libs/serialization/test/test_binary.cpp           |    16 ++++++++++++--                          
   branches/release/libs/serialization/test/test_complex.cpp          |     4 ++                                      
   branches/release/libs/serialization/test/test_iterators.cpp        |    25 +++++++++++++++-------                  
   branches/release/libs/serialization/test/test_iterators_base64.cpp |    19 ++++++++++++-----                       
   branches/release/libs/serialization/test/test_utf8_codecvt.cpp     |    43 +++++++++++++++++++-------------------- 
   5 files changed, 67 insertions(+), 40 deletions(-)
Modified: branches/release/libs/serialization/test/test_binary.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_binary.cpp	(original)
+++ branches/release/libs/serialization/test/test_binary.cpp	2012-12-24 13:12:43 EST (Mon, 24 Dec 2012)
@@ -70,16 +70,22 @@
     char s3[] = "abc";
     char s4[] = "abcd";
     const int i = 12345;
+
     A a1;
     char s1_1[10];
     char s1_2[10];
     char s1_3[10];
     char s1_4[10];
     int i1 = 34790;
+
+    std::memset(s1_1, '\0', sizeof(s1_1));
+    std::memset(s1_2, '\0', sizeof(s1_2));
+    std::memset(s1_3, '\0', sizeof(s1_3));
+    std::memset(s1_4, '\0', sizeof(s1_4));
     {
         test_ostream os(testfile, TEST_STREAM_FLAGS);
         test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
-        boost::serialization::make_nvp(
+        oa << boost::serialization::make_nvp(
             "s1", 
             boost::serialization::make_binary_object(
                 s1, 
@@ -115,7 +121,7 @@
     {
         test_istream is(testfile, TEST_STREAM_FLAGS);
         test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
-        boost::serialization::make_nvp(
+        ia >> boost::serialization::make_nvp(
             "s1", 
             boost::serialization::make_binary_object(
                 s1_1, 
@@ -148,8 +154,12 @@
         // failure of text mode binary.
         ia >> BOOST_SERIALIZATION_NVP(i1);
     }
-    BOOST_CHECK(i == i1);
+    BOOST_CHECK(0 == std::strcmp(s1, s1_1));
+    BOOST_CHECK(0 == std::strcmp(s2, s1_2));
+    BOOST_CHECK(0 == std::strcmp(s3, s1_3));
+    BOOST_CHECK(0 == std::strcmp(s4, s1_4));
     BOOST_CHECK(a == a1);
+    BOOST_CHECK(i == i1);
     std::remove(testfile);
     return EXIT_SUCCESS;
 }
Modified: branches/release/libs/serialization/test/test_complex.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_complex.cpp	(original)
+++ branches/release/libs/serialization/test/test_complex.cpp	2012-12-24 13:12:43 EST (Mon, 24 Dec 2012)
@@ -20,11 +20,13 @@
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::rand; 
-    using ::fabs; 
     using ::remove;
     #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE)
         using ::numeric_limits;
     #endif
+    #if !defined(__PGIC__)
+        using ::fabs;
+    #endif
 }
 #endif
 
Modified: branches/release/libs/serialization/test/test_iterators.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_iterators.cpp	(original)
+++ branches/release/libs/serialization/test/test_iterators.cpp	2012-12-24 13:12:43 EST (Mon, 24 Dec 2012)
@@ -102,9 +102,9 @@
 void test_transform_width(unsigned int size){
     // test transform_width
     char rawdata[8];
-    
+
     char * rptr;
-    for(rptr = rawdata + 6; rptr-- > rawdata;)
+    for(rptr = rawdata + size; rptr-- > rawdata;)
         *rptr = static_cast<char>(0xff & std::rand());
 
     // convert 8 to 6 bit characters
@@ -112,32 +112,41 @@
         char *, BitsOut, BitsIn 
     > translator1;
 
-    std::vector<char> v6;
+    std::vector<char> vout;
 
     std::copy(
         translator1(BOOST_MAKE_PFTO_WRAPPER(static_cast<char *>(rawdata))),
         translator1(BOOST_MAKE_PFTO_WRAPPER(rawdata + size)),
-        std::back_inserter(v6)
+        std::back_inserter(vout)
     );
 
     // check to see we got the expected # of characters out
     if(0 ==  size)
-        BOOST_CHECK(v6.size() == 0);
+        BOOST_CHECK(vout.size() == 0);
     else
-        BOOST_CHECK(v6.size() == (size * BitsIn - 1 ) / BitsOut + 1);
+        BOOST_CHECK(vout.size() == (size * BitsIn - 1 ) / BitsOut + 1);
 
     typedef boost::archive::iterators::transform_width<
         std::vector<char>::iterator, BitsIn, BitsOut
     > translator2;
 
+    std::vector<char> vin;
+    std::copy(
+        translator2(BOOST_MAKE_PFTO_WRAPPER(vout.begin())),
+        translator2(BOOST_MAKE_PFTO_WRAPPER(vout.end())),
+        std::back_inserter(vin)
+    );
+
+    // check to see we got the expected # of characters out
+    BOOST_CHECK(vin.size() == size);
+
     BOOST_CHECK(
         std::equal(
             rawdata,
             rawdata + size,
-            translator2(BOOST_MAKE_PFTO_WRAPPER(v6.begin()))
+            vin.begin()
         )
     );
-
 }
 
 template<class CharType>
Modified: branches/release/libs/serialization/test/test_iterators_base64.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_iterators_base64.cpp	(original)
+++ branches/release/libs/serialization/test/test_iterators_base64.cpp	2012-12-24 13:12:43 EST (Mon, 24 Dec 2012)
@@ -37,12 +37,11 @@
 #include <iostream>
 
 template<typename CharType>
-void test_base64(){
+void test_base64(unsigned int size){
     CharType rawdata[150];
-    std::size_t size = sizeof(rawdata) / sizeof(CharType);
     CharType * rptr;
     for(rptr = rawdata + size; rptr-- > rawdata;)
-        *rptr = static_cast<CharType>(std::rand());
+        *rptr = static_cast<CharType>(std::rand()& 0xff);
 
     // convert to base64
     typedef std::list<CharType> text_base64_type;
@@ -57,7 +56,7 @@
                     ,sizeof(CharType) * 8
                 >
             > 
-            ,72
+            ,76
         > 
         translate_out;
 
@@ -92,9 +91,17 @@
 int
 test_main( int /*argc*/, char* /*argv*/[] )
 {
-    test_base64<char>();
+    test_base64<char>(1);
+    test_base64<char>(2);
+    test_base64<char>(3);
+    test_base64<char>(4);
+    test_base64<char>(150);
     #ifndef BOOST_NO_CWCHAR
-    test_base64<wchar_t>();
+    test_base64<wchar_t>(1);
+    test_base64<wchar_t>(2);
+    test_base64<wchar_t>(3);
+    test_base64<wchar_t>(4);
+    test_base64<wchar_t>(150);
     #endif
     return EXIT_SUCCESS;
 }
Modified: branches/release/libs/serialization/test/test_utf8_codecvt.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_utf8_codecvt.cpp	(original)
+++ branches/release/libs/serialization/test/test_utf8_codecvt.cpp	2012-12-24 13:12:43 EST (Mon, 24 Dec 2012)
@@ -22,7 +22,7 @@
 namespace std{ 
     using ::size_t; 
     using ::wcslen;
-#ifndef UNDER_CE    
+#if !defined(UNDER_CE) && !defined(__PGIC__) 
     using ::w_int;
 #endif    
 } // namespace std
@@ -36,12 +36,10 @@
 // NOTE: Use BOOST_WORKAROUND?
 #if (defined(__QNX__) && defined(BOOST_DINKUMWARE_STDLIB))  \
     || defined(__SUNPRO_CC)
-using ::std::wint_t;
+    using ::std::wint_t;
 #endif
 
 #include "test_tools.hpp"
-#include <boost/archive/iterators/istream_iterator.hpp>
-#include <boost/archive/iterators/ostream_iterator.hpp>
 
 #include <boost/archive/add_facet.hpp>
 #include <boost/archive/detail/utf8_codecvt_facet.hpp>
@@ -92,19 +90,19 @@
 
 template<>
 wchar_t test_data<4>::wchar_encoding[] = {
-    0x00000001,
-    0x0000007f,
-    0x00000080,
-    0x000007ff,
-    0x00000800,
-    0x0000ffff,
-    0x00010000,
-    0x0010ffff,
-    0x001fffff,
-    0x00200000,
-    0x03ffffff,
-    0x04000000,
-    0x7fffffff
+    (wchar_t)0x00000001,
+    (wchar_t)0x0000007f,
+    (wchar_t)0x00000080,
+    (wchar_t)0x000007ff,
+    (wchar_t)0x00000800,
+    (wchar_t)0x0000ffff,
+    (wchar_t)0x00010000,
+    (wchar_t)0x0010ffff,
+    (wchar_t)0x001fffff,
+    (wchar_t)0x00200000,
+    (wchar_t)0x03ffffff,
+    (wchar_t)0x04000000,
+    (wchar_t)0x7fffffff
 };
 
 int
@@ -132,7 +130,7 @@
                 // so use this instead
                 td::utf8_encoding + 12,
             #endif
-            boost::archive::iterators::ostream_iterator<utf8_t>(ofs)
+            std::ostream_iterator<utf8_t>(ofs)
         );
     }
 
@@ -176,13 +174,13 @@
         std::copy(
             from_file.begin(),
             from_file.end(),
-            boost::archive::iterators::ostream_iterator<wchar_t>(ofs)
+            std::ostream_iterator<wchar_t, wchar_t>(ofs)
         );
     }
 
     // Make sure that both files are the same
     {
-        typedef boost::archive::iterators::istream_iterator<utf8_t> is_iter;
+        typedef std::istream_iterator<utf8_t> is_iter;
         is_iter end_iter;
 
         std::ifstream ifs1("test.dat");
@@ -237,7 +235,7 @@
         std::copy(
             test3_data,
             test3_data + l,
-            boost::archive::iterators::ostream_iterator<wchar_t>(ofs)
+            std::ostream_iterator<wchar_t, wchar_t>(ofs)
         );
     }
 
@@ -246,11 +244,12 @@
         std::wifstream ifs;
         ifs.imbue(*utf8_locale);
         ifs.open("test3.dat");
+        ifs >> std::noskipws;
         BOOST_CHECK(
             std::equal(
                 test3_data,
                 test3_data + l,
-                boost::archive::iterators::istream_iterator<wchar_t>(ifs)
+                std::istream_iterator<wchar_t, wchar_t>(ifs)
             )
         );
     }