ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ioiter_test.cpp
Go to the documentation of this file.
00001 #include <string>
00002 #if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
00003 #include <sstream>
00004 #include <vector>
00005 #include <iterator>
00006 
00007 #include "cppunit/cppunit_proxy.h"
00008 
00009 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
00010 using namespace std;
00011 #endif
00012 
00013 class IoiterTest : public CPPUNIT_NS::TestCase
00014 {
00015   CPPUNIT_TEST_SUITE(IoiterTest);
00016   CPPUNIT_TEST(ioiter_test);
00017   CPPUNIT_TEST(assign_test);
00018   CPPUNIT_TEST(assign2_test);
00019   CPPUNIT_TEST_SUITE_END();
00020 
00021 protected:
00022   void ioiter_test();
00023   void assign_test();
00024   void assign2_test();
00025 };
00026 
00027 CPPUNIT_TEST_SUITE_REGISTRATION(IoiterTest);
00028 
00029 void IoiterTest::ioiter_test()
00030 {
00031 
00032   char c;
00033   const char *pc;
00034   const char *strorg = "abcd";
00035   string tmp;
00036 
00037   string objStr(strorg);
00038 
00039   istringstream objIStrStrm1(objStr);
00040   istringstream objIStrStrm2(objStr);
00041   istringstream objIStrStrm3(objStr);
00042 
00043   pc = strorg;
00044   string::size_type sz = strlen(strorg);
00045   string::size_type i;
00046   for ( i = 0; i < sz; ++i ) {
00047     c = *pc++;
00048     tmp += c;
00049   }
00050   CPPUNIT_ASSERT( tmp == "abcd" );
00051 
00052   istreambuf_iterator<char, char_traits<char> > objIStrmbIt1( objIStrStrm1.rdbuf() );
00053   istreambuf_iterator<char, char_traits<char> > end;
00054 
00055   tmp.clear();
00056 
00057   for ( i = 0; i < sz /* objIStrmbIt1 != end */; ++i ) {
00058     c = *objIStrmbIt1++;
00059     tmp += c;
00060   }
00061   CPPUNIT_ASSERT( tmp == "abcd" );
00062 
00063   tmp.clear();
00064 
00065   istreambuf_iterator<char, char_traits<char> > objIStrmbIt2( objIStrStrm2.rdbuf() );
00066   for ( i = 0; i < sz; ++i ) {
00067     c = *objIStrmbIt2;
00068     tmp += c;
00069     objIStrmbIt2++;
00070   }
00071   CPPUNIT_ASSERT( tmp == "abcd" );
00072 
00073   tmp.clear();
00074 
00075   istreambuf_iterator<char, char_traits<char> > objIStrmbIt3( objIStrStrm3.rdbuf() );
00076 
00077   while ( objIStrmbIt3 != end ) {
00078     c = *objIStrmbIt3++;
00079     tmp += c;
00080   }
00081   CPPUNIT_ASSERT( tmp == "abcd" );
00082 }
00083 
00084 void IoiterTest::assign_test()
00085 {
00086   stringstream s( "1234567890" );
00087   vector<char> v;
00088 
00089   v.assign( istreambuf_iterator<char>(s), istreambuf_iterator<char>() );
00090   CPPUNIT_CHECK( v.size() == 10 );
00091   if ( v.size() == 10 ) {
00092     CPPUNIT_CHECK( v[0] == '1' );
00093     CPPUNIT_CHECK( v[9] == '0' );
00094   }
00095 }
00096 
00097 void IoiterTest::assign2_test()
00098 {
00099   stringstream s( "1234567890" );
00100   vector<char> v;
00101 
00102   v.assign( istreambuf_iterator<char>(s.rdbuf()), istreambuf_iterator<char>() );
00103   CPPUNIT_CHECK( v.size() == 10 );
00104   if ( v.size() == 10 ) {
00105     CPPUNIT_CHECK( v[0] == '1' );
00106     CPPUNIT_CHECK( v[9] == '0' );
00107   }
00108 }
00109 
00110 #endif

Generated on Mon May 28 2012 04:35:16 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.