Merge the new GUI tests from SOC2010_GUI_TEST branch.
[wxWidgets.git] / tests / testableframe.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: testableframe.cpp
3 // Purpose: An improved wxFrame for unit-testing
4 // Author: Steven Lamerton
5 // RCS-ID: $Id:$
6 // Copyright: (c) 2010 Steven Lamerton
7 // Licence: wxWidgets licence
8 ///////////////////////////////////////////////////////////////////////////////
9
10 // For compilers that support precompilation, includes "wx/wx.h".
11 #include "testprec.h"
12
13 #ifdef __BORLANDC__
14 #pragma hdrstop
15 #endif
16
17 #include "wx/app.h"
18 #include "testableframe.h"
19
20 wxTestableFrame::wxTestableFrame() : wxFrame(NULL, wxID_ANY, "Test Frame")
21 {
22 }
23
24 void wxTestableFrame::OnEvent(wxEvent& evt)
25 {
26 m_count[evt.GetEventType()]++;
27
28 if(! evt.IsCommandEvent() )
29 evt.Skip();
30 }
31
32 int wxTestableFrame::GetEventCount(wxEventType type)
33 {
34 if (type == wxEVT_ANY)
35 {
36 //Get the total event count
37 long total = 0;
38
39 for(wxLongToLongHashMap::iterator iter = m_count.begin();
40 iter != m_count.end();
41 iter++)
42 {
43 total += iter->second;
44 iter->second = 0;
45 }
46
47 return total;
48 }
49 else
50 {
51 long count = m_count[type];
52 m_count[type] = 0;
53 return count;
54 }
55 }
56
57 EventCounter::EventCounter(wxWindow* win, wxEventType type) : m_type(type),
58 m_win(win)
59
60 {
61 m_frame = wxStaticCast(wxTheApp->GetTopWindow(),
62 wxTestableFrame);
63
64 m_win->Connect(m_type,
65 wxEventHandler(wxTestableFrame::OnEvent),
66 NULL,
67 m_frame);
68 }
69
70 EventCounter::~EventCounter()
71 {
72 m_win->Disconnect(m_type,
73 wxEventHandler(wxTestableFrame::OnEvent),
74 NULL,
75 m_frame);
76
77 m_frame = NULL;
78 m_win = NULL;
79 }