From: Václav Slavík Date: Thu, 1 Nov 2012 16:45:14 +0000 (+0000) Subject: Tests for wxTEST_DIALOG and wx/testing.h. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a96de8a36a5cb9098842d35046d65e2d685d9ff1?ds=inline Tests for wxTEST_DIALOG and wx/testing.h. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/tests/controls/dialogtest.cpp b/tests/controls/dialogtest.cpp new file mode 100644 index 0000000000..12f5833181 --- /dev/null +++ b/tests/controls/dialogtest.cpp @@ -0,0 +1,125 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: tests/controls/dialogtest.cpp +// Purpose: wxWindow unit test +// Author: Vaclav Slavik +// Created: 2012-08-30 +// RCS-ID: $Id$ +// Copyright: (c) 2012 Vaclav Slavik +/////////////////////////////////////////////////////////////////////////////// + +#include "testprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/testing.h" + +#ifdef wxHAS_VARIADIC_MACROS + +#include "wx/msgdlg.h" +#include "wx/filedlg.h" + +// This test suite tests helpers from wx/testing.h intended for testing of code +// that calls modal dialogs. It does not test the implementation of wxWidgets' +// dialogs. +class ModalDialogsTestCase : public CppUnit::TestCase +{ +public: + ModalDialogsTestCase() { } + +private: + CPPUNIT_TEST_SUITE( ModalDialogsTestCase ); + CPPUNIT_TEST( MessageDialog ); + CPPUNIT_TEST( FileDialog ); + CPPUNIT_TEST( CustomDialog ); + CPPUNIT_TEST_SUITE_END(); + + void MessageDialog(); + void FileDialog(); + void CustomDialog(); + + DECLARE_NO_COPY_CLASS(ModalDialogsTestCase) +}; + +// register in the unnamed registry so that these tests are run by default +CPPUNIT_TEST_SUITE_REGISTRATION( ModalDialogsTestCase ); + +// also include in its own registry so that these tests can be run alone +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ModalDialogsTestCase, "ModalDialogsTestCase" ); + +void ModalDialogsTestCase::MessageDialog() +{ + int rc; + + wxTEST_DIALOG + ( + rc = wxMessageBox("Should I fail?", "Question", wxYES|wxNO), + wxExpectModal(wxNO), + wxExpectModal(wxGetCwd() + "/test.txt").Optional() + ); + + CPPUNIT_ASSERT_EQUAL(wxNO, rc); +} + +void ModalDialogsTestCase::FileDialog() +{ + wxFileDialog dlg(NULL); + int rc; + + wxTEST_DIALOG + ( + rc = dlg.ShowModal(), + wxExpectModal(wxGetCwd() + "/test.txt") + ); + + CPPUNIT_ASSERT_EQUAL((int)wxID_OK, rc); + + CPPUNIT_ASSERT_EQUAL("test.txt", dlg.GetFilename()); +} + + +class MyDialog : public wxDialog +{ +public: + MyDialog(wxWindow *parent) : wxDialog(parent, wxID_ANY, "Entry"), m_value(-1) + { + // Dummy. Imagine it's a real dialog that shows some number-entry + // controls. + } + + int m_value; +}; + + +template<> +class wxExpectModal : public wxExpectModalBase +{ +public: + wxExpectModal(int valueToSet) : m_valueToSet(valueToSet) {} + +protected: + virtual int OnInvoked(MyDialog *dlg) const + { + // Simulate the user entering the expected number: + dlg->m_value = m_valueToSet; + return wxID_OK; + } + + int m_valueToSet; +}; + +void ModalDialogsTestCase::CustomDialog() +{ + MyDialog dlg(NULL); + + wxTEST_DIALOG + ( + dlg.ShowModal(), + wxExpectModal(42) + ); + + CPPUNIT_ASSERT_EQUAL( 42, dlg.m_value ); +} + +#endif // wxHAS_VARIADIC_MACROS