sl@0: /* sl@0: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: sl@0: sl@0: // INCLUDE FILES sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #include sl@0: sl@0: #include "tiostreams.h" sl@0: using namespace std; sl@0: #define STDCPP_OOM FALSE// TRUE for OOM testing sl@0: sl@0: sl@0: // ============================ MEMBER FUNCTIONS =============================== sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams::Delete sl@0: // Delete here all resources allocated and opened from test methods. sl@0: // Called from destructor. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: void Ctiostreams::Delete() sl@0: { sl@0: sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams::RunMethodL sl@0: // Run specified method. Contains also table of test mothods and their names. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TInt Ctiostreams::RunMethodL( sl@0: CStifItemParser& aItem ) sl@0: { sl@0: sl@0: static TStifFunctionInfo const KFunctions[] = sl@0: { sl@0: // Copy this line for every implemented function. sl@0: // First string is the function name used in TestScripter script file. sl@0: // Second is the actual implementation member function. sl@0: // Second is the actual implementation member function. sl@0: ENTRY( "iofstreamL", Ctiostreams::iofstreamL ), sl@0: ENTRY( "stringbufL", Ctiostreams::stringbufL ), sl@0: ENTRY( "stringstreamL", Ctiostreams::stringstreamL ), sl@0: ENTRY( "streambufL", Ctiostreams:: streambufL ), sl@0: ENTRY( "ostreamL", Ctiostreams:: ostreamL ), sl@0: ENTRY( "istreamL", Ctiostreams:: istreamL ), sl@0: ENTRY( "istringstreamL", Ctiostreams:: istringstreamL ), sl@0: ENTRY( "ostringstreamL", Ctiostreams:: ostringstreamL ), sl@0: ENTRY( "ostreamiterators", Ctiostreams::ostreamiterators ), sl@0: ENTRY( "fstreamL", Ctiostreams::fstreamL), sl@0: ENTRY( "istrstreamL", Ctiostreams::istrstreamL), sl@0: ENTRY( "strstreamL", Ctiostreams::strstreamL), sl@0: ENTRY( "ostrstreamL", Ctiostreams::ostrstreamL), sl@0: ENTRY( "istreamiterators", Ctiostreams::istreamiterators ), sl@0: ENTRY( "istreambufiterators", Ctiostreams::istreambufiterators ), sl@0: ENTRY( "strstreambufL", Ctiostreams::strstreambufL ), sl@0: ENTRY( "freezeL", Ctiostreams::freezeL ), sl@0: ENTRY( "fposL", Ctiostreams::fposL ), sl@0: ENTRY( "filebufL", Ctiostreams::filebufL ), sl@0: ENTRY( "seekpL", Ctiostreams::seekpL ), sl@0: sl@0: sl@0: }; sl@0: sl@0: const TInt count = sizeof( KFunctions ) / sl@0: sizeof( TStifFunctionInfo ); sl@0: sl@0: return RunInternalL( KFunctions, count, aItem ); sl@0: sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: ofstream,ifstream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: sl@0: TInt Ctiostreams::iofstreamL( CStifItemParser& aItem ) sl@0: { sl@0: sl@0: sl@0: //__UHEAP_MARK; sl@0: int failures=0 ; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: ofstream myfile; sl@0: filebuf *fbuf; sl@0: char * buffer; sl@0: long size; sl@0: //ifstream sl@0: myfile.open ("c:\\TestFramework\\docs\\example.txt"); sl@0: if(!myfile.is_open()) sl@0: failures++; sl@0: sl@0: myfile << "Writing this to a file."; sl@0: myfile<<"\0"; sl@0: myfile.close(); sl@0: if(myfile.is_open()) sl@0: failures++; sl@0: sl@0: sl@0: sl@0: sl@0: // string line; sl@0: ifstream myfile1; sl@0: sl@0: sl@0: myfile1.open("c:\\TestFramework\\docs\\example.txt" ); sl@0: sl@0: fbuf=myfile1.rdbuf(); sl@0: sl@0: sl@0: // get file size using buffer's members sl@0: size=fbuf->pubseekoff (0,ios::end,ios::in); sl@0: fbuf->pubseekpos (0,ios::in); sl@0: sl@0: // allocate memory to contain file data sl@0: buffer=new char[size]; sl@0: sl@0: // get file data sl@0: fbuf->sgetn (buffer,size); sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: sl@0: sl@0: if(buffer != "Writing this to a file."); sl@0: else sl@0: failures++; sl@0: sl@0: if(size!= 23) sl@0: failures++; sl@0: sl@0: sl@0: if(!myfile1.is_open()) sl@0: failures++; sl@0: myfile1.close(); sl@0: if(myfile1.is_open()) sl@0: failures++; sl@0: sl@0: delete buffer; sl@0: ios_base::Init(); // 0 - 218 FUNCTION Init() iostream.cpp sl@0: filebuf* _Stl_create_filebuf(FILE* f, ios_base::openmode mode ); // 0 - 225 FUNCTION _Stl_create_filebuf() iostream.cpp sl@0: ios_base::sync_with_stdio();//0 - 445 FUNCTION ios_base::sync_with_stdio() sl@0: /* sl@0: if(failures) sl@0: sl@0: return KErrGeneral; sl@0: return KErrNone; sl@0: sl@0: */ sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: sl@0: } sl@0: sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: stringbuf sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: TInt Ctiostreams::stringbufL(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: int failures = 0; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: stringbuf sb; sl@0: string mystr; sl@0: sl@0: sb.sputn("Sample string",13); sl@0: mystr=sb.str(); sl@0: sl@0: sl@0: sl@0: if(sb.in_avail()!=13) sl@0: failures++; sl@0: sl@0: sl@0: char ch = sb.sgetc(); sl@0: if(ch!= 'S') sl@0: failures++; sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: if(mystr.compare("Sample string") != 0) sl@0: failures++; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: /* if(failures) sl@0: sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: */ sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: stringstream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: sl@0: TInt Ctiostreams::stringstreamL(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: int val; sl@0: string teststr; sl@0: int failures = 0; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: stringstream ss (stringstream::in | stringstream::out); sl@0: stringstream teststring; sl@0: sl@0: sl@0: teststring<<"stringstream testcase"; sl@0: sl@0: teststr = teststring.str(); sl@0: sl@0: if(!teststr.compare("stringstream testcase")) sl@0: ; sl@0: else sl@0: failures++; sl@0: sl@0: ss << "120 42 377 6 5 2000"; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: for (int n=0; n<6; n++) sl@0: { sl@0: ss >> val; sl@0: sl@0: switch(n) sl@0: { sl@0: case 0://precision sl@0: if(val!=120) sl@0: failures++; sl@0: break; sl@0: case 1: sl@0: if(val!=42) sl@0: failures++; sl@0: break; sl@0: case 2: sl@0: if(val!=377) sl@0: failures++; sl@0: break; sl@0: case 3: sl@0: if(val!=6) sl@0: failures++; sl@0: break; sl@0: sl@0: case 4: sl@0: if(val!=5) sl@0: failures++; sl@0: break; sl@0: sl@0: case 5: sl@0: if(val!=2000) sl@0: failures++; sl@0: break; sl@0: sl@0: default: sl@0: break; sl@0: } sl@0: sl@0: sl@0: } sl@0: sl@0: /* if(failures) sl@0: return KErrGeneral; sl@0: return KErrNone; sl@0: */ sl@0: sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: streambuf sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: TInt Ctiostreams::streambufL(CStifItemParser& aItem ) sl@0: { sl@0: // locale loc ("en_GB.UTF-8"); sl@0: sl@0: sl@0: sl@0: int failures = 0; sl@0: try sl@0: { sl@0: sl@0: sl@0: char a[4]= sl@0: { sl@0: 0 sl@0: }; sl@0: sl@0: char sentence[]= "Sample sentence"; sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: streambuf * pbuf; sl@0: ofstream ostr ("c:\\TestFramework\\docs\\streambuf.txt"); sl@0: sl@0: sl@0: sl@0: if(!cout.rdbuf( )->getloc( ).name( ).c_str( )) //failing sl@0: // failures++; sl@0: ; sl@0: char ch[14]; sl@0: //rdbuf()s sl@0: pbuf = ostr.rdbuf(); sl@0: sl@0: sl@0: //sputn() sl@0: sl@0: sl@0: sl@0: sl@0: pbuf->sputn (sentence,sizeof(sentence)-1); sl@0: sl@0: sl@0: ostr.open("c:\\TestFramework\\docs\\streambuf.txt"); sl@0: sl@0: if(!ostr.is_open()) sl@0: failures++; sl@0: sl@0: sl@0: long size1 = pbuf->pubseekoff(0,ios_base::end); sl@0: if(size1!=15) sl@0: failures++; sl@0: sl@0: sl@0: pbuf->sputc('a'); sl@0: sl@0: sl@0: long size2 = pbuf->pubseekoff(0,ios_base::end); sl@0: if(size2!=16) sl@0: failures++; sl@0: sl@0: ifstream istr("c:\\TestFramework\\docs\\streambuf.txt"); sl@0: pbuf = istr.rdbuf(); sl@0: sl@0: streamsize i = istr.rdbuf()->sgetn(&a[0], 3); sl@0: sl@0: // Display the size and contents of the buffer passed to sgetn. sl@0: if(i!=3) sl@0: failures++; sl@0: sl@0: sl@0: int k = pbuf->snextc(); sl@0: sl@0: sl@0: //sgetc() sl@0: while (pbuf->sgetc()!=EOF) sl@0: { sl@0: // static int i; sl@0: int i=0; sl@0: //sbumpc() sl@0: ch[i] = pbuf->sbumpc(); sl@0: i++; sl@0: } sl@0: sl@0: sl@0: if(ch[0]!='a' ) sl@0: failures++; sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: istr.close(); sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: /* sl@0: if(failures) sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: sl@0: */ sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: ostream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: TInt Ctiostreams::ostreamL(CStifItemParser& aItem ) sl@0: sl@0: { sl@0: sl@0: sl@0: int failures = 0; sl@0: try sl@0: { sl@0: sl@0: sl@0: filebuf fb; sl@0: char input[17] = "ostream testcase"; sl@0: streamsize size = 5; sl@0: fb.open ("c:\\TestFramework\\docs\\ostream.txt",ios::out); sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: ostream os(&fb); sl@0: sl@0: os.write(input,size); sl@0: streamoff i = os.tellp(); sl@0: if(i!= 5) sl@0: failures++; sl@0: sl@0: os.put('K'); sl@0: streamoff j = os.tellp(); sl@0: if(j!=6) sl@0: failures++; sl@0: sl@0: os.seekp(2); sl@0: os<<"i"; sl@0: streamoff k = os.tellp(); sl@0: sl@0: if(k!=3) sl@0: failures++; sl@0: sl@0: os.flush(); sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: sl@0: sl@0: /* sl@0: if(failures) sl@0: return KErrGeneral; sl@0: return KErrNone; sl@0: */ sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: istream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TInt Ctiostreams::istreamL(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: int failures =0; sl@0: try sl@0: { sl@0: sl@0: sl@0: int length; sl@0: //char * buffer; sl@0: char getl[8] ; sl@0: filebuf fb; sl@0: fb.open ("c:\\TestFramework\\docs\\istream.txt",ios::in); sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: istream is(&fb); sl@0: sl@0: //needs to rewrite sl@0: sl@0: sl@0: // get length of file: sl@0: is.seekg (0, ios::end); sl@0: length = is.tellg(); sl@0: is.seekg (0, ios::beg); sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: if(length != 7) sl@0: failures++; sl@0: sl@0: char ch = is.get(); sl@0: sl@0: sl@0: if(is.gcount() != 1) sl@0: failures++; sl@0: sl@0: sl@0: if( ch != 'S') sl@0: failures++; sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: char pk1 = is.peek(); sl@0: sl@0: if(pk1!= 'h') sl@0: failures++; sl@0: sl@0: sl@0: is.unget(); sl@0: sl@0: char pk2 = is.peek(); sl@0: if(pk2!= 'S') sl@0: failures++; sl@0: sl@0: is.get(); sl@0: is.putback('K'); sl@0: sl@0: is.getline(getl,8,'\0'); sl@0: sl@0: if(getl == "Khaheen") sl@0: failures++; sl@0: sl@0: if(is.gcount() != 7) sl@0: failures++; sl@0: sl@0: sl@0: fb.close(); sl@0: /*if(failures) sl@0: sl@0: sl@0: return KErrGeneral; sl@0: return KErrNone; sl@0: sl@0: */ sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: istringstream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: TInt Ctiostreams::istringstreamL(CStifItemParser& aItem ) sl@0: { sl@0: int n,val; sl@0: int failures =0; sl@0: try sl@0: { sl@0: string strvalues = "125 320 512 750 333"; sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: sl@0: istringstream iss (strvalues,istringstream::in); sl@0: sl@0: if(iss.str() != "125 320 512 750 333") sl@0: failures++; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: for (n=0; n<5; n++) sl@0: { sl@0: iss >> val; sl@0: switch(n) sl@0: { sl@0: case 0: sl@0: if(val!=125) sl@0: failures++; sl@0: break; sl@0: case 1: sl@0: if(val!=320) sl@0: failures++; sl@0: break; sl@0: case 2: sl@0: if(val!=512) sl@0: failures++; sl@0: break; sl@0: case 3: sl@0: if(val!=750) sl@0: failures++; sl@0: break; sl@0: sl@0: case 4: sl@0: if(val!=333) sl@0: failures++; sl@0: break; sl@0: sl@0: sl@0: default: sl@0: break; sl@0: } sl@0: sl@0: } sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: /* if(failures) sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone;*/ sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: ostringstream, sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: TInt Ctiostreams::ostringstreamL(CStifItemParser& aItem ) sl@0: { sl@0: int failures =0 ; sl@0: try sl@0: { sl@0: sl@0: sl@0: basic_string i( "test" ); sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: ostringstream ss; sl@0: sl@0: ss.rdbuf( )->str( i ); sl@0: if(ss.str( ).compare("test") != 0) sl@0: failures++; sl@0: sl@0: ss << "z"; sl@0: if(ss.str( ) .compare("zest")!=0) sl@0: failures++; sl@0: sl@0: ss.rdbuf( )->str( "be" ); sl@0: if(ss.str( ).compare("be")!=0) sl@0: failures++; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: /* sl@0: if(failures) sl@0: sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: */ sl@0: sl@0: sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: TInt Ctiostreams::ostreamiterators(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: sl@0: //needs to rewrite sl@0: //____________________ sl@0: sl@0: int arr[4] = { 3,4,7,8 }; sl@0: // int total=0; sl@0: deque d(arr+0, arr+4); sl@0: // sl@0: // stream the whole vector and a sum to cout sl@0: // sl@0: sl@0: copy(d.begin(),(d.end()-1),ostream_iterator(cout,"")); sl@0: sl@0: sl@0: if( *(d.end()-1) == 8) sl@0: return KErrNone; sl@0: return KErrGeneral; sl@0: sl@0: sl@0: } sl@0: sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: fstream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: sl@0: TInt Ctiostreams::fstreamL(CStifItemParser& aItem ) sl@0: { sl@0: // __UHEAP_MARK; sl@0: int failures =0; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: fstream filestr ("c:\\TestFramework\\docs\\fstream.txt", fstream::in | fstream::out); sl@0: sl@0: if(!filestr.is_open()) sl@0: failures++; sl@0: sl@0: filestr.close(); sl@0: if(filestr.is_open()) sl@0: failures++; sl@0: sl@0: // __UHEAP_MARKEND; sl@0: sl@0: /*if(failures) sl@0: return KErrNone; sl@0: return KErrGeneral; sl@0: */ sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Ctiostreams:: istrstream sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TInt Ctiostreams::istrstreamL(CStifItemParser& aItem ) sl@0: { sl@0: // __UHEAP_MARK; sl@0: int failures=0; sl@0: try sl@0: { sl@0: sl@0: sl@0: char* p = "This is first string"; sl@0: char* q = "This is second string"; sl@0: char* r = ""; sl@0: const char* s ="const char"; sl@0: streamsize n =10; sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: istrstream first(p); sl@0: istrstream second(q); sl@0: istrstream third(r); sl@0: sl@0: istrstream four(s); sl@0: sl@0: istrstream five(p,n); sl@0: istrstream six(s,n); sl@0: /* if(first.str() == "This is first string") sl@0: if(second.str()!= " This is second string") sl@0: if(third.str() == "") sl@0: // __UHEAP_MARKEND; sl@0: sl@0: return KErrNone; sl@0: return KErrGeneral; sl@0: */ sl@0: first.rdbuf(); sl@0: second.rdbuf(); sl@0: third.rdbuf(); sl@0: sl@0: if(first.str() != "This is first string") sl@0: if(second.str()== " This is second string") sl@0: if(third.str() != "") sl@0: failures++; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: TInt Ctiostreams::strstreamL(CStifItemParser& aItem ) sl@0: { sl@0: // __UHEAP_MARK; sl@0: sl@0: int failures = 0; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: // char* s; sl@0: // int n; sl@0: // ios_base::openmode mode; sl@0: // strstream ss3(s, n, mode); sl@0: strstream ss1,ss2; sl@0: ss1 << ""; sl@0: ss1.rdbuf(); sl@0: if(ss1.rdbuf( )->pcount( ) != 0) sl@0: failures++; sl@0: sl@0: string str1= ss1.str(); sl@0: if(str1.compare("")!=0) sl@0: failures++; sl@0: sl@0: ss2 << "strstream testcase"; sl@0: ss2 << '\0'; sl@0: if( ss2.rdbuf( )->pcount( ) != sizeof("strstream testcase\0")-1) sl@0: failures++; sl@0: sl@0: string str = ss2.str(); sl@0: sl@0: if(str.compare("strstream testcase")!= 0) sl@0: failures++; sl@0: ss1.freeze(); sl@0: //__UHEAP_MARKEND; sl@0: /* sl@0: if(failures) sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: */ sl@0: sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: TInt Ctiostreams::ostrstreamL(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: //__UHEAP_MARK; sl@0: int failures = 0; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: // char* s; sl@0: // int n; sl@0: // ios_base::openmode mode; sl@0: // ostrstream oss3( s, n, mode); sl@0: ostrstream oss1 ,oss2; sl@0: string str; sl@0: oss1 << ""; sl@0: oss1.rdbuf(); sl@0: if(oss1.rdbuf( )->pcount( ) != 0) sl@0: failures++; sl@0: sl@0: oss2 << "ostrstream testcase"; sl@0: oss2<<'\0'; sl@0: str = oss2.str(); sl@0: sl@0: if(str.compare("ostrstream testcase") !=0) sl@0: failures++; sl@0: sl@0: oss2.freeze(); sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: sl@0: // __UHEAP_MARKEND; sl@0: /* sl@0: if(failures) sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: */ sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: sl@0: TInt Ctiostreams::istreamiterators(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: // __UHEAP_MARK; sl@0: // Typedefs for convenience. sl@0: int failures=0; sl@0: try sl@0: { sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: sl@0: typedef std::vector > Vector; sl@0: sl@0: typedef std::istream_iterator, ptrdiff_t> is_iter; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: Vector v; sl@0: //__UHEAP_MARKEND; sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: sl@0: sl@0: } sl@0: sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: TInt Ctiostreams::istreambufiterators(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: sl@0: // __UHEAP_MARK; sl@0: // create a temporary filename sl@0: sl@0: int failures=0; sl@0: try sl@0: { sl@0: sl@0: sl@0: const char *fname = tmpnam (0); sl@0: sl@0: if (!fname) sl@0: return 1; sl@0: sl@0: // open the file is_iter.out for reading and writing sl@0: std::ofstream out (fname, std::ios::out | std::ios::in | sl@0: std::ios::trunc); sl@0: sl@0: // output the example sentence into the file sl@0: sl@0: // seek to the beginning of the file sl@0: out.seekp (0); sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: // construct an istreambuf_iterator pointing to sl@0: // the ofstream object underlying streambuffer sl@0: std::istreambuf_iterator >iter (out.rdbuf ()); sl@0: sl@0: // construct an end of stream iterator sl@0: const std::istreambuf_iterator > end; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: std::cout << std::endl; sl@0: sl@0: // output the content of the file sl@0: while (!iter.equal (end)) { sl@0: sl@0: // use both operator++ and operator* sl@0: std::cout << *iter++; sl@0: } sl@0: sl@0: std::cout << std::endl; sl@0: sl@0: // remove temporary file sl@0: remove (fname); sl@0: //__UHEAP_MARKEND; sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: sl@0: TInt Ctiostreams::strstreambufL(CStifItemParser& aItem ) sl@0: sl@0: sl@0: { sl@0: // __UHEAP_MARK; sl@0: sl@0: int failures =0; sl@0: try sl@0: { sl@0: sl@0: cout<<""; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: sl@0: signed char* get = NULL; sl@0: streamsize n=10; sl@0: signed char* put = NULL; sl@0: unsigned char* uget = NULL; sl@0: unsigned char* uput = NULL; sl@0: const char* cget = NULL; sl@0: const signed char* csget = NULL; sl@0: sl@0: const unsigned char* cucget = NULL; sl@0: sl@0: sl@0: typedef void* (*__alloc_fn)(size_t); sl@0: typedef void (*__free_fn)(void*); sl@0: sl@0: // __alloc_fn alloc_f; sl@0: sl@0: // __free_fn free_f; sl@0: sl@0: //overloaded sl@0: strstreambuf buf1(get, n,put); sl@0: sl@0: //overloaded sl@0: sl@0: strstreambuf buf2(uget,n,uput); sl@0: sl@0: //overloaded sl@0: strstreambuf buf3(cget,n); sl@0: //onverloaded sl@0: strstreambuf buf4(csget,n); sl@0: //overloaded sl@0: strstreambuf buf5(cucget,n); sl@0: sl@0: sl@0: // strstreambuf buf6( alloc_f, free_f); sl@0: strstreambuf buf7(n); sl@0: sl@0: strstreambuf buf; sl@0: string str; sl@0: int i = buf.sputn("strstreambuf testcase", sizeof("strstreambuf testcase")-1); sl@0: sl@0: if((buf.pcount())!= i) sl@0: failures++; sl@0: sl@0: buf.freeze(); sl@0: //if(buf.str() != "strstreambuf testcase") //fails sl@0: //failures++; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: sl@0: //__UHEAP_MARKEND; sl@0: /*if(failures) sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: */ sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: TInt Ctiostreams::freezeL(CStifItemParser& aItem ) sl@0: { sl@0: sl@0: int failures=0; sl@0: try sl@0: { sl@0: sl@0: strstream x; sl@0: int failures =0; sl@0: x << "test1"; sl@0: sl@0: if(!x.good()) sl@0: failures++; sl@0: cout<<""; sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: sl@0: x.rdbuf()->freeze(); sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: if(!x.good()) sl@0: failures++; sl@0: sl@0: // Stream is bad now, wrote on frozen stream sl@0: x << "test1.5"; sl@0: sl@0: // report(x); sl@0: if(!x.good()) sl@0: failures++; sl@0: // Unfreeze stream, but it is still bad sl@0: x.rdbuf()->freeze(false); sl@0: if(!x.good()) sl@0: failures++; sl@0: sl@0: // Clear stream sl@0: x.clear(); sl@0: sl@0: if(!x.good()) sl@0: failures++; sl@0: sl@0: sl@0: x << "test3"; sl@0: sl@0: sl@0: sl@0: sl@0: // Clean up. Failure to unfreeze stream will cause a sl@0: // memory leak. sl@0: x.rdbuf()->freeze(false); sl@0: /* sl@0: if(failures) sl@0: return KErrGeneral; sl@0: else sl@0: return KErrNone; sl@0: sl@0: */ sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: TInt Ctiostreams::fposL(CStifItemParser& aItem ) sl@0: { sl@0: int failures=0; sl@0: try sl@0: { sl@0: sl@0: sl@0: // streamoff s; sl@0: ifstream file( "c:\\TestFramework\\docs\\fpos_state.txt" ); sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: fpos f = file.tellg( ); sl@0: char ch; sl@0: while ( !file.eof( ) ) sl@0: file.get( ch ); sl@0: sl@0: f.state(); sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: //s = f; sl@0: // if(f.state( )) sl@0: // failures++; sl@0: // f.state( 9 ); sl@0: // if( f.state( )) sl@0: // failures++; sl@0: /*if(failures) sl@0: return KErrGeneral; sl@0: return KErrNone;*/ sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // Cstdcpp_filebuf::filebufL sl@0: // Example test method function. sl@0: // (other items were commented in a header). sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TInt Ctiostreams::filebufL( CStifItemParser& aItem ) sl@0: { sl@0: int failures=0; sl@0: try sl@0: { sl@0: sl@0: sl@0: sl@0: ifstream is; sl@0: cout<<""; sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::EDeterministic,1); sl@0: #endif sl@0: filebuf * fb; sl@0: sl@0: fb = is.rdbuf(); sl@0: fb->open ("c:\\TestFramework\\docs\\filebuf.txt",ios::in); sl@0: sl@0: if(!fb->is_open()) sl@0: failures++; sl@0: sl@0: sl@0: fb->close(); sl@0: if(fb->is_open()) sl@0: failures++; sl@0: sl@0: sl@0: #if STDCPP_OOM sl@0: User::__DbgSetAllocFail(FALSE,RHeap::ENone,1); sl@0: #endif sl@0: /* sl@0: if(failures) sl@0: return KErrGeneral; sl@0: return KErrNone; sl@0: */ sl@0: sl@0: //#if STDCPP_OOM sl@0: //failures++; sl@0: // #endif sl@0: sl@0: } sl@0: sl@0: catch(bad_alloc&) sl@0: { sl@0: //do nothing sl@0: } sl@0: catch(...) sl@0: { sl@0: failures++; sl@0: sl@0: } sl@0: sl@0: if( failures == 0 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: TInt Ctiostreams::seekpL( CStifItemParser& aItem ) sl@0: { sl@0: sl@0: ostringstream oss2; sl@0: sl@0: oss2<<"Do me a favor"; sl@0: long pos2 = oss2.tellp(); // 13 sl@0: sl@0: oss2 << "pp"; sl@0: pos2 = oss2.tellp(); // 15 sl@0: oss2.seekp(pos2 - 2); sl@0: pos2 = oss2.tellp(); // 13 sl@0: string temp = "ss"; sl@0: oss2.write(temp.c_str(), temp.size()); sl@0: pos2 = oss2.tellp(); // 15 sl@0: oss2.seekp(pos2 - 2); sl@0: pos2 = oss2.tellp(); // 13 sl@0: oss2 << "ss"; sl@0: pos2 = oss2.tellp(); // 15 sl@0: oss2.seekp(pos2 - 2); sl@0: pos2 = oss2.tellp(); // 13 sl@0: oss2 << "ss"; sl@0: sl@0: pos2 = oss2.tellp(); sl@0: sl@0: oss2.seekp(pos2 - 2); sl@0: pos2 = oss2.tellp(); sl@0: oss2 << "pp"; sl@0: pos2 = oss2.tellp(); //15 sl@0: sl@0: oss2.seekp(pos2 - 5); sl@0: pos2 = oss2.tellp(); sl@0: oss2 << "pppp"; sl@0: pos2 = oss2.tellp(); //14 sl@0: oss2.seekp(pos2 - 3); sl@0: pos2 = oss2.tellp(); sl@0: oss2 << "ppp"; sl@0: pos2 = oss2.tellp(); //14 sl@0: oss2 << "pppppp"; sl@0: pos2 = oss2.tellp(); //20 sl@0: sl@0: sl@0: if( pos2 == 20 ) sl@0: return KErrNone; sl@0: else sl@0: return KErrGeneral; sl@0: } sl@0: sl@0: sl@0: sl@0: // End of File