data stream test for extended
[wxWidgets.git] / tests / streams / datastreamtest.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/streams/datastreamtest.cpp
3 // Purpose: wxDataXXXStream Unit Test
4 // Author: Ryan Norton
5 // Created: 2004-08-14
6 // RCS-ID: $Id$
7 // Copyright: (c) 2004 Ryan Norton
8 ///////////////////////////////////////////////////////////////////////////////
9
10 // ----------------------------------------------------------------------------
11 // headers
12 // ----------------------------------------------------------------------------
13
14 #include "testprec.h"
15
16 #ifdef __BORLANDC__
17 #pragma hdrstop
18 #endif
19
20 #ifndef WX_PRECOMP
21 #include "wx/wx.h"
22 #endif // WX_PRECOMP
23
24 #include "wx/datstrm.h"
25 #include "wx/wfstream.h"
26
27 #include <math.h> //HUGE
28
29 // ----------------------------------------------------------------------------
30 // test class
31 // ----------------------------------------------------------------------------
32
33 class DataStreamTestCase : public CppUnit::TestCase
34 {
35 public:
36 DataStreamTestCase();
37
38 private:
39 CPPUNIT_TEST_SUITE( DataStreamTestCase );
40 CPPUNIT_TEST( FloatRW );
41 CPPUNIT_TEST( DoubleRW );
42 CPPUNIT_TEST( NaNRW );
43 CPPUNIT_TEST_SUITE_END();
44
45 void FloatRW();
46 void DoubleRW();
47 void NaNRW();
48
49 DECLARE_NO_COPY_CLASS(DataStreamTestCase)
50 };
51
52 // register in the unnamed registry so that these tests are run by default
53 CPPUNIT_TEST_SUITE_REGISTRATION( DataStreamTestCase );
54
55 // also include in it's own registry so that these tests can be run alone
56 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( DataStreamTestCase, "DataStreamTestCase" );
57
58 DataStreamTestCase::DataStreamTestCase()
59 {
60 }
61
62 wxFloat64 TestFloatRW(wxFloat64 fValue)
63 {
64 wxFileOutputStream* pFileOutput = new wxFileOutputStream( _T("mytext.dat") );
65 wxDataOutputStream* pDataOutput = new wxDataOutputStream( *pFileOutput );
66
67 *pDataOutput << fValue;
68
69 delete pDataOutput;
70 delete pFileOutput;
71
72 wxFileInputStream* pFileInput = new wxFileInputStream( _T("mytext.dat") );
73 wxDataInputStream* pDataInput = new wxDataInputStream( *pFileInput );
74
75 wxFloat64 fInFloat;
76
77 *pDataInput >> fInFloat;
78
79 delete pDataInput;
80 delete pFileInput;
81
82 return fInFloat;
83 }
84
85 void DataStreamTestCase::FloatRW()
86 {
87 CPPUNIT_ASSERT( TestFloatRW(5.5) == 5.5 );
88 CPPUNIT_ASSERT( TestFloatRW(5) == 5 );
89 CPPUNIT_ASSERT( TestFloatRW(5.55) == 5.55 );
90 CPPUNIT_ASSERT( TestFloatRW(55555.555555) == 55555.555555 );
91 }
92
93 void DataStreamTestCase::DoubleRW()
94 {
95 CPPUNIT_ASSERT( TestFloatRW(2132131.1232132) == 2132131.1232132 );
96 CPPUNIT_ASSERT( TestFloatRW(21321343431.1232143432) == 21321343431.1232143432 );
97 }
98
99 void DataStreamTestCase::NaNRW()
100 {
101 //TODO?
102 }
103
104