CPPUNIT_TEST( Int64RW );
#endif
CPPUNIT_TEST( NaNRW );
+ CPPUNIT_TEST( PseudoTest_UseBigEndian );
+ CPPUNIT_TEST( FloatRW );
+ CPPUNIT_TEST( DoubleRW );
+ // Only test standard IEEE 754 formats if we're using IEEE extended
+ // format by default, otherwise the tests above already covered them.
+#if wxUSE_APPLE_IEEE
+ CPPUNIT_TEST( PseudoTest_UseIEEE754 );
+ CPPUNIT_TEST( FloatRW );
+ CPPUNIT_TEST( DoubleRW );
+ // Also retest little endian version with standard formats.
+ CPPUNIT_TEST( PseudoTest_UseLittleEndian );
+ CPPUNIT_TEST( FloatRW );
+ CPPUNIT_TEST( DoubleRW );
+#endif // wxUSE_APPLE_IEEE
CPPUNIT_TEST_SUITE_END();
+ wxFloat64 TestFloatRW(wxFloat64 fValue);
+
void FloatRW();
void DoubleRW();
#if wxUSE_LONGLONG
#endif
void NaNRW();
+ void PseudoTest_UseBigEndian() { ms_useBigEndianFormat = true; }
+ void PseudoTest_UseLittleEndian() { ms_useBigEndianFormat = false; }
+#if wxUSE_APPLE_IEEE
+ void PseudoTest_UseIEEE754() { ms_useIEEE754 = true; }
+#endif // wxUSE_APPLE_IEEE
+
+ static bool ms_useBigEndianFormat;
+#if wxUSE_APPLE_IEEE
+ static bool ms_useIEEE754;
+#endif // wxUSE_APPLE_IEEE
+
DECLARE_NO_COPY_CLASS(DataStreamTestCase)
};
// also include in its own registry so that these tests can be run alone
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( DataStreamTestCase, "DataStreamTestCase" );
+bool DataStreamTestCase::ms_useBigEndianFormat = false;
+#if wxUSE_APPLE_IEEE
+bool DataStreamTestCase::ms_useIEEE754 = false;
+#endif // wxUSE_APPLE_IEEE
+
DataStreamTestCase::DataStreamTestCase()
{
}
-static
-wxFloat64 TestFloatRW(wxFloat64 fValue)
+wxFloat64 DataStreamTestCase::TestFloatRW(wxFloat64 fValue)
{
- wxFileOutputStream* pFileOutput = new wxFileOutputStream( wxT("mytext.dat") );
- wxDataOutputStream* pDataOutput = new wxDataOutputStream( *pFileOutput );
+ {
+ wxFileOutputStream pFileOutput( wxT("mytext.dat") );
+ wxDataOutputStream pDataOutput( pFileOutput );
+ if ( ms_useBigEndianFormat )
+ pDataOutput.BigEndianOrdered(true);
- *pDataOutput << fValue;
+#if wxUSE_APPLE_IEEE
+ if ( ms_useIEEE754 )
+ pDataOutput.UseBasicPrecisions();
+#endif // wxUSE_APPLE_IEEE
- delete pDataOutput;
- delete pFileOutput;
+ pDataOutput << fValue;
+ }
- wxFileInputStream* pFileInput = new wxFileInputStream( wxT("mytext.dat") );
- wxDataInputStream* pDataInput = new wxDataInputStream( *pFileInput );
+ wxFileInputStream pFileInput( wxT("mytext.dat") );
+ wxDataInputStream pDataInput( pFileInput );
+ if ( ms_useBigEndianFormat )
+ pDataInput.BigEndianOrdered(true);
- wxFloat64 fInFloat;
+#if wxUSE_APPLE_IEEE
+ if ( ms_useIEEE754 )
+ pDataInput.UseBasicPrecisions();
+#endif // wxUSE_APPLE_IEEE
- *pDataInput >> fInFloat;
+ wxFloat64 fInFloat;
- delete pDataInput;
- delete pFileInput;
+ pDataInput >> fInFloat;
return fInFloat;
}