From f8bdf123f20de2176160e0f65b865505153f053d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Jul 2019 13:49:59 +0200 Subject: [PATCH 1/3] Remove unnecessary header from the webview unit test No real changes. --- tests/controls/webtest.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/controls/webtest.cpp b/tests/controls/webtest.cpp index 5c58ab1624..891c34a9c9 100644 --- a/tests/controls/webtest.cpp +++ b/tests/controls/webtest.cpp @@ -19,7 +19,6 @@ #endif // WX_PRECOMP #include "testableframe.h" -#include "wx/uiaction.h" #include "wx/webview.h" #include "asserthelper.h" #if wxUSE_WEBVIEW_IE From 2b71ce3664f7263bae5fee4ec59a8f577fb6b9da Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Jul 2019 13:59:51 +0200 Subject: [PATCH 2/3] Get rid of CppUnit boilerplate in wxWebView unit test This not only cuts down on its size, but will make it simpler to skip this test in the environments where web access is unavailable in the upcoming commit. --- tests/controls/webtest.cpp | 586 +++++++++++++++++-------------------- 1 file changed, 273 insertions(+), 313 deletions(-) diff --git a/tests/controls/webtest.cpp b/tests/controls/webtest.cpp index 891c34a9c9..1319dae0ec 100644 --- a/tests/controls/webtest.cpp +++ b/tests/controls/webtest.cpp @@ -25,365 +25,325 @@ #include "wx/msw/webview_ie.h" #endif -class WebTestCase : public CppUnit::TestCase -{ -public: - WebTestCase() { } - - void setUp() wxOVERRIDE; - void tearDown() wxOVERRIDE; - -private: - CPPUNIT_TEST_SUITE( WebTestCase ); - CPPUNIT_TEST( Title ); - CPPUNIT_TEST( Url ); - CPPUNIT_TEST( History ); -#if !wxUSE_WEBVIEW_WEBKIT2 - //This is not implemented on WEBKIT2. See implementation. - CPPUNIT_TEST( HistoryEnable ); - CPPUNIT_TEST( HistoryClear ); -#endif - CPPUNIT_TEST( HistoryList ); - CPPUNIT_TEST( Editable ); - CPPUNIT_TEST( Selection ); - CPPUNIT_TEST( Zoom ); - CPPUNIT_TEST( RunScript ); - CPPUNIT_TEST( SetPage ); - CPPUNIT_TEST_SUITE_END(); - - void Title(); - void Url(); - void History(); - void HistoryEnable(); - void HistoryClear(); - void HistoryList(); - void Editable(); - void Selection(); - void Zoom(); - void RunScript(); - void SetPage(); - void LoadUrl(int times = 1); - - wxWebView* m_browser; - EventCounter* m_loaded; - - wxDECLARE_NO_COPY_CLASS(WebTestCase); -}; - //Convenience macro #define ENSURE_LOADED CHECK( m_loaded->WaitEvent() ) -// register in the unnamed registry so that these tests are run by default -CPPUNIT_TEST_SUITE_REGISTRATION( WebTestCase ); - -// also include in its own registry so that these tests can be run alone -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( WebTestCase, "WebTestCase" ); - -void WebTestCase::setUp() +class WebViewTestCase { - m_browser = wxWebView::New(); - m_loaded = new EventCounter(m_browser, wxEVT_WEBVIEW_LOADED); +public: + WebViewTestCase() + : m_browser(wxWebView::New()), + m_loaded(new EventCounter(m_browser, wxEVT_WEBVIEW_LOADED)) + { + } + ~WebViewTestCase() + { + delete m_loaded; + delete m_browser; + } + +protected: + void LoadUrl(int times = 1) + { + //We alternate between urls as otherwise webkit merges them in the history + //we use about and about blank to avoid the need for a network connection + for(int i = 0; i < times; i++) + { + if(i % 2 == 1) + m_browser->LoadURL("about:blank"); + else + m_browser->LoadURL("about:"); + ENSURE_LOADED; + } + } + + wxWebView* const m_browser; + EventCounter* const m_loaded; +}; + +TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") +{ m_browser -> Create(wxTheApp->GetTopWindow(), wxID_ANY); ENSURE_LOADED; -} -void WebTestCase::tearDown() -{ - wxDELETE(m_loaded); - wxDELETE(m_browser); -} - -void WebTestCase::LoadUrl(int times) -{ - //We alternate between urls as otherwise webkit merges them in the history - //we use about and about blank to avoid the need for a network connection - for(int i = 0; i < times; i++) + SECTION("Title") { - if(i % 2 == 1) - m_browser->LoadURL("about:blank"); - else - m_browser->LoadURL("about:"); + CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle()); + + //Test title after loading raw html + m_browser->SetPage("TitleText", ""); ENSURE_LOADED; - } -} + CPPUNIT_ASSERT_EQUAL("Title", m_browser->GetCurrentTitle()); -void WebTestCase::Title() -{ - CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle()); - - //Test title after loading raw html - m_browser->SetPage("TitleText", ""); - ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL("Title", m_browser->GetCurrentTitle()); - - //Test title after loading a url, we yield to let events process - LoadUrl(); - CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle()); -} - -void WebTestCase::Url() -{ - CPPUNIT_ASSERT_EQUAL("about:blank", m_browser->GetCurrentURL()); - - //After first loading about:blank the next in the sequence is about: - LoadUrl(); - CPPUNIT_ASSERT_EQUAL("about:", m_browser->GetCurrentURL()); -} - -void WebTestCase::History() -{ - LoadUrl(3); - - CPPUNIT_ASSERT(m_browser->CanGoBack()); - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - - m_browser->GoBack(); - ENSURE_LOADED; - - CPPUNIT_ASSERT(m_browser->CanGoBack()); - CPPUNIT_ASSERT(m_browser->CanGoForward()); - - m_browser->GoBack(); - ENSURE_LOADED; - m_browser->GoBack(); - ENSURE_LOADED; - - //We should now be at the start of the history - CPPUNIT_ASSERT(!m_browser->CanGoBack()); - CPPUNIT_ASSERT(m_browser->CanGoForward()); -} - -void WebTestCase::HistoryEnable() -{ - LoadUrl(); - m_browser->EnableHistory(false); - - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT(!m_browser->CanGoBack()); - - LoadUrl(); - - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT(!m_browser->CanGoBack()); -} - -void WebTestCase::HistoryClear() -{ - LoadUrl(2); - - //Now we are in the 'middle' of the history - m_browser->GoBack(); - ENSURE_LOADED; - - CPPUNIT_ASSERT(m_browser->CanGoForward()); - CPPUNIT_ASSERT(m_browser->CanGoBack()); - - m_browser->ClearHistory(); - - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT(!m_browser->CanGoBack()); -} - -void WebTestCase::HistoryList() -{ - LoadUrl(2); - m_browser->GoBack(); - ENSURE_LOADED; - - CPPUNIT_ASSERT_EQUAL(1, m_browser->GetBackwardHistory().size()); - CPPUNIT_ASSERT_EQUAL(1, m_browser->GetForwardHistory().size()); - - m_browser->LoadHistoryItem(m_browser->GetForwardHistory()[0]); - ENSURE_LOADED; - - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT_EQUAL(2, m_browser->GetBackwardHistory().size()); -} - -void WebTestCase::Editable() -{ - CPPUNIT_ASSERT(!m_browser->IsEditable()); - - m_browser->SetEditable(true); - - CPPUNIT_ASSERT(m_browser->IsEditable()); - - m_browser->SetEditable(false); - - CPPUNIT_ASSERT(!m_browser->IsEditable()); -} - -void WebTestCase::Selection() -{ - m_browser->SetPage("Some strong text", ""); - ENSURE_LOADED; - CPPUNIT_ASSERT(!m_browser->HasSelection()); - - m_browser->SelectAll(); - - CPPUNIT_ASSERT(m_browser->HasSelection()); - CPPUNIT_ASSERT_EQUAL("Some strong text", m_browser->GetSelectedText()); - - // The web engine doesn't necessarily represent the HTML in the same way as - // we used above, e.g. IE uses upper case for all the tags while WebKit - // under OS X inserts plenty of its own tags, so don't test for - // equality and just check that the source contains things we'd expect it - // to. - const wxString selSource = m_browser->GetSelectedSource(); - WX_ASSERT_MESSAGE - ( - ("Unexpected selection source: \"%s\"", selSource), - selSource.Lower().Matches("*some**text*") - ); - - m_browser->ClearSelection(); - CPPUNIT_ASSERT(!m_browser->HasSelection()); -} - -void WebTestCase::Zoom() -{ - if(m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT)) - { - m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TYPE_LAYOUT, m_browser->GetZoomType()); - - m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TINY, m_browser->GetZoom()); + //Test title after loading a url, we yield to let events process + LoadUrl(); + CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle()); } - //Reset the zoom level - m_browser->SetZoom(wxWEBVIEW_ZOOM_MEDIUM); - - if(m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT)) + SECTION("URL") { - m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TYPE_TEXT, m_browser->GetZoomType()); + CPPUNIT_ASSERT_EQUAL("about:blank", m_browser->GetCurrentURL()); - m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TINY, m_browser->GetZoom()); + //After first loading about:blank the next in the sequence is about: + LoadUrl(); + CPPUNIT_ASSERT_EQUAL("about:", m_browser->GetCurrentURL()); } -} -void WebTestCase::RunScript() -{ - m_browser-> - SetPage("", ""); - ENSURE_LOADED; - - wxString result; -#if wxUSE_WEBVIEW_IE - CPPUNIT_ASSERT(wxWebViewIE::MSWSetModernEmulationLevel()); - - // Define a specialized scope guard ensuring that we reset the emulation - // level to its default value even if any asserts below fail. - class ResetEmulationLevel + SECTION("History") { - public: - ResetEmulationLevel() + LoadUrl(3); + + CPPUNIT_ASSERT(m_browser->CanGoBack()); + CPPUNIT_ASSERT(!m_browser->CanGoForward()); + + m_browser->GoBack(); + ENSURE_LOADED; + + CPPUNIT_ASSERT(m_browser->CanGoBack()); + CPPUNIT_ASSERT(m_browser->CanGoForward()); + + m_browser->GoBack(); + ENSURE_LOADED; + m_browser->GoBack(); + ENSURE_LOADED; + + //We should now be at the start of the history + CPPUNIT_ASSERT(!m_browser->CanGoBack()); + CPPUNIT_ASSERT(m_browser->CanGoForward()); + } + + SECTION("HistoryEnable") + { + LoadUrl(); + m_browser->EnableHistory(false); + + CPPUNIT_ASSERT(!m_browser->CanGoForward()); + CPPUNIT_ASSERT(!m_browser->CanGoBack()); + + LoadUrl(); + + CPPUNIT_ASSERT(!m_browser->CanGoForward()); + CPPUNIT_ASSERT(!m_browser->CanGoBack()); + } + + SECTION("HistoryClear") + { + LoadUrl(2); + + //Now we are in the 'middle' of the history + m_browser->GoBack(); + ENSURE_LOADED; + + CPPUNIT_ASSERT(m_browser->CanGoForward()); + CPPUNIT_ASSERT(m_browser->CanGoBack()); + + m_browser->ClearHistory(); + + CPPUNIT_ASSERT(!m_browser->CanGoForward()); + CPPUNIT_ASSERT(!m_browser->CanGoBack()); + } + + SECTION("HistoryList") + { + LoadUrl(2); + m_browser->GoBack(); + ENSURE_LOADED; + + CPPUNIT_ASSERT_EQUAL(1, m_browser->GetBackwardHistory().size()); + CPPUNIT_ASSERT_EQUAL(1, m_browser->GetForwardHistory().size()); + + m_browser->LoadHistoryItem(m_browser->GetForwardHistory()[0]); + ENSURE_LOADED; + + CPPUNIT_ASSERT(!m_browser->CanGoForward()); + CPPUNIT_ASSERT_EQUAL(2, m_browser->GetBackwardHistory().size()); + } + + SECTION("Editable") + { + CPPUNIT_ASSERT(!m_browser->IsEditable()); + + m_browser->SetEditable(true); + + CPPUNIT_ASSERT(m_browser->IsEditable()); + + m_browser->SetEditable(false); + + CPPUNIT_ASSERT(!m_browser->IsEditable()); + } + + SECTION("Selection") + { + m_browser->SetPage("Some strong text", ""); + ENSURE_LOADED; + CPPUNIT_ASSERT(!m_browser->HasSelection()); + + m_browser->SelectAll(); + + CPPUNIT_ASSERT(m_browser->HasSelection()); + CPPUNIT_ASSERT_EQUAL("Some strong text", m_browser->GetSelectedText()); + + // The web engine doesn't necessarily represent the HTML in the same way as + // we used above, e.g. IE uses upper case for all the tags while WebKit + // under OS X inserts plenty of its own tags, so don't test for + // equality and just check that the source contains things we'd expect it + // to. + const wxString selSource = m_browser->GetSelectedSource(); + WX_ASSERT_MESSAGE + ( + ("Unexpected selection source: \"%s\"", selSource), + selSource.Lower().Matches("*some**text*") + ); + + m_browser->ClearSelection(); + CPPUNIT_ASSERT(!m_browser->HasSelection()); + } + + SECTION("Zoom") + { + if(m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT)) { - m_reset = true; + m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT); + CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TYPE_LAYOUT, m_browser->GetZoomType()); + + m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY); + CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TINY, m_browser->GetZoom()); } - bool DoReset() + //Reset the zoom level + m_browser->SetZoom(wxWEBVIEW_ZOOM_MEDIUM); + + if(m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT)) { - m_reset = false; - return wxWebViewIE::MSWSetModernEmulationLevel(false); - } + m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT); + CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TYPE_TEXT, m_browser->GetZoomType()); - ~ResetEmulationLevel() + m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY); + CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TINY, m_browser->GetZoom()); + } + } + + SECTION("RunScript") + { + m_browser-> + SetPage("", ""); + ENSURE_LOADED; + + wxString result; + #if wxUSE_WEBVIEW_IE + CPPUNIT_ASSERT(wxWebViewIE::MSWSetModernEmulationLevel()); + + // Define a specialized scope guard ensuring that we reset the emulation + // level to its default value even if any asserts below fail. + class ResetEmulationLevel { - if ( m_reset ) - DoReset(); - } + public: + ResetEmulationLevel() + { + m_reset = true; + } - private: - bool m_reset; - } resetEmulationLevel; + bool DoReset() + { + m_reset = false; + return wxWebViewIE::MSWSetModernEmulationLevel(false); + } - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();person.name = 'Bar'; \ - person.lastName = 'Foo';return person;}f();", &result)); - CPPUNIT_ASSERT_EQUAL("{\"name\":\"Bar\",\"lastName\":\"Foo\"}", result); + ~ResetEmulationLevel() + { + if ( m_reset ) + DoReset(); + } - CPPUNIT_ASSERT(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); - CPPUNIT_ASSERT_EQUAL("[\"foo\",\"bar\"]", result); + private: + bool m_reset; + } resetEmulationLevel; - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var d = new Date('10/08/2017 21:30:40'); \ - var tzoffset = d.getTimezoneOffset() * 60000; return new Date(d.getTime() - tzoffset);}f();", - &result)); - CPPUNIT_ASSERT_EQUAL("\"2017-10-08T21:30:40.000Z\"", result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();person.name = 'Bar'; \ + person.lastName = 'Foo';return person;}f();", &result)); + CPPUNIT_ASSERT_EQUAL("{\"name\":\"Bar\",\"lastName\":\"Foo\"}", result); - CPPUNIT_ASSERT(resetEmulationLevel.DoReset()); -#endif // wxUSE_WEBVIEW_IE + CPPUNIT_ASSERT(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); + CPPUNIT_ASSERT_EQUAL("[\"foo\",\"bar\"]", result); - CPPUNIT_ASSERT(m_browser->RunScript("document.write(\"Hello World!\");")); - CPPUNIT_ASSERT_EQUAL("Hello World!", m_browser->GetPageText()); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){var d = new Date('10/08/2017 21:30:40'); \ + var tzoffset = d.getTimezoneOffset() * 60000; return new Date(d.getTime() - tzoffset);}f();", + &result)); + CPPUNIT_ASSERT_EQUAL("\"2017-10-08T21:30:40.000Z\"", result); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f('Hello World!');", &result)); - CPPUNIT_ASSERT_EQUAL(_("Hello World!"), result); + CPPUNIT_ASSERT(resetEmulationLevel.DoReset()); + #endif // wxUSE_WEBVIEW_IE - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f('a\\\'aa\\n\\rb\vb\\tb\\\\ccc\\\"ddd\\b\\fx');", &result)); - CPPUNIT_ASSERT_EQUAL(_("a\'aa\n\rb\vb\tb\\ccc\"ddd\b\fx"), result); + CPPUNIT_ASSERT(m_browser->RunScript("document.write(\"Hello World!\");")); + CPPUNIT_ASSERT_EQUAL("Hello World!", m_browser->GetPageText()); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(123);", &result)); - CPPUNIT_ASSERT_EQUAL(123, wxAtoi(result)); + CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f('Hello World!');", &result)); + CPPUNIT_ASSERT_EQUAL(_("Hello World!"), result); - CPPUNIT_ASSERT(m_browser-> - RunScript("function f(a){return a;}f(2.34);", &result)); - double value; - result.ToDouble(&value); - CPPUNIT_ASSERT_EQUAL(2.34, value); + CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f('a\\\'aa\\n\\rb\vb\\tb\\\\ccc\\\"ddd\\b\\fx');", &result)); + CPPUNIT_ASSERT_EQUAL(_("a\'aa\n\rb\vb\tb\\ccc\"ddd\b\fx"), result); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(false);", &result)); - CPPUNIT_ASSERT_EQUAL("false", result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(123);", &result)); + CPPUNIT_ASSERT_EQUAL(123, wxAtoi(result)); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();person.name = 'Foo'; \ - person.lastName = 'Bar';return person;}f();", &result)); - CPPUNIT_ASSERT_EQUAL("{\"name\":\"Foo\",\"lastName\":\"Bar\"}", result); + CPPUNIT_ASSERT(m_browser-> + RunScript("function f(a){return a;}f(2.34);", &result)); + double value; + result.ToDouble(&value); + CPPUNIT_ASSERT_EQUAL(2.34, value); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); - CPPUNIT_ASSERT_EQUAL("[\"foo\",\"bar\"]", result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(false);", &result)); + CPPUNIT_ASSERT_EQUAL("false", result); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();}f();", &result)); - CPPUNIT_ASSERT_EQUAL("undefined", result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();person.name = 'Foo'; \ + person.lastName = 'Bar';return person;}f();", &result)); + CPPUNIT_ASSERT_EQUAL("{\"name\":\"Foo\",\"lastName\":\"Bar\"}", result); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){return null;}f();", &result)); - CPPUNIT_ASSERT_EQUAL("null", result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); + CPPUNIT_ASSERT_EQUAL("[\"foo\",\"bar\"]", result); - result = ""; - CPPUNIT_ASSERT(!m_browser->RunScript("int main() { return 0; }", &result)); - CPPUNIT_ASSERT(!result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();}f();", &result)); + CPPUNIT_ASSERT_EQUAL("undefined", result); - CPPUNIT_ASSERT(m_browser->RunScript("function a() { return eval(\"function b() { \ - return eval(\\\"function c() { return eval(\\\\\\\"function d() { \ - return \\\\\\\\\\\\\\\"test\\\\\\\\\\\\\\\"; } d();\\\\\\\"); } \ - c();\\\"); } b();\"); } a();", &result)); - CPPUNIT_ASSERT_EQUAL("test", result); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){return null;}f();", &result)); + CPPUNIT_ASSERT_EQUAL("null", result); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(\"This is a backslash: \\\\\");", - &result)); - CPPUNIT_ASSERT_EQUAL("This is a backslash: \\", result); + result = ""; + CPPUNIT_ASSERT(!m_browser->RunScript("int main() { return 0; }", &result)); + CPPUNIT_ASSERT(!result); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var d = new Date('10/08/2016 21:30:40'); \ - var tzoffset = d.getTimezoneOffset() * 60000; return new Date(d.getTime() - tzoffset);}f();", - &result)); - CPPUNIT_ASSERT_EQUAL("\"2016-10-08T21:30:40.000Z\"", result); + CPPUNIT_ASSERT(m_browser->RunScript("function a() { return eval(\"function b() { \ + return eval(\\\"function c() { return eval(\\\\\\\"function d() { \ + return \\\\\\\\\\\\\\\"test\\\\\\\\\\\\\\\"; } d();\\\\\\\"); } \ + c();\\\"); } b();\"); } a();", &result)); + CPPUNIT_ASSERT_EQUAL("test", result); - // Check for errors too. - CPPUNIT_ASSERT(!m_browser->RunScript("syntax(error")); - CPPUNIT_ASSERT(!m_browser->RunScript("syntax(error", &result)); - CPPUNIT_ASSERT(!m_browser->RunScript("x.y.z")); -} + CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(\"This is a backslash: \\\\\");", + &result)); + CPPUNIT_ASSERT_EQUAL("This is a backslash: \\", result); -void WebTestCase::SetPage() -{ - m_browser->SetPage("text", ""); - ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL("text", m_browser->GetPageText()); + CPPUNIT_ASSERT(m_browser->RunScript("function f(){var d = new Date('10/08/2016 21:30:40'); \ + var tzoffset = d.getTimezoneOffset() * 60000; return new Date(d.getTime() - tzoffset);}f();", + &result)); + CPPUNIT_ASSERT_EQUAL("\"2016-10-08T21:30:40.000Z\"", result); - m_browser->SetPage("other text", ""); - ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL("other text", m_browser->GetPageText()); + // Check for errors too. + CPPUNIT_ASSERT(!m_browser->RunScript("syntax(error")); + CPPUNIT_ASSERT(!m_browser->RunScript("syntax(error", &result)); + CPPUNIT_ASSERT(!m_browser->RunScript("x.y.z")); + } + + SECTION("SetPage") + { + m_browser->SetPage("text", ""); + ENSURE_LOADED; + CPPUNIT_ASSERT_EQUAL("text", m_browser->GetPageText()); + + m_browser->SetPage("other text", ""); + ENSURE_LOADED; + CPPUNIT_ASSERT_EQUAL("other text", m_browser->GetPageText()); + } } #endif //wxUSE_WEBVIEW && (wxUSE_WEBVIEW_WEBKIT || wxUSE_WEBVIEW_WEBKIT2 || wxUSE_WEBVIEW_IE) From 1e0d47452c3e008db6234fc3d90a82345c97b6d3 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Jul 2019 14:02:15 +0200 Subject: [PATCH 3/3] Replace CppUnit check macros with CATCH ones No real changes, just use more natural CHECK() instead of CPPUNIT_ASSERT() and CPPUNIT_ASSERT_EQUAL(). --- tests/controls/webtest.cpp | 150 ++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/tests/controls/webtest.cpp b/tests/controls/webtest.cpp index 1319dae0ec..3b6a14d217 100644 --- a/tests/controls/webtest.cpp +++ b/tests/controls/webtest.cpp @@ -69,39 +69,39 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") SECTION("Title") { - CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle()); + CHECK(m_browser->GetCurrentTitle() == ""); //Test title after loading raw html m_browser->SetPage("TitleText", ""); ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL("Title", m_browser->GetCurrentTitle()); + CHECK(m_browser->GetCurrentTitle() == "Title"); //Test title after loading a url, we yield to let events process LoadUrl(); - CPPUNIT_ASSERT_EQUAL("", m_browser->GetCurrentTitle()); + CHECK(m_browser->GetCurrentTitle() == ""); } SECTION("URL") { - CPPUNIT_ASSERT_EQUAL("about:blank", m_browser->GetCurrentURL()); + CHECK(m_browser->GetCurrentURL() == "about:blank"); //After first loading about:blank the next in the sequence is about: LoadUrl(); - CPPUNIT_ASSERT_EQUAL("about:", m_browser->GetCurrentURL()); + CHECK(m_browser->GetCurrentURL() == "about:"); } SECTION("History") { LoadUrl(3); - CPPUNIT_ASSERT(m_browser->CanGoBack()); - CPPUNIT_ASSERT(!m_browser->CanGoForward()); + CHECK(m_browser->CanGoBack()); + CHECK(!m_browser->CanGoForward()); m_browser->GoBack(); ENSURE_LOADED; - CPPUNIT_ASSERT(m_browser->CanGoBack()); - CPPUNIT_ASSERT(m_browser->CanGoForward()); + CHECK(m_browser->CanGoBack()); + CHECK(m_browser->CanGoForward()); m_browser->GoBack(); ENSURE_LOADED; @@ -109,8 +109,8 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") ENSURE_LOADED; //We should now be at the start of the history - CPPUNIT_ASSERT(!m_browser->CanGoBack()); - CPPUNIT_ASSERT(m_browser->CanGoForward()); + CHECK(!m_browser->CanGoBack()); + CHECK(m_browser->CanGoForward()); } SECTION("HistoryEnable") @@ -118,13 +118,13 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") LoadUrl(); m_browser->EnableHistory(false); - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT(!m_browser->CanGoBack()); + CHECK(!m_browser->CanGoForward()); + CHECK(!m_browser->CanGoBack()); LoadUrl(); - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT(!m_browser->CanGoBack()); + CHECK(!m_browser->CanGoForward()); + CHECK(!m_browser->CanGoBack()); } SECTION("HistoryClear") @@ -135,13 +135,13 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") m_browser->GoBack(); ENSURE_LOADED; - CPPUNIT_ASSERT(m_browser->CanGoForward()); - CPPUNIT_ASSERT(m_browser->CanGoBack()); + CHECK(m_browser->CanGoForward()); + CHECK(m_browser->CanGoBack()); m_browser->ClearHistory(); - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT(!m_browser->CanGoBack()); + CHECK(!m_browser->CanGoForward()); + CHECK(!m_browser->CanGoBack()); } SECTION("HistoryList") @@ -150,39 +150,39 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") m_browser->GoBack(); ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL(1, m_browser->GetBackwardHistory().size()); - CPPUNIT_ASSERT_EQUAL(1, m_browser->GetForwardHistory().size()); + CHECK(m_browser->GetBackwardHistory().size() == 1); + CHECK(m_browser->GetForwardHistory().size() == 1); m_browser->LoadHistoryItem(m_browser->GetForwardHistory()[0]); ENSURE_LOADED; - CPPUNIT_ASSERT(!m_browser->CanGoForward()); - CPPUNIT_ASSERT_EQUAL(2, m_browser->GetBackwardHistory().size()); + CHECK(!m_browser->CanGoForward()); + CHECK(m_browser->GetBackwardHistory().size() == 2); } SECTION("Editable") { - CPPUNIT_ASSERT(!m_browser->IsEditable()); + CHECK(!m_browser->IsEditable()); m_browser->SetEditable(true); - CPPUNIT_ASSERT(m_browser->IsEditable()); + CHECK(m_browser->IsEditable()); m_browser->SetEditable(false); - CPPUNIT_ASSERT(!m_browser->IsEditable()); + CHECK(!m_browser->IsEditable()); } SECTION("Selection") { m_browser->SetPage("Some strong text", ""); ENSURE_LOADED; - CPPUNIT_ASSERT(!m_browser->HasSelection()); + CHECK(!m_browser->HasSelection()); m_browser->SelectAll(); - CPPUNIT_ASSERT(m_browser->HasSelection()); - CPPUNIT_ASSERT_EQUAL("Some strong text", m_browser->GetSelectedText()); + CHECK(m_browser->HasSelection()); + CHECK(m_browser->GetSelectedText() == "Some strong text"); // The web engine doesn't necessarily represent the HTML in the same way as // we used above, e.g. IE uses upper case for all the tags while WebKit @@ -197,7 +197,7 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") ); m_browser->ClearSelection(); - CPPUNIT_ASSERT(!m_browser->HasSelection()); + CHECK(!m_browser->HasSelection()); } SECTION("Zoom") @@ -205,10 +205,10 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") if(m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT)) { m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TYPE_LAYOUT, m_browser->GetZoomType()); + CHECK(m_browser->GetZoomType() == wxWEBVIEW_ZOOM_TYPE_LAYOUT); m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TINY, m_browser->GetZoom()); + CHECK(m_browser->GetZoom() == wxWEBVIEW_ZOOM_TINY); } //Reset the zoom level @@ -217,10 +217,10 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") if(m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT)) { m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TYPE_TEXT, m_browser->GetZoomType()); + CHECK(m_browser->GetZoomType() == wxWEBVIEW_ZOOM_TYPE_TEXT); m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY); - CPPUNIT_ASSERT_EQUAL(wxWEBVIEW_ZOOM_TINY, m_browser->GetZoom()); + CHECK(m_browser->GetZoom() == wxWEBVIEW_ZOOM_TINY); } } @@ -232,7 +232,7 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") wxString result; #if wxUSE_WEBVIEW_IE - CPPUNIT_ASSERT(wxWebViewIE::MSWSetModernEmulationLevel()); + CHECK(wxWebViewIE::MSWSetModernEmulationLevel()); // Define a specialized scope guard ensuring that we reset the emulation // level to its default value even if any asserts below fail. @@ -260,89 +260,89 @@ TEST_CASE_METHOD(WebViewTestCase, "WebView", "[wxWebView]") bool m_reset; } resetEmulationLevel; - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();person.name = 'Bar'; \ + CHECK(m_browser->RunScript("function f(){var person = new Object();person.name = 'Bar'; \ person.lastName = 'Foo';return person;}f();", &result)); - CPPUNIT_ASSERT_EQUAL("{\"name\":\"Bar\",\"lastName\":\"Foo\"}", result); + CHECK(result == "{\"name\":\"Bar\",\"lastName\":\"Foo\"}"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); - CPPUNIT_ASSERT_EQUAL("[\"foo\",\"bar\"]", result); + CHECK(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); + CHECK(result == "[\"foo\",\"bar\"]"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var d = new Date('10/08/2017 21:30:40'); \ + CHECK(m_browser->RunScript("function f(){var d = new Date('10/08/2017 21:30:40'); \ var tzoffset = d.getTimezoneOffset() * 60000; return new Date(d.getTime() - tzoffset);}f();", &result)); - CPPUNIT_ASSERT_EQUAL("\"2017-10-08T21:30:40.000Z\"", result); + CHECK(result == "\"2017-10-08T21:30:40.000Z\""); - CPPUNIT_ASSERT(resetEmulationLevel.DoReset()); + CHECK(resetEmulationLevel.DoReset()); #endif // wxUSE_WEBVIEW_IE - CPPUNIT_ASSERT(m_browser->RunScript("document.write(\"Hello World!\");")); - CPPUNIT_ASSERT_EQUAL("Hello World!", m_browser->GetPageText()); + CHECK(m_browser->RunScript("document.write(\"Hello World!\");")); + CHECK(m_browser->GetPageText() == "Hello World!"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f('Hello World!');", &result)); - CPPUNIT_ASSERT_EQUAL(_("Hello World!"), result); + CHECK(m_browser->RunScript("function f(a){return a;}f('Hello World!');", &result)); + CHECK(result == _("Hello World!")); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f('a\\\'aa\\n\\rb\vb\\tb\\\\ccc\\\"ddd\\b\\fx');", &result)); - CPPUNIT_ASSERT_EQUAL(_("a\'aa\n\rb\vb\tb\\ccc\"ddd\b\fx"), result); + CHECK(m_browser->RunScript("function f(a){return a;}f('a\\\'aa\\n\\rb\vb\\tb\\\\ccc\\\"ddd\\b\\fx');", &result)); + CHECK(result == _("a\'aa\n\rb\vb\tb\\ccc\"ddd\b\fx")); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(123);", &result)); - CPPUNIT_ASSERT_EQUAL(123, wxAtoi(result)); + CHECK(m_browser->RunScript("function f(a){return a;}f(123);", &result)); + CHECK(wxAtoi(result) == 123); - CPPUNIT_ASSERT(m_browser-> + CHECK(m_browser-> RunScript("function f(a){return a;}f(2.34);", &result)); double value; result.ToDouble(&value); - CPPUNIT_ASSERT_EQUAL(2.34, value); + CHECK(value == 2.34); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(false);", &result)); - CPPUNIT_ASSERT_EQUAL("false", result); + CHECK(m_browser->RunScript("function f(a){return a;}f(false);", &result)); + CHECK(result == "false"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();person.name = 'Foo'; \ + CHECK(m_browser->RunScript("function f(){var person = new Object();person.name = 'Foo'; \ person.lastName = 'Bar';return person;}f();", &result)); - CPPUNIT_ASSERT_EQUAL("{\"name\":\"Foo\",\"lastName\":\"Bar\"}", result); + CHECK(result == "{\"name\":\"Foo\",\"lastName\":\"Bar\"}"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); - CPPUNIT_ASSERT_EQUAL("[\"foo\",\"bar\"]", result); + CHECK(m_browser->RunScript("function f(){ return [\"foo\", \"bar\"]; }f();", &result)); + CHECK(result == "[\"foo\",\"bar\"]"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var person = new Object();}f();", &result)); - CPPUNIT_ASSERT_EQUAL("undefined", result); + CHECK(m_browser->RunScript("function f(){var person = new Object();}f();", &result)); + CHECK(result == "undefined"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){return null;}f();", &result)); - CPPUNIT_ASSERT_EQUAL("null", result); + CHECK(m_browser->RunScript("function f(){return null;}f();", &result)); + CHECK(result == "null"); result = ""; - CPPUNIT_ASSERT(!m_browser->RunScript("int main() { return 0; }", &result)); - CPPUNIT_ASSERT(!result); + CHECK(!m_browser->RunScript("int main() { return 0; }", &result)); + CHECK(!result); - CPPUNIT_ASSERT(m_browser->RunScript("function a() { return eval(\"function b() { \ + CHECK(m_browser->RunScript("function a() { return eval(\"function b() { \ return eval(\\\"function c() { return eval(\\\\\\\"function d() { \ return \\\\\\\\\\\\\\\"test\\\\\\\\\\\\\\\"; } d();\\\\\\\"); } \ c();\\\"); } b();\"); } a();", &result)); - CPPUNIT_ASSERT_EQUAL("test", result); + CHECK(result == "test"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(a){return a;}f(\"This is a backslash: \\\\\");", + CHECK(m_browser->RunScript("function f(a){return a;}f(\"This is a backslash: \\\\\");", &result)); - CPPUNIT_ASSERT_EQUAL("This is a backslash: \\", result); + CHECK(result == "This is a backslash: \\"); - CPPUNIT_ASSERT(m_browser->RunScript("function f(){var d = new Date('10/08/2016 21:30:40'); \ + CHECK(m_browser->RunScript("function f(){var d = new Date('10/08/2016 21:30:40'); \ var tzoffset = d.getTimezoneOffset() * 60000; return new Date(d.getTime() - tzoffset);}f();", &result)); - CPPUNIT_ASSERT_EQUAL("\"2016-10-08T21:30:40.000Z\"", result); + CHECK(result == "\"2016-10-08T21:30:40.000Z\""); // Check for errors too. - CPPUNIT_ASSERT(!m_browser->RunScript("syntax(error")); - CPPUNIT_ASSERT(!m_browser->RunScript("syntax(error", &result)); - CPPUNIT_ASSERT(!m_browser->RunScript("x.y.z")); + CHECK(!m_browser->RunScript("syntax(error")); + CHECK(!m_browser->RunScript("syntax(error", &result)); + CHECK(!m_browser->RunScript("x.y.z")); } SECTION("SetPage") { m_browser->SetPage("text", ""); ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL("text", m_browser->GetPageText()); + CHECK(m_browser->GetPageText() == "text"); m_browser->SetPage("other text", ""); ENSURE_LOADED; - CPPUNIT_ASSERT_EQUAL("other text", m_browser->GetPageText()); + CHECK(m_browser->GetPageText() == "other text"); } }