X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/968d3a2461fb6cd36ce76df4d32e3e71b7043499..c2f8c2b245959f612f0ebac31ab8d80bef6ea9e2:/tests/graphics/ellipsization.cpp?ds=sidebyside diff --git a/tests/graphics/ellipsization.cpp b/tests/graphics/ellipsization.cpp index 84fdbd3206..bce6235ea4 100644 --- a/tests/graphics/ellipsization.cpp +++ b/tests/graphics/ellipsization.cpp @@ -3,7 +3,6 @@ // Purpose: wxControlBase::*Ellipsize* unit test // Author: Francesco Montorsi // Created: 2010-03-10 -// RCS-ID: $Id$ // Copyright: (c) 2010 Francesco Montorsi /////////////////////////////////////////////////////////////////////////////// @@ -31,10 +30,16 @@ public: private: CPPUNIT_TEST_SUITE( EllipsizationTestCase ); - CPPUNIT_TEST( Ellipsize ); + CPPUNIT_TEST( NormalCase ); + CPPUNIT_TEST( EnoughSpace ); + CPPUNIT_TEST( VeryLittleSpace ); + CPPUNIT_TEST( HasThreeDots ); CPPUNIT_TEST_SUITE_END(); - void Ellipsize(); + void NormalCase(); + void EnoughSpace(); + void VeryLittleSpace(); + void HasThreeDots(); DECLARE_NO_COPY_CLASS(EllipsizationTestCase) }; @@ -42,10 +47,10 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( EllipsizationTestCase ); -// 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( EllipsizationTestCase, "EllipsizationTestCase" ); -void EllipsizationTestCase::Ellipsize() +void EllipsizationTestCase::NormalCase() { wxMemoryDC dc; @@ -81,7 +86,7 @@ void EllipsizationTestCase::Ellipsize() wxELLIPSIZE_END }; - int widthsToTest[] = { 0, 1, 2, 3, 10, 20, 100 }; + int widthsToTest[] = { 50, 100, 150 }; for ( unsigned int s = 0; s < WXSIZEOF(stringsToTest); s++ ) { @@ -93,7 +98,7 @@ void EllipsizationTestCase::Ellipsize() { for ( unsigned int w = 0; w < WXSIZEOF(widthsToTest); w++ ) { - wxString ret = wxControlBase::Ellipsize + wxString ret = wxControl::Ellipsize ( str, dc, @@ -104,7 +109,12 @@ void EllipsizationTestCase::Ellipsize() WX_ASSERT_MESSAGE ( - ("invalid ellipsization for \"%s\"", str), + ( + "invalid ellipsization for \"%s\" (%dpx, should be <=%dpx)", + str, + dc.GetMultiLineTextExtent(ret).GetWidth(), + widthsToTest[w] + ), dc.GetMultiLineTextExtent(ret).GetWidth() <= widthsToTest[w] ); } @@ -112,3 +122,50 @@ void EllipsizationTestCase::Ellipsize() } } } + + +void EllipsizationTestCase::EnoughSpace() +{ + // No ellipsization should occur if there's plenty of space. + + wxMemoryDC dc; + + CPPUNIT_ASSERT_EQUAL("some label", + wxControl::Ellipsize("some label", dc, wxELLIPSIZE_START, 200)); + CPPUNIT_ASSERT_EQUAL("some label", + wxControl::Ellipsize("some label", dc, wxELLIPSIZE_MIDDLE, 200)); + CPPUNIT_ASSERT_EQUAL("some label", + wxControl::Ellipsize("some label", dc, wxELLIPSIZE_END, 200)); +} + + +void EllipsizationTestCase::VeryLittleSpace() +{ + // If there's not enough space, the shortened label should still contain "..." and one character + + wxMemoryDC dc; + + CPPUNIT_ASSERT_EQUAL("...l", + wxControl::Ellipsize("some label", dc, wxELLIPSIZE_START, 5)); + CPPUNIT_ASSERT_EQUAL("s...", + wxControl::Ellipsize("some label", dc, wxELLIPSIZE_MIDDLE, 5)); + CPPUNIT_ASSERT_EQUAL("s...", + wxControl::Ellipsize("some label1", dc, wxELLIPSIZE_MIDDLE, 5)); + CPPUNIT_ASSERT_EQUAL("s...", + wxControl::Ellipsize("some label", dc, wxELLIPSIZE_END, 5)); +} + + +void EllipsizationTestCase::HasThreeDots() +{ + wxMemoryDC dc; + + CPPUNIT_ASSERT( wxControl::Ellipsize("some longer text", dc, wxELLIPSIZE_START, 80).StartsWith("...") ); + CPPUNIT_ASSERT( !wxControl::Ellipsize("some longer text", dc, wxELLIPSIZE_START, 80).EndsWith("...") ); + + CPPUNIT_ASSERT( wxControl::Ellipsize("some longer text", dc, wxELLIPSIZE_END, 80).EndsWith("...") ); + + CPPUNIT_ASSERT( wxControl::Ellipsize("some longer text", dc, wxELLIPSIZE_MIDDLE, 80).Contains("...") ); + CPPUNIT_ASSERT( !wxControl::Ellipsize("some longer text", dc, wxELLIPSIZE_MIDDLE, 80).StartsWith("...") ); + CPPUNIT_ASSERT( !wxControl::Ellipsize("some longer text", dc, wxELLIPSIZE_MIDDLE, 80).EndsWith("...") ); +}