Upgrade accelerator entry unit tests

* Convert to the Catch framework
* Add a test for proper display name parsing
This commit is contained in:
Ian McInerney
2019-08-04 12:54:13 +02:00
parent daae25753e
commit bdc301946f

View File

@@ -20,73 +20,81 @@
#endif // WX_PRECOMP #endif // WX_PRECOMP
#include "wx/accel.h" #include "wx/accel.h"
#include "wx/scopedptr.h"
class AccelEntryTestCase : public CppUnit::TestCase
{
public:
AccelEntryTestCase() {}
private:
CPPUNIT_TEST_SUITE( AccelEntryTestCase );
CPPUNIT_TEST( Create );
CPPUNIT_TEST( ToFromString );
CPPUNIT_TEST_SUITE_END();
void Create();
void ToFromString();
wxDECLARE_NO_COPY_CLASS(AccelEntryTestCase);
};
// register in the unnamed registry so that these tests are run by default
CPPUNIT_TEST_SUITE_REGISTRATION( AccelEntryTestCase );
// also include in its own registry so that these tests can be run alone
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( AccelEntryTestCase, "AccelEntryTestCase" );
namespace namespace
{ {
void CheckAccelEntry(const wxAcceleratorEntry& accel, int keycode, int flags) void CheckAccelEntry(const wxAcceleratorEntry& accel, int keycode, int flags)
{ {
CPPUNIT_ASSERT_EQUAL( keycode, accel.GetKeyCode() ); REQUIRE( keycode == accel.GetKeyCode() );
CPPUNIT_ASSERT_EQUAL( flags, accel.GetFlags() ); REQUIRE( flags == accel.GetFlags() );
} }
} // anonymous namespace } // anonymous namespace
void AccelEntryTestCase::Create()
/*
* Test the creation of accelerator keys using the Create function
*/
TEST_CASE( "wxAcceleratorEntry::Create", "[accelentry]" )
{ {
wxScopedPtr<wxAcceleratorEntry> wxAcceleratorEntry* pa;
pa(wxAcceleratorEntry::Create("Foo\tCtrl+Z"));
CPPUNIT_ASSERT( pa );
CPPUNIT_ASSERT( pa->IsOk() );
SECTION( "Correct behavior" )
{
pa = wxAcceleratorEntry::Create("Foo\tCtrl+Z");
REQUIRE( pa );
REQUIRE( pa->IsOk() );
CheckAccelEntry(*pa, 'Z', wxACCEL_CTRL); CheckAccelEntry(*pa, 'Z', wxACCEL_CTRL);
// There must be a TAB in the string passed to Create()
pa.reset(wxAcceleratorEntry::Create("Shift-Q"));
CPPUNIT_ASSERT( !pa );
pa.reset(wxAcceleratorEntry::Create("Bar\tShift-Q"));
CPPUNIT_ASSERT( pa );
CPPUNIT_ASSERT( pa->IsOk() );
CheckAccelEntry(*pa, 'Q', wxACCEL_SHIFT);
pa.reset(wxAcceleratorEntry::Create("bloordyblop"));
CPPUNIT_ASSERT( !pa );
} }
void AccelEntryTestCase::ToFromString() SECTION( "Tab missing" )
{
pa = wxAcceleratorEntry::Create("Shift-Q");
REQUIRE( !pa );
}
SECTION( "No accelerator key specified" )
{
pa = wxAcceleratorEntry::Create("bloordyblop");
REQUIRE( !pa );
}
SECTION( "Display name parsing" )
{
pa = wxAcceleratorEntry::Create("Test\tBackSpace");
REQUIRE( pa );
REQUIRE( pa->IsOk() );
CheckAccelEntry(*pa, WXK_BACK, wxACCEL_NORMAL);
}
}
/*
* Test the creation of accelerator keys from strings and also the
* creation of strings from an accelerator key
*/
TEST_CASE( "wxAcceleratorEntry::StringTests", "[accelentry]" )
{ {
wxAcceleratorEntry a(wxACCEL_ALT, 'X'); wxAcceleratorEntry a(wxACCEL_ALT, 'X');
CPPUNIT_ASSERT_EQUAL( "Alt+X", a.ToString() );
CPPUNIT_ASSERT( a.FromString("Alt+Shift+F1") ); SECTION( "Create string from key" )
CheckAccelEntry(a, WXK_F1, wxACCEL_ALT | wxACCEL_SHIFT); {
REQUIRE( "Alt+X" == a.ToString() );
CPPUNIT_ASSERT( !a.FromString("bloordyblop") ); }
SECTION( "Create from valid string" )
{
REQUIRE( a.FromString("Alt+Shift+F1") );
CheckAccelEntry(a, WXK_F1, wxACCEL_ALT | wxACCEL_SHIFT);
}
SECTION( "Create from invalid string" )
{
REQUIRE( !a.FromString("bloordyblop") );
}
} }