X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1d4037aa1f081ee2273468aa6f6cc5918d5e7d14..d4cf50c8b2574caec6dc13f7dfb0f3ee2b92842e:/tests/longlong/longlongtest.cpp diff --git a/tests/longlong/longlongtest.cpp b/tests/longlong/longlongtest.cpp index 043a259cef..595a86553d 100644 --- a/tests/longlong/longlongtest.cpp +++ b/tests/longlong/longlongtest.cpp @@ -24,6 +24,8 @@ #include "wx/longlong.h" #include "wx/timer.h" +#if wxUSE_LONGLONG + // ---------------------------------------------------------------------------- // helpers for testing // ---------------------------------------------------------------------------- @@ -66,6 +68,8 @@ private: CPPUNIT_TEST( Division ); CPPUNIT_TEST( BitOperations ); CPPUNIT_TEST( ToString ); + CPPUNIT_TEST( LoHi ); + CPPUNIT_TEST( Limits ); CPPUNIT_TEST_SUITE_END(); void Conversion(); @@ -75,6 +79,8 @@ private: void Division(); void BitOperations(); void ToString(); + void LoHi(); + void Limits(); DECLARE_NO_COPY_CLASS(LongLongTestCase) }; @@ -82,7 +88,7 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( LongLongTestCase ); -// also include in it's own registry so that these tests can be run alone +// also include in its own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( LongLongTestCase, "LongLongTestCase" ); LongLongTestCase::LongLongTestCase() @@ -233,7 +239,7 @@ void LongLongTestCase::Division() void LongLongTestCase::BitOperations() { - for ( size_t n = 0; n < ITEMS; n++ ) + for ( size_t m = 0; m < ITEMS; m++ ) { wxLongLong a = RAND_LL(); @@ -277,7 +283,7 @@ void LongLongTestCase::ToString() for ( size_t n = 0; n < WXSIZEOF(testLongs); n++ ) { wxLongLong a = testLongs[n]; - s1 = wxString::Format(_T("%ld"), testLongs[n]); + s1 = wxString::Format(wxT("%ld"), testLongs[n]); s2 = a.ToString(); CPPUNIT_ASSERT( s1 == s2 ); @@ -299,26 +305,53 @@ void LongLongTestCase::ToString() } wxLongLong a(0x12345678, 0x87654321); - CPPUNIT_ASSERT( a.ToString() == _T("1311768467139281697") ); + CPPUNIT_ASSERT( a.ToString() == wxT("1311768467139281697") ); a.Negate(); - CPPUNIT_ASSERT( a.ToString() == _T("-1311768467139281697") ); + CPPUNIT_ASSERT( a.ToString() == wxT("-1311768467139281697") ); - wxLongLong llMin(LONG_MIN, 0); - CPPUNIT_ASSERT( a.ToString() == _T("-9223372036854775808") ); + wxLongLong llMin(-2147483647L - 1L, 0); + CPPUNIT_ASSERT( llMin.ToString() == wxT("-9223372036854775808") ); #if wxUSE_LONGLONG_WX wxLongLongWx a1(a.GetHi(), a.GetLo()); - CPPUNIT_ASSERT( a1.ToString() == _T("-1311768467139281697") ); + CPPUNIT_ASSERT( a1.ToString() == wxT("-1311768467139281697") ); a1.Negate(); - CPPUNIT_ASSERT( a1.ToString() == _T("1311768467139281697") ); + CPPUNIT_ASSERT( a1.ToString() == wxT("1311768467139281697") ); #endif #if wxUSE_LONGLONG_NATIVE wxLongLongNative a2(a.GetHi(), a.GetLo()); - CPPUNIT_ASSERT( a2.ToString() == _T("-1311768467139281697") ); + CPPUNIT_ASSERT( a2.ToString() == wxT("-1311768467139281697") ); a2.Negate(); - CPPUNIT_ASSERT( a2.ToString() == _T("1311768467139281697") ); + CPPUNIT_ASSERT( a2.ToString() == wxT("1311768467139281697") ); #endif } +void LongLongTestCase::LoHi() +{ + wxLongLong ll(123, 456); + CPPUNIT_ASSERT_EQUAL( 456u, ll.GetLo() ); + CPPUNIT_ASSERT_EQUAL( 123, ll.GetHi() ); + + wxULongLong ull(987, 654); + CPPUNIT_ASSERT_EQUAL( 654u, ull.GetLo() ); + CPPUNIT_ASSERT_EQUAL( 987u, ull.GetHi() ); +} + +void LongLongTestCase::Limits() +{ + // VC6 doesn't specialize numeric_limits<> for __int64 so skip this test + // for it. +#ifndef __VISUALC6__ +#if wxUSE_LONGLONG_NATIVE + CPPUNIT_ASSERT( std::numeric_limits::is_specialized ); + CPPUNIT_ASSERT( std::numeric_limits::is_specialized ); + + wxULongLong maxval = std::numeric_limits::max(); + CPPUNIT_ASSERT( maxval.ToDouble() > 0 ); +#endif // wxUSE_LONGLONG_NATIVE +#endif // !__VISUALC6__ +} + +#endif // wxUSE_LONGLONG