Merge "custom eail widget implementation" into tizen
[platform/core/uifw/eail.git] / tests / eail_entry_tc3.c
1 /*
2  * Tested interface: AtkEditableText
3  *
4  * Tested AtkObject: EailEntry
5  *
6  * Description: Test AtkEditableText interface
7  *
8  * Test input: accessible object representing EailEntry
9  *
10  * Expected test result: test should return 0 (success)
11  */
12
13 #include <Elementary.h>
14 #include <atk/atk.h>
15
16 #include "eail_test_utils.h"
17
18 #define ENTRY_TEXT "Trololo lololololo olololo"
19 #define ENTRY_FIRST "first"
20 #define ENTRY_SECOND "second"
21
22 INIT_TEST("EailEntry")
23
24 void
25 _test_state(AtkObject *obj, AtkStateType state_type)
26 {
27    AtkStateSet *state_set;
28
29    state_set = atk_object_ref_state_set(obj);
30    g_assert(atk_state_set_contains_state(state_set, state_type));
31    g_object_unref(state_set);
32 }
33
34 static void
35 _do_test(AtkObject *obj)
36 {
37    gchar *text;
38    int start_offset, end_offset;
39
40    g_assert(ATK_IS_EDITABLE_TEXT(obj));
41
42    text = atk_text_get_text(ATK_TEXT(obj), 0, -1);
43    if (!g_strcmp0(text, ENTRY_FIRST))
44      {
45         g_free(text);
46
47         text = g_strdup(ENTRY_TEXT);
48         atk_editable_text_set_text_contents(ATK_EDITABLE_TEXT(obj), text);
49         g_free(text);
50
51         start_offset = 0;
52         end_offset = -1;
53         text = atk_text_get_text(ATK_TEXT(obj), start_offset, end_offset);
54         g_assert_cmpstr(text, ==, ENTRY_TEXT);
55         g_free(text);
56
57         start_offset = 0;
58         end_offset = 7;
59         atk_editable_text_delete_text(ATK_EDITABLE_TEXT(obj), start_offset, end_offset);
60         text = atk_text_get_text(ATK_TEXT(obj), 0, -1);
61         g_assert_cmpstr(text, ==, " lololololo olololo");
62         g_free(text);
63
64         atk_editable_text_insert_text(ATK_EDITABLE_TEXT(obj), "Trololo", 7,
65                                       &start_offset);
66         text = atk_text_get_text(ATK_TEXT(obj), 0, -1);
67         g_assert(start_offset == 7);
68         g_assert_cmpstr(text, ==, ENTRY_TEXT);
69         g_free(text);
70
71         start_offset = 8;
72         end_offset = 18;
73         atk_editable_text_copy_text(ATK_EDITABLE_TEXT(obj), start_offset, end_offset);
74         atk_editable_text_set_text_contents(ATK_EDITABLE_TEXT(obj), "123");
75         atk_editable_text_paste_text(ATK_EDITABLE_TEXT(obj), 3);
76
77         start_offset = 0;
78         end_offset = -1;
79         text = atk_text_get_text(ATK_TEXT(obj), start_offset, end_offset);
80         g_assert_cmpstr(text, ==, "123lololololo");
81         g_free(text);
82
83         start_offset = 0;
84         end_offset = 3;
85         atk_editable_text_cut_text(ATK_EDITABLE_TEXT(obj), start_offset, end_offset);
86         text = atk_text_get_text(ATK_TEXT(obj), start_offset, end_offset);
87         g_assert_cmpstr(text, ==, "lol");
88         g_free(text);
89
90         start_offset = 0;
91         end_offset = -1;
92         atk_editable_text_paste_text(ATK_EDITABLE_TEXT(obj), 3);
93         text = atk_text_get_text(ATK_TEXT(obj), start_offset, end_offset);
94         g_assert_cmpstr(text, ==, "lol123olololo");
95         g_free(text);
96
97         atk_editable_text_cut_text(ATK_EDITABLE_TEXT(obj), 3, 6);
98         text = atk_text_get_text(ATK_TEXT(obj), 0, -1);
99         g_assert_cmpstr(text, ==, "lololololo");
100         g_free(text);
101      }
102    else if (!g_strcmp0(text, ENTRY_SECOND))
103      {
104         g_free(text);
105         atk_editable_text_paste_text(ATK_EDITABLE_TEXT(obj), 0);
106         text = atk_text_get_text(ATK_TEXT(obj), 0, -1);
107         g_assert_cmpstr(text, ==, "123second");
108         g_free(text);
109
110         eailu_test_code_called = 1;
111      }
112 }
113
114 static void
115 _init_entry(Evas_Object *win)
116 {
117    Evas_Object *box, *tb, *bg, *en, *en2;
118
119    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
120    elm_win_autodel_set(win, EINA_TRUE);
121
122    bg = elm_bg_add(win);
123    elm_win_resize_object_add(win, bg);
124    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
125    evas_object_show(bg);
126
127    box = elm_box_add(win);
128    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
129    elm_win_resize_object_add(win, box);
130    evas_object_show(box);
131
132    tb = elm_box_add(win);
133    elm_box_horizontal_set(tb, EINA_TRUE);
134    evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, 0.0);
135    evas_object_size_hint_weight_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
136    elm_box_pack_end(box, tb);
137    evas_object_show(tb);
138
139    en = elm_entry_add(win);
140    elm_entry_autosave_set(en, EINA_FALSE);
141    elm_entry_line_wrap_set(en, ELM_WRAP_WORD);
142    elm_entry_entry_set(en, ENTRY_FIRST);
143    evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
144    evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
145    elm_box_pack_end(box, en);
146    evas_object_show(en);
147
148    en2 = elm_entry_add(win);
149    elm_entry_autosave_set(en2, EINA_FALSE);
150    elm_entry_line_wrap_set(en2, ELM_WRAP_WORD);
151    elm_entry_entry_set(en2, ENTRY_SECOND);
152    evas_object_size_hint_weight_set(en2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
153    evas_object_size_hint_align_set(en2, EVAS_HINT_FILL, EVAS_HINT_FILL);
154    elm_box_pack_end(box, en2);
155    evas_object_show(en2);
156
157    evas_object_resize(win, 200, 300);
158 }
159
160 EAPI_MAIN int
161 elm_main(int argc, char *argv[])
162 {
163    Evas_Object *win;
164
165    win = eailu_create_test_window_with_glib_init(_on_done, _on_focus_in);
166    _init_entry(win);
167    evas_object_show(win);
168    elm_run();
169    elm_shutdown();
170
171    return 0;
172 }
173 ELM_MAIN()