Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenioiter_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
1.7.6.1
|