summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tests/elementary/elm_suite.c1
-rw-r--r--src/tests/elementary/elm_suite.h1
-rw-r--r--src/tests/elementary/elm_test_widget_basics.c140
-rw-r--r--src/tests/elementary/meson.build3
4 files changed, 144 insertions, 1 deletions
diff --git a/src/tests/elementary/elm_suite.c b/src/tests/elementary/elm_suite.c
index 87fac6e4e1..d6aa4636e8 100644
--- a/src/tests/elementary/elm_suite.c
+++ b/src/tests/elementary/elm_suite.c
@@ -86,6 +86,7 @@ static const Efl_Test_Case etc[] = {
{ "elm_code_widget_selection", elm_code_test_widget_selection },
{ "elm_code_widget_undo", elm_code_test_widget_undo },
{ "elm_widget_focus", elm_test_widget_focus},
+ { "elm_widget_basics", elm_test_widget_basics},
{ NULL, NULL }
};
diff --git a/src/tests/elementary/elm_suite.h b/src/tests/elementary/elm_suite.h
index ba76b29615..67f5d0d5c4 100644
--- a/src/tests/elementary/elm_suite.h
+++ b/src/tests/elementary/elm_suite.h
@@ -84,6 +84,7 @@ void elm_test_slideshow(TCase *tc);
void elm_test_spinner(TCase *tc);
void elm_test_plug(TCase *tc);
void elm_test_widget_focus(TCase *tc);
+void elm_test_widget_basics(TCase *tc);
void elm_code_file_test_load(TCase *tc);
void elm_code_file_test_memory(TCase *tc);
diff --git a/src/tests/elementary/elm_test_widget_basics.c b/src/tests/elementary/elm_test_widget_basics.c
new file mode 100644
index 0000000000..e6f1c7f4eb
--- /dev/null
+++ b/src/tests/elementary/elm_test_widget_basics.c
@@ -0,0 +1,140 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Elementary.h>
+#include "elm_suite.h"
+
+typedef struct _Simple_Test_Widget
+{
+ Evas_Object* (*constructor)(Evas_Object *win);
+ const char *name;
+} Simple_Test_Widget;
+
+
+static const Simple_Test_Widget simple_widgets[] = {
+ {elm_flip_add, "flip"},
+ {elm_frame_add, "frame"},
+ {elm_player_add, "player"},
+ {elm_video_add, "video"},
+ {elm_ctxpopup_add, "ctxpopup"},
+ {elm_fileselector_add, "fileselector"},
+ {elm_hoversel_add, "hoversel"},
+ {elm_multibuttonentry_add, "multibuttonentry"},
+ {elm_naviframe_add, "naviframe"},
+ {elm_popup_add, "popup"},
+ {elm_actionslider_add, "actionslider"},
+ {elm_bg_add, "bg"},
+ {elm_box_add, "box"},
+ {elm_bubble_add, "bubble"},
+ {elm_calendar_add, "calendar"},
+ {elm_button_add, "button"},
+ {elm_check_add, "check"},
+ {elm_clock_add, "clock"},
+ {elm_colorselector_add, "colorselector"},
+ {elm_conformant_add, "conformant"},
+ {elm_dayselector_add, "dayselector"},
+ {elm_entry_add, "entry"},
+ {elm_flipselector_add, "flipselector"},
+ {elm_gengrid_add, "gengrid"},
+ {elm_genlist_add, "genlist"},
+ {elm_grid_add, "grid"},
+ {elm_hover_add, "hover"},
+ {elm_icon_add, "icon"},
+ {elm_image_add, "image"},
+ {elm_index_add, "index"},
+ {elm_label_add, "label"},
+ {elm_layout_add, "layout"},
+ {elm_list_add, "list"},
+ {elm_map_add, "map"},
+ {elm_mapbuf_add, "mapbuf"},
+ {elm_menu_add, "menu"},
+ {elm_notify_add, "notify"},
+ {elm_panel_add, "panel"},
+ {elm_panes_add, "panes"},
+ {elm_photo_add, "photo"},
+ {elm_photocam_add, "photocam"},
+ {elm_plug_add, "plug"},
+ {elm_prefs_add, "prefs"},
+ {elm_progressbar_add, "progressbar"},
+ {elm_radio_add, "radio"},
+ {elm_route_add, "route"},
+ {elm_separator_add, "seperator"},
+ {elm_slider_add, "slider"},
+ {elm_slideshow_add, "slideshow"},
+ {elm_spinner_add, "spinner"},
+ {elm_table_add, "table"},
+ {elm_textpath_add, "textpath"},
+ {elm_toolbar_add, "toolbar"},
+ {elm_web_add, "web"},
+ {elm_diskselector_add, "diskselector"},
+ {elm_datetime_add, "datetime"},
+ //{elm_glview_add, "glview"}, This can cause errors on some CI platforms, because the gl drivers there are not working properly
+ //{elm_combobox_add, "button"}, This is a beta widget which was never public and is written in a few ways that break basic assertions of widgets base class
+ //{elm_thumb_add, "button"}, This dies because of a ethumb bug, where the log domain is not correctly inited
+ //{elm_systray_add, "button"}, This is not a elm widget, but matches the API regax
+ //{elm_factory_add, "button"}, This is a beta widget which was never public but matches the API regax
+ {NULL, NULL},
+};
+
+EFL_START_TEST(elm_test_widget_creation_easy)
+{
+ Evas_Object *win, *o;
+ win = win_add();
+
+ evas_object_resize(win, 200, 200);
+ evas_object_show(win);
+ for (int i = 0; simple_widgets[i].name; ++i)
+ {
+ printf("B: %s\n", simple_widgets[i].name);
+ o = simple_widgets[i].constructor(win);
+ ck_assert_ptr_nonnull(o);
+ evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(win, o);
+ evas_object_show(o);
+ evas_object_del(o);
+ }
+}
+EFL_END_TEST
+
+EFL_START_TEST(elm_test_widget_creation_error_parent)
+{
+ Evas_Object *win, *o, *parent;
+ Evas *evas;
+
+ win = win_add();
+ evas = evas_object_evas_get(win);
+ evas_object_resize(win, 200, 200);
+ evas_object_show(win);
+
+ parent = evas_object_rectangle_add(evas);
+
+ for (int i = 0; simple_widgets[i].name; ++i)
+ {
+ if (eina_streq(simple_widgets[i].name, "gengrid") ||
+ eina_streq(simple_widgets[i].name, "genlist"))
+ continue;
+ if (eina_streq(simple_widgets[i].name, "datetime")) //this crashes in textblock
+ continue;
+
+ printf("A: %s\n", simple_widgets[i].name);
+
+ EXPECT_ERROR_START;
+ o = simple_widgets[i].constructor(parent);
+ EXPECT_ERROR_END;
+ ck_assert_ptr_nonnull(o);
+ evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(win, o);
+ evas_object_show(o);
+ evas_object_del(o);
+ }
+}
+EFL_END_TEST
+
+void elm_test_widget_basics(TCase *tc)
+{
+ tcase_add_test(tc, elm_test_widget_creation_easy);
+ tcase_add_test(tc, elm_test_widget_creation_error_parent);
+}
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index f7d56d742f..54953158e5 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -99,7 +99,8 @@ elementary_suite_src = [
'elm_code_test_widget_text.c',
'elm_code_test_widget_selection.c',
'elm_code_test_widget_undo.c',
- 'elm_test_widget_focus.c'
+ 'elm_test_widget_focus.c',
+ 'elm_test_widget_basics.c'
]
elementary_suite = executable('elementary_suite',