/////////////////////////////////////////////////////////////////////////////// // Name: tests/html/htmlwindow.cpp // Purpose: wxHtmlWindow tests // Author: Vaclav Slavik // Created: 2008-10-15 // Copyright: (c) 2008 Vaclav Slavik /////////////////////////////////////////////////////////////////////////////// // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- #include "testprec.h" #if wxUSE_HTML #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/app.h" #endif // WX_PRECOMP #include "wx/html/htmlwin.h" #include "wx/uiaction.h" #include "testableframe.h" // ---------------------------------------------------------------------------- // test class // ---------------------------------------------------------------------------- class HtmlWindowTestCase : public CppUnit::TestCase { public: HtmlWindowTestCase() { } virtual void setUp() wxOVERRIDE; virtual void tearDown() wxOVERRIDE; private: CPPUNIT_TEST_SUITE( HtmlWindowTestCase ); CPPUNIT_TEST( SelectionToText ); CPPUNIT_TEST( Title ); #if wxUSE_UIACTIONSIMULATOR WXUISIM_TEST( CellClick ); WXUISIM_TEST( LinkClick ); #endif // wxUSE_UIACTIONSIMULATOR CPPUNIT_TEST( AppendToPage ); CPPUNIT_TEST_SUITE_END(); void SelectionToText(); void Title(); void CellClick(); void LinkClick(); void AppendToPage(); wxHtmlWindow *m_win; wxDECLARE_NO_COPY_CLASS(HtmlWindowTestCase); }; // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( HtmlWindowTestCase ); // also include in its own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( HtmlWindowTestCase, "HtmlWindowTestCase" ); // ---------------------------------------------------------------------------- // test initialization // ---------------------------------------------------------------------------- void HtmlWindowTestCase::setUp() { m_win = new wxHtmlWindow(wxTheApp->GetTopWindow(), wxID_ANY, wxDefaultPosition, wxSize(400, 200)); } void HtmlWindowTestCase::tearDown() { DeleteTestWindow(m_win); m_win = NULL; } // ---------------------------------------------------------------------------- // tests themselves // ---------------------------------------------------------------------------- static const char *TEST_MARKUP = "" "Page" " Title

" " A longer line
" " and the last line." ""; static const char *TEST_MARKUP_LINK = "" "link<\\a> " ""; static const char *TEST_PLAIN_TEXT = "Title\nA longer line\nand the last line."; void HtmlWindowTestCase::SelectionToText() { #if wxUSE_CLIPBOARD m_win->SetPage(TEST_MARKUP); m_win->SelectAll(); CPPUNIT_ASSERT_EQUAL( TEST_PLAIN_TEXT, m_win->SelectionToText() ); #endif // wxUSE_CLIPBOARD } void HtmlWindowTestCase::Title() { m_win->SetPage(TEST_MARKUP); CPPUNIT_ASSERT_EQUAL("Page", m_win->GetOpenedPageTitle()); } #if wxUSE_UIACTIONSIMULATOR void HtmlWindowTestCase::CellClick() { EventCounter clicked(m_win, wxEVT_HTML_CELL_CLICKED); wxUIActionSimulator sim; m_win->SetPage(TEST_MARKUP); m_win->Update(); m_win->Refresh(); sim.MouseMove(m_win->ClientToScreen(wxPoint(15, 15))); wxYield(); sim.MouseClick(); wxYield(); CPPUNIT_ASSERT_EQUAL(1, clicked.GetCount()); } void HtmlWindowTestCase::LinkClick() { EventCounter clicked(m_win, wxEVT_HTML_LINK_CLICKED); wxUIActionSimulator sim; m_win->SetPage(TEST_MARKUP_LINK); m_win->Update(); m_win->Refresh(); sim.MouseMove(m_win->ClientToScreen(wxPoint(15, 15))); wxYield(); sim.MouseClick(); wxYield(); CPPUNIT_ASSERT_EQUAL(1, clicked.GetCount()); } #endif // wxUSE_UIACTIONSIMULATOR void HtmlWindowTestCase::AppendToPage() { #if wxUSE_CLIPBOARD m_win->SetPage(TEST_MARKUP_LINK); m_win->AppendToPage("A new paragraph"); CPPUNIT_ASSERT_EQUAL("link A new paragraph", m_win->ToText()); #endif // wxUSE_CLIPBOARD } #endif //wxUSE_HTML