X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/393b6027be459dc9a5cd60d6fcee41999ad7069a..736692f3a4a35b24b80f94784183e0d46fba22d9:/tests/streams/datastreamtest.cpp diff --git a/tests/streams/datastreamtest.cpp b/tests/streams/datastreamtest.cpp index 955d403903..0b5b09f847 100644 --- a/tests/streams/datastreamtest.cpp +++ b/tests/streams/datastreamtest.cpp @@ -3,7 +3,6 @@ // Purpose: wxDataXXXStream Unit Test // Author: Ryan Norton // Created: 2004-08-14 -// RCS-ID: $Id$ // Copyright: (c) 2004 Ryan Norton /////////////////////////////////////////////////////////////////////////////// @@ -47,8 +46,24 @@ private: 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 @@ -59,6 +74,17 @@ private: #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) }; @@ -68,22 +94,40 @@ CPPUNIT_TEST_SUITE_REGISTRATION( 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;