Add tests for the back and forward history lists.
[wxWidgets.git] / tests / controls / webtest.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/controls/webtest.cpp
3 // Purpose: wxWebView unit test
4 // Author: Steven Lamerton
5 // Created: 2011-07-08
6 // RCS-ID: $Id$
7 // Copyright: (c) 2011 Steven Lamerton
8 ///////////////////////////////////////////////////////////////////////////////
9
10 #include "testprec.h"
11
12 #if wxUSE_WEB
13
14 #ifdef __BORLANDC__
15 #pragma hdrstop
16 #endif
17
18 #ifndef WX_PRECOMP
19 #include "wx/app.h"
20 #endif // WX_PRECOMP
21
22 #include "testableframe.h"
23 #include "wx/uiaction.h"
24 #include "wx/webview.h"
25 #include "asserthelper.h"
26
27 class WebTestCase : public CppUnit::TestCase
28 {
29 public:
30 WebTestCase() { }
31
32 void setUp();
33 void tearDown();
34
35 private:
36 CPPUNIT_TEST_SUITE( WebTestCase );
37 CPPUNIT_TEST( Title );
38 CPPUNIT_TEST( Url );
39 CPPUNIT_TEST( History );
40 CPPUNIT_TEST( HistoryEnable );
41 CPPUNIT_TEST( HistoryClear );
42 CPPUNIT_TEST( HistoryList );
43 CPPUNIT_TEST_SUITE_END();
44
45 void Title();
46 void Url();
47 void History();
48 void HistoryEnable();
49 void HistoryClear();
50 void HistoryList();
51
52 wxWebView* m_browser;
53
54 DECLARE_NO_COPY_CLASS(WebTestCase)
55 };
56
57 // register in the unnamed registry so that these tests are run by default
58 CPPUNIT_TEST_SUITE_REGISTRATION( WebTestCase );
59
60 // also include in its own registry so that these tests can be run alone
61 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( WebTestCase, "WebTestCase" );
62
63 void WebTestCase::setUp()
64 {
65 m_browser = wxWebView::New(wxTheApp->GetTopWindow(), wxID_ANY);
66 }
67
68 void WebTestCase::tearDown()
69 {
70 wxDELETE(m_browser);
71 }
72
73 void WebTestCase::Title()
74 {
75 CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle());
76
77 //Test title after loading raw html
78 m_browser->SetPage("<html><title>Title</title></html>", "");
79 CPPUNIT_ASSERT_EQUAL("Title", m_browser->GetCurrentTitle());
80
81 //Test title after loading a url, we yield to let events process
82 m_browser->LoadUrl("about:blank");
83 wxYield();
84 CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle());
85 }
86
87 void WebTestCase::Url()
88 {
89 CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentURL());
90
91 m_browser->LoadUrl("about:blank");
92 wxYield();
93 CPPUNIT_ASSERT_EQUAL("about:blank", m_browser->GetCurrentURL());
94 }
95
96 void WebTestCase::History()
97 {
98 //We use about:blank to remove the need for a network connection
99 m_browser->LoadUrl("about:blank");
100 wxYield();
101
102 m_browser->LoadUrl("about:blank");
103 wxYield();
104
105 m_browser->LoadUrl("about:blank");
106 wxYield();
107
108 CPPUNIT_ASSERT(m_browser->CanGoBack());
109 CPPUNIT_ASSERT(!m_browser->CanGoForward());
110
111 m_browser->GoBack();
112
113 CPPUNIT_ASSERT(m_browser->CanGoBack());
114 CPPUNIT_ASSERT(m_browser->CanGoForward());
115
116 m_browser->GoBack();
117 m_browser->GoBack();
118
119 //We should now be at the start of the history
120 CPPUNIT_ASSERT(!m_browser->CanGoBack());
121 CPPUNIT_ASSERT(m_browser->CanGoForward());
122 }
123
124 void WebTestCase::HistoryEnable()
125 {
126 m_browser->LoadUrl("about:blank");
127 wxYield();
128
129 m_browser->EnableHistory(false);
130
131 CPPUNIT_ASSERT(!m_browser->CanGoForward());
132 CPPUNIT_ASSERT(!m_browser->CanGoBack());
133
134 m_browser->LoadUrl("about:blank");
135 wxYield();
136
137 CPPUNIT_ASSERT(!m_browser->CanGoForward());
138 CPPUNIT_ASSERT(!m_browser->CanGoBack());
139 }
140
141 void WebTestCase::HistoryClear()
142 {
143 m_browser->LoadUrl("about:blank");
144 wxYield();
145
146 m_browser->LoadUrl("about:blank");
147 wxYield();
148
149 //Now we are in the 'middle' of the history
150 m_browser->GoBack();
151
152 CPPUNIT_ASSERT(m_browser->CanGoForward());
153 CPPUNIT_ASSERT(m_browser->CanGoBack());
154
155 m_browser->ClearHistory();
156
157 CPPUNIT_ASSERT(!m_browser->CanGoForward());
158 CPPUNIT_ASSERT(!m_browser->CanGoBack());
159 }
160
161 void WebTestCase::HistoryList()
162 {
163 m_browser->LoadUrl("about:blank");
164 wxYield();
165
166 m_browser->LoadUrl("about:blank");
167 wxYield();
168
169 m_browser->GoBack();
170
171 CPPUNIT_ASSERT_EQUAL(1, m_browser->GetBackwardHistory().size());
172 CPPUNIT_ASSERT_EQUAL(1, m_browser->GetForwardHistory().size());
173
174 m_browser->LoadHistoryItem(m_browser->GetForwardHistory()[0]);
175
176 CPPUNIT_ASSERT(!m_browser->CanGoForward());
177 CPPUNIT_ASSERT_EQUAL(2, m_browser->GetBackwardHistory().size());
178 }
179
180 #endif //wxUSE_WEB