[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_back_forward_list_n_forward_items_copy_func.cpp
1 // Copyright 2014 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "utc_blink_ewk_base.h"
6
7 class utc_blink_ewk_back_forward_list_n_forward_items_copy : public utc_blink_ewk_base
8 {
9 protected:
10  void LoadFinished(Evas_Object*) override { EventLoopStop(Success); }
11
12 protected:
13   static const char* const TEST_URL1;
14   static const char* const TEST_URL2;
15   static const char* const TEST_URL3;
16 };
17
18 const char* const utc_blink_ewk_back_forward_list_n_forward_items_copy::TEST_URL1 = "ewk_history/page1.html";
19 const char* const utc_blink_ewk_back_forward_list_n_forward_items_copy::TEST_URL2 = "ewk_history/page2.html";
20 const char* const utc_blink_ewk_back_forward_list_n_forward_items_copy::TEST_URL3 = "ewk_history/page3.html";
21
22 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, LESS_ITEMS_TEST)
23 {
24   // load 3 pages to get some interesting history
25   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL1).c_str()));
26   ASSERT_EQ(Success, EventLoopStart());
27   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL2).c_str()));
28   ASSERT_EQ(Success, EventLoopStart());
29   std::string expectedTitle2(ewk_view_title_get(GetEwkWebView()));
30   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL3).c_str()));
31   ASSERT_EQ(Success, EventLoopStart());
32
33   ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
34   ASSERT_EQ(Success, EventLoopStart());
35   ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
36   ASSERT_EQ(Success, EventLoopStart());
37
38   // get back-forward list
39   Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
40   ASSERT_TRUE(list);
41
42   Eina_List *fwd_list = ewk_back_forward_list_n_forward_items_copy(list, 1);
43   ASSERT_TRUE(fwd_list);
44   ASSERT_EQ(1, eina_list_count(fwd_list));
45
46   // get the only item and check URL, original URL and title
47   Ewk_Back_Forward_List_Item *item = static_cast<Ewk_Back_Forward_List_Item *>(fwd_list->data);
48
49   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
50   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
51   ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
52
53   eina_list_free(fwd_list);
54 }
55
56 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, EQUAL_ITEMS_TEST)
57 {
58   // load 3 pages to get some interesting history
59   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL1).c_str()));
60   ASSERT_EQ(Success, EventLoopStart());
61   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL2).c_str()));
62   ASSERT_EQ(Success, EventLoopStart());
63   std::string expectedTitle2(ewk_view_title_get(GetEwkWebView()));
64   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL3).c_str()));
65   ASSERT_EQ(Success, EventLoopStart());
66   std::string expectedTitle3(ewk_view_title_get(GetEwkWebView()));
67
68   ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
69   ASSERT_EQ(Success, EventLoopStart());
70   ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
71   ASSERT_EQ(Success, EventLoopStart());
72
73   // get back-forward list
74   Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
75   ASSERT_TRUE(list);
76
77   Eina_List *forward_list = ewk_back_forward_list_n_forward_items_copy(list, 2);
78   ASSERT_TRUE(forward_list);
79   ASSERT_EQ(2, eina_list_count(forward_list));
80
81   // get first item and check URL, original URL and title
82   Ewk_Back_Forward_List_Item *item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->data);
83
84   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
85   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
86   ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
87
88   // get second item and check URL, original URL and title
89   item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->next->data);
90
91   ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_url_get(item));
92   ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_original_url_get(item));
93   ASSERT_STREQ(expectedTitle3.c_str(), ewk_back_forward_list_item_title_get(item));
94
95   eina_list_free(forward_list);
96
97   forward_list = ewk_back_forward_list_n_forward_items_copy(list, -1);
98   ASSERT_TRUE(forward_list);
99   ASSERT_EQ(2, eina_list_count(forward_list));
100
101   // get first item and check URL, original URL and title
102   item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->data);
103
104   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
105   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
106   ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
107
108   // get second item and check URL, original URL and title
109   item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->next->data);
110
111   ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_url_get(item));
112   ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_original_url_get(item));
113   ASSERT_STREQ(expectedTitle3.c_str(), ewk_back_forward_list_item_title_get(item));
114
115   eina_list_free(forward_list);
116 }
117
118 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, MORE_ITEMS_TEST)
119 {
120   // load 3 pages to get some interesting history
121   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL1).c_str()));
122   ASSERT_EQ(Success, EventLoopStart());
123   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL2).c_str()));
124   ASSERT_EQ(Success, EventLoopStart());
125   std::string expectedTitle2(ewk_view_title_get(GetEwkWebView()));
126   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL3).c_str()));
127   ASSERT_EQ(Success, EventLoopStart());
128   std::string expectedTitle3(ewk_view_title_get(GetEwkWebView()));
129
130   ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
131   ASSERT_EQ(Success, EventLoopStart());
132   ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
133   ASSERT_EQ(Success, EventLoopStart());
134
135   // get back-forward list
136   Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
137   ASSERT_TRUE(list);
138
139   Eina_List *fwd_list = ewk_back_forward_list_n_forward_items_copy(list, 10);
140   ASSERT_TRUE(fwd_list);
141   ASSERT_EQ(2, eina_list_count(fwd_list));
142
143   // get first item and check URL, original URL and title
144   Ewk_Back_Forward_List_Item *item = static_cast<Ewk_Back_Forward_List_Item *>(fwd_list->data);
145
146   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
147   ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
148   ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
149
150   // get second item and check URL, original URL and title
151   item = static_cast<Ewk_Back_Forward_List_Item *>(fwd_list->next->data);
152
153   ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_url_get(item));
154   ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_original_url_get(item));
155   ASSERT_STREQ(expectedTitle3.c_str(), ewk_back_forward_list_item_title_get(item));
156
157   eina_list_free(fwd_list);
158 }
159
160 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, EMPTY_TEST)
161 {
162   Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
163   ASSERT_TRUE(list);
164   Eina_List *fwd_list = ewk_back_forward_list_n_forward_items_copy(list, -1);
165   ASSERT_EQ(0, eina_list_count(fwd_list));
166 }
167
168 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, NULL_TEST)
169 {
170   ASSERT_FALSE(ewk_back_forward_list_n_forward_items_copy(NULL, -1));
171 }