1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/menu/accelentry.cpp
3 // Purpose: wxAcceleratorEntry unit test
4 // Author: Vadim Zeitlin
5 // Created: 2010-12-03
6 // Copyright: (c) 2010 Vadim Zeitlin
7 ///////////////////////////////////////////////////////////////////////////////
8
9 // ----------------------------------------------------------------------------
10 // headers
11 // ----------------------------------------------------------------------------
12
13 #include "testprec.h"
14
15
16 #ifndef WX_PRECOMP
17 #endif // WX_PRECOMP
18
19 #include "wx/accel.h"
20 #include "wx/scopedptr.h"
21
22 namespace
23 {
24
CheckAccelEntry(const wxAcceleratorEntry & accel,int keycode,int flags)25 void CheckAccelEntry(const wxAcceleratorEntry& accel, int keycode, int flags)
26 {
27 CHECK( keycode == accel.GetKeyCode() );
28 CHECK( flags == accel.GetFlags() );
29 }
30
31 } // anonymous namespace
32
33
34 /*
35 * Test the creation of accelerator keys using the Create function
36 */
37 TEST_CASE( "wxAcceleratorEntry::Create", "[accelentry]" )
38 {
39 wxScopedPtr<wxAcceleratorEntry> pa;
40
41 SECTION( "Correct behavior" )
42 {
43 pa.reset( wxAcceleratorEntry::Create("Foo\tCtrl+Z") );
44
45 CHECK( pa );
46 CHECK( pa->IsOk() );
47 CheckAccelEntry(*pa, 'Z', wxACCEL_CTRL);
48 }
49
50 SECTION( "Tab missing" )
51 {
52 pa.reset( wxAcceleratorEntry::Create("Shift-Q") );
53
54 CHECK( !pa );
55 }
56
57 SECTION( "No accelerator key specified" )
58 {
59 pa.reset( wxAcceleratorEntry::Create("bloordyblop") );
60
61 CHECK( !pa );
62 }
63
64 SECTION( "Display name parsing" )
65 {
66 pa.reset( wxAcceleratorEntry::Create("Test\tBackSpace") );
67
68 CHECK( pa );
69 CHECK( pa->IsOk() );
70 CheckAccelEntry(*pa, WXK_BACK, wxACCEL_NORMAL);
71 }
72 }
73
74
75 /*
76 * Test the creation of accelerator keys from strings and also the
77 * creation of strings from an accelerator key
78 */
79 TEST_CASE( "wxAcceleratorEntry::StringTests", "[accelentry]" )
80 {
81 wxAcceleratorEntry a(wxACCEL_ALT, 'X');
82
83 SECTION( "Create string from key" )
84 {
85 CHECK( "Alt+X" == a.ToString() );
86 }
87
88 SECTION( "Create from valid string" )
89 {
90 CHECK( a.FromString("Alt+Shift+F1") );
91 CheckAccelEntry(a, WXK_F1, wxACCEL_ALT | wxACCEL_SHIFT);
92 }
93
94 SECTION( "Create from invalid string" )
95 {
96 CHECK( !a.FromString("bloordyblop") );
97 }
98 }
99