X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8cd79b7af0760eb91d42ff9ac7c0ccead8d50c6b..f155075229d771430f0793700f5048ad4be00e9d:/tests/graphics/measuring.cpp diff --git a/tests/graphics/measuring.cpp b/tests/graphics/measuring.cpp index dbf032bee0..ae02d27239 100644 --- a/tests/graphics/measuring.cpp +++ b/tests/graphics/measuring.cpp @@ -31,6 +31,8 @@ #endif #include "wx/dcclient.h" +#include "wx/dcps.h" +#include "wx/metafile.h" // ---------------------------------------------------------------------------- // test class @@ -51,9 +53,6 @@ private: #endif // TEST_GC CPPUNIT_TEST_SUITE_END(); - template - void DoTestGetTextExtent(const T& obj); - void DCGetTextExtent(); void WindowGetTextExtent(); @@ -73,35 +72,66 @@ CPPUNIT_TEST_SUITE_REGISTRATION( MeasuringTextTestCase ); CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MeasuringTextTestCase, "MeasuringTextTestCase" ); // ---------------------------------------------------------------------------- -// tests themselves +// helper for XXXTextExtent() methods // ---------------------------------------------------------------------------- template -void MeasuringTextTestCase::DoTestGetTextExtent(const T& obj) +struct GetTextExtentTester { - // Test that getting the height only doesn't crash. - int y; - obj.GetTextExtent("H", NULL, &y); - - CPPUNIT_ASSERT( y > 1 ); + // Constructor runs a couple of simple tests for GetTextExtent(). + GetTextExtentTester(const T& obj) + { + // Test that getting the height only doesn't crash. + int y; + obj.GetTextExtent("H", NULL, &y); + + CPPUNIT_ASSERT( y > 1 ); + + wxSize size = obj.GetTextExtent("Hello"); + CPPUNIT_ASSERT( size.x > 1 ); + CPPUNIT_ASSERT_EQUAL( y, size.y ); + } +}; - wxSize size = obj.GetTextExtent("Hello"); - CPPUNIT_ASSERT( size.x > 1 ); - CPPUNIT_ASSERT_EQUAL( y, size.y ); -} +// ---------------------------------------------------------------------------- +// tests themselves +// ---------------------------------------------------------------------------- void MeasuringTextTestCase::DCGetTextExtent() { wxClientDC dc(wxTheApp->GetTopWindow()); - DoTestGetTextExtent(dc); + GetTextExtentTester testDC(dc); + + int w; + dc.GetMultiLineTextExtent("Good\nbye", &w, NULL); + const wxSize sz = dc.GetTextExtent("Good"); + CPPUNIT_ASSERT_EQUAL( sz.x, w ); + + CPPUNIT_ASSERT( dc.GetMultiLineTextExtent("Good\nbye").y >= 2*sz.y ); + + // Test the functions with some other DC kinds also. +#if wxUSE_PRINTING_ARCHITECTURE && wxUSE_POSTSCRIPT + wxPostScriptDC psdc; + // wxPostScriptDC doesn't have any font set by default but its + // GetTextExtent() requires one to be set. This is probably a bug and we + // should set the default font in it implicitly but for now just work + // around it. + psdc.SetFont(*wxNORMAL_FONT); + GetTextExtentTester testPS(psdc); +#endif + +#if wxUSE_ENH_METAFILE + wxEnhMetaFileDC metadc; + GetTextExtentTester testMF(metadc); +#endif } void MeasuringTextTestCase::WindowGetTextExtent() { wxWindow* const win = wxTheApp->GetTopWindow(); - DoTestGetTextExtent(*win); + GetTextExtentTester testWin(*win); } void MeasuringTextTestCase::GetPartialTextExtent()