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( wxT("mytext.dat") );
wxDataOutputStream pDataOutput( pFileOutput );
+ if ( ms_useBigEndianFormat )
+ pDataOutput.BigEndianOrdered(true);
+
+#if wxUSE_APPLE_IEEE
+ if ( ms_useIEEE754 )
+ pDataOutput.UseBasicPrecisions();
+#endif // wxUSE_APPLE_IEEE
pDataOutput << fValue;
}
wxFileInputStream pFileInput( wxT("mytext.dat") );
wxDataInputStream pDataInput( pFileInput );
+ if ( ms_useBigEndianFormat )
+ pDataInput.BigEndianOrdered(true);
+
+#if wxUSE_APPLE_IEEE
+ if ( ms_useIEEE754 )
+ pDataInput.UseBasicPrecisions();
+#endif // wxUSE_APPLE_IEEE
wxFloat64 fInFloat;