+ // 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 );
+ }
+};
+
+// ----------------------------------------------------------------------------
+// tests themselves
+// ----------------------------------------------------------------------------
+
+void MeasuringTextTestCase::DCGetTextExtent()
+{
+ wxClientDC dc(wxTheApp->GetTopWindow());
+
+ GetTextExtentTester<wxClientDC> 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<wxPostScriptDC> testPS(psdc);
+#endif
+
+#if wxUSE_ENH_METAFILE
+ wxEnhMetaFileDC metadc;
+ GetTextExtentTester<wxEnhMetaFileDC> testMF(metadc);
+#endif