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