From: Christian P. <cp...@us...> - 2005-01-06 17:02:09
|
Update of /cvsroot/pclasses/pclasses2/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17154 Modified Files: IOTest.cpp Log Message: Also test IOFilters. Index: IOTest.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/test/IOTest.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- IOTest.cpp 31 Dec 2004 15:01:57 -0000 1.2 +++ IOTest.cpp 6 Jan 2005 17:02:00 -0000 1.3 @@ -20,16 +20,20 @@ #include "Test.h" #include "pclasses/IO/IOStream.h" +#include "pclasses/IO/IOFilter.h" +#include "pclasses/IO/ZLibIOFilter.h" #include "pclasses/System/File.h" #include "pclasses/System/Pipe.h" #include "pclasses/System/Process.h" #include "pclasses/System/ProcessIO.h" #include <string> +#include <zlib.h> namespace P { using IO::IOStream; +using IO::IOFilter; using System::File; using System::Pipe; using System::Process; @@ -38,11 +42,17 @@ class FileTest: public UnitTest { public: + FileTest(IOFilter* filter) + : _filter(filter) + { + } + void run() throw() { char data[] = "test"; File file("pclasses_file_test.tmp", File::ReadWrite); + file.setFilter(_filter); P_TEST(file.valid()); // write data to file @@ -50,7 +60,15 @@ P_TEST(file.size() == 4); // seek to beginning of file - P_TEST(file.seek(0, File::SeekSet) == 0); + if(file.isSeekable()) + { + P_TEST(file.seek(0, File::SeekSet) == 0); + } + else + { + file.close(); + file.open("pclasses_file_test.tmp", File::Read); + } // read data from file char tmp[4]; @@ -67,7 +85,6 @@ // close file file.close(); P_TEST(!file.valid()); - P_TEST_EXCEPTION(file.close(), LogicError); // this must fail cause pclasses_file_test.tmp already exists... P_TEST_EXCEPTION( @@ -75,10 +92,17 @@ IO::IOError ); } + + private: + IOFilter* _filter; }; class PipeTest: public UnitTest { public: + PipeTest(IOFilter* filter1, IOFilter* filter2) + : _filter1(filter1), _filter2(filter2) + { + } void run() throw() { @@ -87,7 +111,10 @@ Pipe::Pair pipes = Pipe::create(); Pipe& readPipe = pipes.first; + readPipe.setFilter(_filter1); + Pipe& writePipe = pipes.second; + writePipe.setFilter(_filter2); P_TEST(writePipe.valid()); P_TEST(writePipe.write(data, 4) == 4); @@ -102,20 +129,25 @@ writePipe.close(); P_TEST(!writePipe.valid()); - P_TEST_EXCEPTION(writePipe.close(), LogicError); P_TEST(readPipe.read(tmp, 1) == 0); P_TEST(readPipe.eof()); readPipe.close(); P_TEST(!readPipe.valid()); - P_TEST_EXCEPTION(readPipe.close(), LogicError); } + + private: + IOFilter* _filter1, *_filter2; }; class ProcessIOTest: public UnitTest { public: - + ProcessIOTest(IOFilter* filter) + : _filter(filter) + { + } + void run() throw() { char data[] = "test"; @@ -129,6 +161,7 @@ char tmp[4]; ProcessIO& io = proc.processIO(); + io.setFilter(_filter); P_TEST(io.read(tmp, 4) == 4); P_TEST(io.readErr(tmp, 4) == 4); @@ -138,8 +171,12 @@ P_TEST(proc.wait() == 0); P_TEST(proc.state() == Process::Stopped); } + + private: + IOFilter* _filter; }; + } int main(int argc, char* argv[]) @@ -156,14 +193,26 @@ return 0; } - P::PipeTest pt; - pt.run(); - - P::FileTest ft; + P::FileTest ft(0); ft.run(); - P::ProcessIOTest piot; + P::PipeTest pt(0, 0); + pt.run(); + + P::ProcessIOTest piot(0); piot.run(); + // re-run with NullFilter + P::FileTest ft2(new P::IO::IOFilter()); + ft2.run(); + + P::PipeTest pt2(new P::IO::IOFilter(), new P::IO::IOFilter()); + pt2.run(); + + P::ProcessIOTest piot2(new P::IO::IOFilter()); + piot2.run(); + + P::FileTest ft3(new P::IO::ZLibIOFilter()); + ft3.run(); return 0; } |