datepickerctrltest.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: tests/controls/datepickerctrltest.cpp
  3. // Purpose: wxDatePickerCtrl unit test
  4. // Author: Vadim Zeitlin
  5. // Created: 2011-06-18
  6. // Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
  7. ///////////////////////////////////////////////////////////////////////////////
  8. #include "testprec.h"
  9. #if wxUSE_DATEPICKCTRL
  10. #ifdef __BORLANDC__
  11. #pragma hdrstop
  12. #endif
  13. #ifndef WX_PRECOMP
  14. #include "wx/app.h"
  15. #endif // WX_PRECOMP
  16. #include "wx/datectrl.h"
  17. #include "testableframe.h"
  18. #include "testdate.h"
  19. class DatePickerCtrlTestCase : public CppUnit::TestCase
  20. {
  21. public:
  22. DatePickerCtrlTestCase() { }
  23. void setUp();
  24. void tearDown();
  25. private:
  26. CPPUNIT_TEST_SUITE( DatePickerCtrlTestCase );
  27. CPPUNIT_TEST( Value );
  28. CPPUNIT_TEST( Range );
  29. CPPUNIT_TEST_SUITE_END();
  30. void Value();
  31. void Range();
  32. wxDatePickerCtrl* m_datepicker;
  33. DECLARE_NO_COPY_CLASS(DatePickerCtrlTestCase)
  34. };
  35. // register in the unnamed registry so that these tests are run by default
  36. CPPUNIT_TEST_SUITE_REGISTRATION( DatePickerCtrlTestCase );
  37. // also include in its own registry so that these tests can be run alone
  38. CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( DatePickerCtrlTestCase, "DatePickerCtrlTestCase" );
  39. void DatePickerCtrlTestCase::setUp()
  40. {
  41. m_datepicker = new wxDatePickerCtrl(wxTheApp->GetTopWindow(), wxID_ANY);
  42. }
  43. void DatePickerCtrlTestCase::tearDown()
  44. {
  45. delete m_datepicker;
  46. }
  47. void DatePickerCtrlTestCase::Value()
  48. {
  49. const wxDateTime dt(18, wxDateTime::Jul, 2011);
  50. m_datepicker->SetValue(dt);
  51. CPPUNIT_ASSERT_EQUAL( dt, m_datepicker->GetValue() );
  52. // We don't use wxDP_ALLOWNONE currently, hence a value is required.
  53. WX_ASSERT_FAILS_WITH_ASSERT( m_datepicker->SetValue(wxDateTime()) );
  54. }
  55. void DatePickerCtrlTestCase::Range()
  56. {
  57. // Initially we have no valid range but MSW version still has (built in)
  58. // minimum as it doesn't support dates before 1601-01-01, hence don't rely
  59. // on GetRange() returning false.
  60. wxDateTime dtRangeStart, dtRangeEnd;
  61. m_datepicker->GetRange(&dtRangeStart, &dtRangeEnd);
  62. CPPUNIT_ASSERT( !dtRangeEnd.IsValid() );
  63. // After we set it we should be able to get it back.
  64. const wxDateTime
  65. dtStart(15, wxDateTime::Feb, 1923),
  66. dtEnd(18, wxDateTime::Jun, 2011);
  67. m_datepicker->SetRange(dtStart, dtEnd);
  68. CPPUNIT_ASSERT( m_datepicker->GetRange(&dtRangeStart, &dtRangeEnd) );
  69. CPPUNIT_ASSERT_EQUAL( dtStart, dtRangeStart );
  70. CPPUNIT_ASSERT_EQUAL( dtEnd, dtRangeEnd );
  71. // Setting dates inside the range should work, including the range end
  72. // points.
  73. m_datepicker->SetValue(dtStart);
  74. CPPUNIT_ASSERT_EQUAL( dtStart, m_datepicker->GetValue() );
  75. m_datepicker->SetValue(dtEnd);
  76. CPPUNIT_ASSERT_EQUAL( dtEnd, m_datepicker->GetValue() );
  77. // Setting dates outside the range should not work.
  78. m_datepicker->SetValue(dtEnd + wxTimeSpan::Day());
  79. CPPUNIT_ASSERT_EQUAL( dtEnd, m_datepicker->GetValue() );
  80. m_datepicker->SetValue(dtStart - wxTimeSpan::Day());
  81. CPPUNIT_ASSERT_EQUAL( dtEnd, m_datepicker->GetValue() );
  82. }
  83. #endif // wxUSE_DATEPICKCTRL