Title: [128995] trunk/Source/WebKit/efl
Revision
128995
Author
[email protected]
Date
2012-09-19 06:53:47 -0700 (Wed, 19 Sep 2012)

Log Message

[EFL][UT] Refactoring an implementation of testing framework for wk1.
https://bugs.webkit.org/show_bug.cgi?id=94925

Patch by Krzysztof Czech <[email protected]> on 2012-09-19
Reviewed by Gyuyoung Kim.

The reason of changing, was to adjust current implementation to use gtest features
related to cleaning (SetUp, TearDown), cleaning code in terms of useless methods
and lastly to make framework easier to use.

* tests/UnitTestUtils/EWKTestBase.cpp:
(EWKUnitTests::EWKTestBase::EWKTestBase): Added to initialize test view.
(EWKUnitTests::EWKTestBase::webView): Returns current webview.
(EWKUnitTests::EWKTestBase::SetUp):
Before test is started, SetUp is called.
Used this to initialize efl and test view.
(EWKUnitTests::EWKTestBase::TearDown):
TearDown is called as soon as test is completed.
Used this to properly shutdown efl and clean test view.
(EWKUnitTests::EWKTestBase::onLoadFinished):
(EWKUnitTests::EWKTestBase::waitUntilLoadFinished): It waits till test page will be properly loaded.
(EWKUnitTests::EWKTestBase::loadUrl): Starts loading test page.
* tests/UnitTestUtils/EWKTestBase.h:
* tests/UnitTestUtils/EWKTestView.cpp:
(EWKUnitTests::EWKTestView::EWKTestView):
(EWKUnitTests::EWKTestView::init): Initialize test view.
* tests/UnitTestUtils/EWKTestView.h:
(EWKTestView):
* tests/test_ewk_view.cpp:
(TEST_F):
* tests/test_runner.cpp:
(main):

Modified Paths

Diff

Modified: trunk/Source/WebKit/efl/ChangeLog (128994 => 128995)


--- trunk/Source/WebKit/efl/ChangeLog	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/ChangeLog	2012-09-19 13:53:47 UTC (rev 128995)
@@ -1,3 +1,37 @@
+2012-09-19  Krzysztof Czech  <[email protected]>
+
+        [EFL][UT] Refactoring an implementation of testing framework for wk1.
+        https://bugs.webkit.org/show_bug.cgi?id=94925
+
+        Reviewed by Gyuyoung Kim.
+
+        The reason of changing, was to adjust current implementation to use gtest features
+        related to cleaning (SetUp, TearDown), cleaning code in terms of useless methods
+        and lastly to make framework easier to use.
+
+        * tests/UnitTestUtils/EWKTestBase.cpp:
+        (EWKUnitTests::EWKTestBase::EWKTestBase): Added to initialize test view.
+        (EWKUnitTests::EWKTestBase::webView): Returns current webview.
+        (EWKUnitTests::EWKTestBase::SetUp):
+        Before test is started, SetUp is called.
+        Used this to initialize efl and test view.
+        (EWKUnitTests::EWKTestBase::TearDown):
+        TearDown is called as soon as test is completed.
+        Used this to properly shutdown efl and clean test view.
+        (EWKUnitTests::EWKTestBase::onLoadFinished):
+        (EWKUnitTests::EWKTestBase::waitUntilLoadFinished): It waits till test page will be properly loaded.
+        (EWKUnitTests::EWKTestBase::loadUrl): Starts loading test page.
+        * tests/UnitTestUtils/EWKTestBase.h:
+        * tests/UnitTestUtils/EWKTestView.cpp:
+        (EWKUnitTests::EWKTestView::EWKTestView):
+        (EWKUnitTests::EWKTestView::init): Initialize test view.
+        * tests/UnitTestUtils/EWKTestView.h:
+        (EWKTestView):
+        * tests/test_ewk_view.cpp:
+        (TEST_F):
+        * tests/test_runner.cpp:
+        (main):
+
 2012-09-19  Christophe Dumez  <[email protected]>
 
         [EFL] EFL's DRT does not support overriding 'WebKitCSSRegionsEnabled' preference

Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp (128994 => 128995)


--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp	2012-09-19 13:53:47 UTC (rev 128995)
@@ -19,10 +19,7 @@
 #include "config.h"
 #include "EWKTestBase.h"
 
-#include "EWKTestConfig.h"
-#include "EWKTestView.h"
 #include <EWebKit.h>
-
 #include <Ecore.h>
 #include <Edje.h>
 
@@ -30,73 +27,52 @@
 
 namespace EWKUnitTests {
 
-bool EWKTestBase::init()
+EWKTestBase::EWKTestBase()
+    : m_ewkTestView(0)
 {
-    if (!ecore_evas_init())
-        return false;
+}
 
-    if (!edje_init()) {
-        ecore_evas_shutdown();
-        return false;
-    }
-
-    int ret = ewk_init();
-    const char* proxyUri = getenv("http_proxy");
-
-    if (ret && proxyUri)
-        ewk_network_proxy_uri_set(proxyUri);
-
-    return ret;
+Evas_Object* EWKTestBase::webView()
+{
+    return m_ewkTestView->webView();
 }
 
-void EWKTestBase::shutdownAll()
+void EWKTestBase::SetUp()
 {
-    int count = 0;
+    ASSERT_GT(ecore_evas_init(), 0);
+    ASSERT_GT(ewk_init(), 0);
 
-    while ((count = ecore_evas_shutdown()) > 0) { }
-    while ((count = edje_shutdown()) > 0) { }
-    while ((count = ewk_shutdown()) > 0) { }
+    const char* proxyUrl = getenv("http_proxy");
+    if (proxyUrl)
+        ewk_network_proxy_uri_set(proxyUrl);
+
+    m_ewkTestView = new EWKTestView();
 }
 
-void EWKTestBase::startTest()
+void EWKTestBase::TearDown()
 {
-    ecore_main_loop_begin();
+    delete m_ewkTestView;
+    ecore_evas_shutdown();
+    ewk_shutdown();
 }
 
-void EWKTestBase::endTest()
+void EWKTestBase::onLoadFinished(void* data, Evas_Object* webView, void* eventInfo)
 {
     ecore_main_loop_quit();
 }
 
-bool EWKTestBase::createTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
+void EWKTestBase::waitUntilLoadFinished()
 {
-    EFL_INIT_RET();
-
-    EWKTestEcoreEvas evas(useX11Window);
-    if (!evas.evas())
-        return false;
-    evas.show();
-
-    EWKTestView view(evas.evas(), url);
-    if (!view.init())
-        return false;
-
-    view.bindEvents(event_callback, event_name, event_data);
-    view.show();
-
-    START_TEST();
-
-    return true;
+    evas_object_smart_callback_add(webView(), "load,finished", onLoadFinished, 0);
+    ecore_main_loop_begin();
+    evas_object_smart_callback_del(webView(), "load,finished", onLoadFinished);
 }
 
-bool EWKTestBase::runTest(void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
+void EWKTestBase::loadUrl(const char* url)
 {
-    return createTest(Config::defaultTestPage, event_callback, event_name, event_data);
+    ASSERT_TRUE(m_ewkTestView->init(useX11Window));
+    ASSERT_TRUE(ewk_view_uri_set(webView(), url));
+    waitUntilLoadFinished();
 }
 
-bool EWKTestBase::runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
-{
-    return createTest(url, event_callback, event_name, event_data);
 }
-
-}

Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h (128994 => 128995)


--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h	2012-09-19 13:53:47 UTC (rev 128995)
@@ -19,49 +19,29 @@
 #ifndef EWKTestBase_h
 #define EWKTestBase_h
 
-#include <Evas.h>
+#include "EWKTestConfig.h"
+#include "EWKTestView.h"
 #include <gtest/gtest.h>
 
-#define RUN_TEST(args...)   \
-    do {    \
-        ASSERT_EQ(true, EWKTestBase::runTest(args));    \
-    } while (0)
+namespace EWKUnitTests {
 
-#define START_TEST()    \
-    do {    \
-        EWKTestBase::startTest();   \
-    } while (0)
+class EWKTestBase: public ::testing::Test {
+public:
+    static int useX11Window;
 
-#define END_TEST()    \
-    do {    \
-        EWKTestBase::endTest(); \
-    } while (0)
+    static void onLoadFinished(void* data, Evas_Object* webView, void* eventInfo);
 
-#define EFL_INIT_RET()  \
-    do {    \
-        if (!EWKTestBase::init())   \
-            return false;    \
-    } while (0)
+    Evas_Object* webView();
+protected:
+    EWKTestBase();
 
-#define EFL_INIT()  \
-    do {    \
-        EWKTestBase::init();    \
-    } while (0)
+    virtual void SetUp();
+    virtual void TearDown();
 
-namespace EWKUnitTests {
+    void loadUrl(const char* url = ""
+    void waitUntilLoadFinished();
 
-class EWKTestBase {
-    static bool createTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data);
-public:
-    static bool init();
-    static void shutdownAll();
-    static void startTest();
-    static void endTest();
-
-    static bool runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name = "load,finished", void* event_data = 0);
-    static bool runTest(void (*event_callback)(void*, Evas_Object*, void*), const char* event_name = "load,finished", void* event_data = 0);
-
-    static int useX11Window;
+    EWKTestView* m_ewkTestView;
 };
 
 }

Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp (128994 => 128995)


--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp	2012-09-19 13:53:47 UTC (rev 128995)
@@ -19,131 +19,53 @@
 #include "config.h"
 #include "EWKTestView.h"
 
-#include "EWKTestConfig.h"
 #include <EWebKit.h>
-
+#include <wtf/NullPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/RefPtr.h>
 
 namespace EWKUnitTests {
 
-EWKTestEcoreEvas::EWKTestEcoreEvas(int useX11Window)
+EWKTestView::EWKTestView()
 {
-    if (useX11Window)
-        m_ecoreEvas = adoptPtr(ecore_evas_new(0, 0, 0, Config::defaultViewWidth, Config::defaultViewHeight, 0));
-    else
-        m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(Config::defaultViewWidth, Config::defaultViewHeight));
 }
 
-EWKTestEcoreEvas::EWKTestEcoreEvas(const char* engine_name, int viewport_x, int viewport_y, int viewport_w, int viewport_h, const char* extra_options, int useX11Window)
+bool EWKTestView::init(int useX11Window, EwkViewType testViewType, int width, int height)
 {
+    m_webView = nullptr;
+
     if (useX11Window)
-        m_ecoreEvas = adoptPtr(ecore_evas_new(engine_name, viewport_x, viewport_y, viewport_w, viewport_h, extra_options));
+        m_ecoreEvas = adoptPtr(ecore_evas_new(0, 0, 0, width, height, 0));
     else
-        m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(viewport_x, viewport_y));
-}
+        m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(width, height));
 
-Evas* EWKTestEcoreEvas::evas()
-{
-    if (m_ecoreEvas.get())
-        return ecore_evas_get(m_ecoreEvas.get());
-    return 0;
-}
+    if (!m_ecoreEvas)
+        return false;
 
-void EWKTestEcoreEvas::show()
-{
-    if (m_ecoreEvas.get())
-        ecore_evas_show(m_ecoreEvas.get());
-}
-
-EWKTestView::EWKTestView(Evas* evas)
-    : m_evas(evas)
-    , m_url(Config::defaultTestPage)
-    , m_defaultViewType(TiledView)
-    , m_width(Config::defaultViewWidth)
-    , m_height(Config::defaultViewHeight)
-{
-}
-
-EWKTestView::EWKTestView(Evas* evas, const char* url)
-    : m_evas(evas)
-    , m_url(url)
-    , m_defaultViewType(TiledView)
-    , m_width(Config::defaultViewWidth)
-    , m_height(Config::defaultViewHeight)
-{
-}
-
-EWKTestView::EWKTestView(Evas* evas, EwkViewType type, const char* url)
-    : m_evas(evas)
-    , m_url(url)
-    , m_defaultViewType(type)
-    , m_width(Config::defaultViewWidth)
-    , m_height(Config::defaultViewHeight)
-{
-}
-
-EWKTestView::EWKTestView(Evas* evas, EwkViewType type, const char* url, int width, int height)
-    : m_evas(evas)
-    , m_url(url)
-    , m_defaultViewType(type)
-    , m_width(width)
-    , m_height(height)
-{
-}
-
-bool EWKTestView::init()
-{
-    if (!m_evas || m_url.empty())
+    ecore_evas_show(m_ecoreEvas.get());
+    Evas* evas = ecore_evas_get(m_ecoreEvas.get());
+    if (!evas)
         return false;
 
-    switch (m_defaultViewType) {
+    switch (testViewType) {
     case SingleView:
-        m_webView = adoptRef(ewk_view_single_add(m_evas));
+        m_webView = adoptRef(ewk_view_single_add(evas));
         break;
 
     case TiledView:
-        m_webView = adoptRef(ewk_view_tiled_add(m_evas));
+        m_webView = adoptRef(ewk_view_tiled_add(evas));
         break;
     }
 
-    if (!m_webView.get())
+    if (!m_webView)
         return false;
 
     ewk_view_theme_set(m_webView.get(), Config::defaultThemePath);
-    ewk_view_uri_set(m_webView.get(), m_url.c_str());
-}
 
-void EWKTestView::show()
-{
-    if (!m_webView.get())
-        return;
-    evas_object_resize(m_webView.get(), m_width, m_height);
+    evas_object_resize(m_webView.get(), width, height);
     evas_object_show(m_webView.get());
     evas_object_focus_set(m_webView.get(), EINA_TRUE);
+    return true;
 }
 
-Evas_Object* EWKTestView::mainFrame()
-{
-    if (m_webView.get())
-        return ewk_view_frame_main_get(m_webView.get());
-    return 0;
 }
-
-Evas* EWKTestView::evas()
-{
-    if (m_webView.get())
-        return evas_object_evas_get(m_webView.get());
-    return 0;
-}
-
-void EWKTestView::bindEvents(void (*callback)(void*, Evas_Object*, void*), const char* eventName, void* ptr)
-{
-    if (!m_webView.get())
-        return;
-
-    evas_object_smart_callback_del(m_webView.get(), eventName, callback);
-    evas_object_smart_callback_add(m_webView.get(), eventName, callback, ptr);
-}
-
-}

Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h (128994 => 128995)


--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h	2012-09-19 13:53:47 UTC (rev 128995)
@@ -19,56 +19,32 @@
 #ifndef EWKTestView_h
 #define EWKTestView_h
 
+#include "EWKTestConfig.h"
 #include <Ecore_Evas.h>
 #include <Evas.h>
-#include <string>
 #include <wtf/OwnPtr.h>
 #include <wtf/efl/RefPtrEfl.h>
 
 namespace EWKUnitTests {
 
-class EWKTestEcoreEvas {
-public:
-    EWKTestEcoreEvas(int useX11Window);
-    EWKTestEcoreEvas(const char* engine_name, int viewport_x, int viewport_y, int viewport_w, int viewport_h, const char* extra_options, int useX11Window);
-
-    Evas* evas();
-    void show();
-
-private:
-    OwnPtr<Ecore_Evas> m_ecoreEvas;
-};
-
 class EWKTestView {
 public:
     enum EwkViewType {
         SingleView = 0,
-        TiledView,
+        TiledView
     };
 
-    explicit EWKTestView(Evas*);
-    EWKTestView(Evas*, const char* url);
-    EWKTestView(Evas*, EwkViewType, const char* url);
-    EWKTestView(Evas*, EwkViewType, const char* url, int width, int height);
+    EWKTestView();
 
     Evas_Object* webView() { return m_webView.get(); }
-    Evas_Object* mainFrame();
-    Evas* evas();
-    void show();
 
-    bool init();
-    void bindEvents(void (*callback)(void*, Evas_Object*, void*), const char* eventName, void* ptr);
-
+    bool init(int useX11Window = 0, EwkViewType testViewType = TiledView, int width = Config::defaultViewWidth, int height = Config::defaultViewHeight);
 private:
     EWKTestView(const EWKTestView&);
-    EWKTestView operator=(const EWKTestView&);
+    EWKTestView& operator=(const EWKTestView&);
 
-    Evas* m_evas;
+    OwnPtr<Ecore_Evas> m_ecoreEvas;
     RefPtr<Evas_Object> m_webView;
-
-    int m_width, m_height;
-    EwkViewType m_defaultViewType;
-    std::string m_url;
 };
 
 }

Modified: trunk/Source/WebKit/efl/tests/test_ewk_view.cpp (128994 => 128995)


--- trunk/Source/WebKit/efl/tests/test_ewk_view.cpp	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/tests/test_ewk_view.cpp	2012-09-19 13:53:47 UTC (rev 128995)
@@ -19,36 +19,29 @@
 #include "config.h"
 
 #include "UnitTestUtils/EWKTestBase.h"
+#include "UnitTestUtils/EWKTestConfig.h"
 #include <EWebKit.h>
-#include <gtest/gtest.h>
+#include <Ecore.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
 
 using namespace EWKUnitTests;
 
 /**
 * @brief Checking whether function properly returns correct value.
 */
-static void ewkViewEditableGetCb(void* eventInfo, Evas_Object* o, void* data)
+TEST_F(EWKTestBase, ewk_view_editable_get)
 {
-    ewk_view_editable_set(o, EINA_FALSE);
-    EXPECT_EQ(EINA_FALSE, ewk_view_editable_get(o));
-    END_TEST();
+    loadUrl();
+    ewk_view_editable_set(webView(), EINA_FALSE);
+    ASSERT_FALSE(ewk_view_editable_get(webView()));
 }
 
-TEST(test_ewk_view, ewk_view_editable_get)
-{
-    RUN_TEST(ewkViewEditableGetCb);
-}
-
 /**
 * @brief Checking whether function returns correct uri string.
 */
-static void ewkViewUriGetCb(void* eventInfo, Evas_Object* o, void* data)
+TEST_F(EWKTestBase, ewk_view_uri_get)
 {
-    EXPECT_STREQ("http://www.webkit.org/", ewk_view_uri_get(o));
-    END_TEST();
+    loadUrl();
+    EXPECT_STREQ(ewk_view_uri_get(webView()), Config::defaultTestPage);
 }
-
-TEST(test_ewk_view, ewk_view_uri_get)
-{
-    RUN_TEST("http://www.webkit.org", ewkViewUriGetCb);
-}

Modified: trunk/Source/WebKit/efl/tests/test_runner.cpp (128994 => 128995)


--- trunk/Source/WebKit/efl/tests/test_runner.cpp	2012-09-19 13:50:11 UTC (rev 128994)
+++ trunk/Source/WebKit/efl/tests/test_runner.cpp	2012-09-19 13:53:47 UTC (rev 128995)
@@ -16,6 +16,8 @@
     Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
 
+#include "config.h"
+
 #include "UnitTestUtils/EWKTestBase.h"
 #include <getopt.h>
 #include <gtest/gtest.h>
@@ -33,7 +35,6 @@
 
 int main(int argc, char** argv)
 {
-    atexit(EWKUnitTests::EWKTestBase::shutdownAll);
     parseCustomArguments(argc, argv);
     ::testing::InitGoogleTest(&argc, argv);
     return RUN_ALL_TESTS();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to