]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/controls/checkboxtest.cpp
Merge the new GUI tests from SOC2010_GUI_TEST branch.
[wxWidgets.git] / tests / controls / checkboxtest.cpp
diff --git a/tests/controls/checkboxtest.cpp b/tests/controls/checkboxtest.cpp
new file mode 100644 (file)
index 0000000..1e1ba92
--- /dev/null
@@ -0,0 +1,138 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/controls/checkboxtest.cpp
+// Purpose:     wCheckBox unit test
+// Author:      Steven Lamerton
+// Created:     2010-07-14
+// RCS-ID:      $Id$
+// Copyright:   (c) 2010 Steven Lamerton
+///////////////////////////////////////////////////////////////////////////////
+
+#include "testprec.h"
+
+#if wxUSE_CHECKBOX
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+    #include "wx/checkbox.h"
+#endif // WX_PRECOMP
+
+#include "testableframe.h"
+
+class CheckBoxTestCase : public CppUnit::TestCase
+{
+public:
+    CheckBoxTestCase() { }
+
+    void setUp();
+    void tearDown();
+
+private:
+    CPPUNIT_TEST_SUITE( CheckBoxTestCase );
+        CPPUNIT_TEST( Check );
+        CPPUNIT_TEST( ThirdState );
+        CPPUNIT_TEST( ThirdStateUser );
+    CPPUNIT_TEST_SUITE_END();
+
+    void Check();
+    void ThirdState();
+    void ThirdStateUser();
+
+    wxCheckBox* m_check;
+
+    DECLARE_NO_COPY_CLASS(CheckBoxTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( CheckBoxTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( CheckBoxTestCase, "CheckBoxTestCase" );
+
+void CheckBoxTestCase::setUp()
+{
+    m_check = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, "Check box");
+}
+
+void CheckBoxTestCase::tearDown()
+{
+    delete m_check;
+}
+
+void CheckBoxTestCase::Check()
+{
+    wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
+                                          wxTestableFrame);
+
+    EventCounter count(m_check, wxEVT_COMMAND_CHECKBOX_CLICKED);
+
+    //We should be unchecked by default
+    CPPUNIT_ASSERT(!m_check->IsChecked());
+
+    m_check->SetValue(true);
+
+    CPPUNIT_ASSERT(m_check->IsChecked());
+
+    m_check->SetValue(false);
+
+    CPPUNIT_ASSERT(!m_check->IsChecked());
+
+    m_check->Set3StateValue(wxCHK_CHECKED);
+
+    CPPUNIT_ASSERT(m_check->IsChecked());
+
+    m_check->Set3StateValue(wxCHK_UNCHECKED);
+
+    CPPUNIT_ASSERT(!m_check->IsChecked());
+
+    //None of these should send events
+    CPPUNIT_ASSERT_EQUAL(0, frame->GetEventCount());
+}
+
+void CheckBoxTestCase::ThirdState()
+{
+#if !defined(__WXMGL__) && !defined(__WXPM__) && !defined(__WXGTK12__)
+    wxDELETE(m_check);
+    m_check = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, "Check box",
+                             wxDefaultPosition, wxDefaultSize, wxCHK_3STATE);
+
+    CPPUNIT_ASSERT_EQUAL(wxCHK_UNCHECKED, m_check->Get3StateValue());
+    CPPUNIT_ASSERT(m_check->Is3State());
+    CPPUNIT_ASSERT(!m_check->Is3rdStateAllowedForUser());
+
+    m_check->SetValue(true);
+
+    CPPUNIT_ASSERT_EQUAL(wxCHK_CHECKED, m_check->Get3StateValue());
+
+    m_check->Set3StateValue(wxCHK_UNDETERMINED);
+
+    CPPUNIT_ASSERT_EQUAL(wxCHK_UNDETERMINED, m_check->Get3StateValue());
+#endif
+}
+
+void CheckBoxTestCase::ThirdStateUser()
+{
+#if !defined(__WXMGL__) && !defined(__WXPM__) && !defined(__WXGTK12__)
+    wxDELETE(m_check);
+    m_check = new wxCheckBox(wxTheApp->GetTopWindow(), wxID_ANY, "Check box",
+                             wxDefaultPosition, wxDefaultSize,
+                             wxCHK_3STATE | wxCHK_ALLOW_3RD_STATE_FOR_USER);
+
+    CPPUNIT_ASSERT_EQUAL(wxCHK_UNCHECKED, m_check->Get3StateValue());
+    CPPUNIT_ASSERT(m_check->Is3State());
+    CPPUNIT_ASSERT(m_check->Is3rdStateAllowedForUser());
+
+    m_check->SetValue(true);
+
+    CPPUNIT_ASSERT_EQUAL(wxCHK_CHECKED, m_check->Get3StateValue());
+
+    m_check->Set3StateValue(wxCHK_UNDETERMINED);
+
+    CPPUNIT_ASSERT_EQUAL(wxCHK_UNDETERMINED, m_check->Get3StateValue());
+#endif
+}
+
+#endif //wxUSE_CHECKBOX