]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/controls/hyperlinkctrltest.cpp
Merge the new GUI tests from SOC2010_GUI_TEST branch.
[wxWidgets.git] / tests / controls / hyperlinkctrltest.cpp
diff --git a/tests/controls/hyperlinkctrltest.cpp b/tests/controls/hyperlinkctrltest.cpp
new file mode 100644 (file)
index 0000000..2d5fda3
--- /dev/null
@@ -0,0 +1,114 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/controls/hyperlinkctrltest.cpp
+// Purpose:     wxHyperlinkCtrl unit test
+// Author:      Steven Lamerton
+// Created:     2010-08-05
+// RCS-ID:      $Id$
+// Copyright:   (c) 2010 Steven Lamerton
+///////////////////////////////////////////////////////////////////////////////
+
+#include "testprec.h"
+
+#if wxUSE_HYPERLINKCTRL
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+#endif // WX_PRECOMP
+
+#include "wx/hyperlink.h"
+#include "wx/uiaction.h"
+#include "testableframe.h"
+#include "asserthelper.h"
+
+class HyperlinkCtrlTestCase : public CppUnit::TestCase
+{
+public:
+    HyperlinkCtrlTestCase() { }
+
+    void setUp();
+    void tearDown();
+
+private:
+    CPPUNIT_TEST_SUITE( HyperlinkCtrlTestCase );
+        CPPUNIT_TEST( Colour );
+        CPPUNIT_TEST( Url );
+        WXUISIM_TEST( Click );
+    CPPUNIT_TEST_SUITE_END();
+
+    void Colour();
+    void Url();
+    void Click();
+
+    wxHyperlinkCtrl* m_hyperlink;
+
+    DECLARE_NO_COPY_CLASS(HyperlinkCtrlTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( HyperlinkCtrlTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( HyperlinkCtrlTestCase, "HyperlinkCtrlTestCase" );
+
+void HyperlinkCtrlTestCase::setUp()
+{
+    m_hyperlink = new wxHyperlinkCtrl(wxTheApp->GetTopWindow(), wxID_ANY,
+                                     "wxWidgets", "http://wxwidgets.org");
+}
+
+void HyperlinkCtrlTestCase::tearDown()
+{
+    wxDELETE(m_hyperlink);
+}
+
+void HyperlinkCtrlTestCase::Colour()
+{
+#ifndef __WXGTK__
+    CPPUNIT_ASSERT(m_hyperlink->GetHoverColour().IsOk());
+    CPPUNIT_ASSERT(m_hyperlink->GetNormalColour().IsOk());
+    CPPUNIT_ASSERT(m_hyperlink->GetVisitedColour().IsOk());
+
+    m_hyperlink->SetHoverColour(*wxGREEN);
+    m_hyperlink->SetNormalColour(*wxRED);
+    m_hyperlink->SetVisitedColour(*wxBLUE);
+
+    CPPUNIT_ASSERT_EQUAL(*wxGREEN, m_hyperlink->GetHoverColour());
+    CPPUNIT_ASSERT_EQUAL(*wxRED, m_hyperlink->GetNormalColour());
+    CPPUNIT_ASSERT_EQUAL(*wxBLUE, m_hyperlink->GetVisitedColour());
+#endif
+}
+
+void HyperlinkCtrlTestCase::Url()
+{
+    CPPUNIT_ASSERT_EQUAL("http://wxwidgets.org", m_hyperlink->GetURL());
+
+    m_hyperlink->SetURL("http://google.com");
+
+    CPPUNIT_ASSERT_EQUAL("http://google.com", m_hyperlink->GetURL());
+}
+
+void HyperlinkCtrlTestCase::Click()
+{
+#if wxUSE_UIACTIONSIMULATOR && !defined(__WXGTK__)
+    wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
+                                          wxTestableFrame);
+
+    EventCounter count(m_hyperlink, wxEVT_COMMAND_HYPERLINK);
+
+    wxUIActionSimulator sim;
+
+    sim.MouseMove(m_hyperlink->GetScreenPosition() + wxPoint(10, 10));
+    wxYield();
+
+    sim.MouseClick();
+    wxYield();
+
+    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount());
+#endif
+}
+
+#endif //wxUSE_HYPERLINKCTRL