summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2020-01-13 20:03:02 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2020-01-13 20:07:28 +0100
commitf7ba6a8e9b69545fc25e091a838636d876576286 (patch)
tree720f0331fd792d48f88e3230e7053ccee66e932a
parent8c857816b19b7f34ca7099bd8e80ad8fc35caaf9 (diff)
downloadefl-devs/bu5hm4n/work_asdf.tar.gz
-rw-r--r--src/tests/elementary/efl_ui_test_spin_button.c54
-rw-r--r--src/tests/elementary/suite_helpers.c15
-rw-r--r--src/tests/elementary/suite_helpers.h1
3 files changed, 70 insertions, 0 deletions
diff --git a/src/tests/elementary/efl_ui_test_spin_button.c b/src/tests/elementary/efl_ui_test_spin_button.c
index f723e348af..b9847894f7 100644
--- a/src/tests/elementary/efl_ui_test_spin_button.c
+++ b/src/tests/elementary/efl_ui_test_spin_button.c
@@ -3,6 +3,7 @@
#endif
#include <Elementary.h>
+#include "elm_entry_eo.h" //needed to check that spin is in text mode
#include <Efl_Ui.h>
#include "efl_ui_suite.h"
@@ -209,6 +210,57 @@ EFL_START_TEST (spin_double_values_hitting_max_with_step)
}
EFL_END_TEST
+static inline void
+_try_direct_text_input(const char *text, double result)
+{
+ Eo *entry;
+
+ efl_ui_focus_util_focus(efl_content_get(efl_part(spin, "efl.text_button")));
+ get_me_to_those_events(spin);
+ entry = efl_content_get(efl_part(spin, "efl.entry"));
+ elm_object_text_set(entry, "");
+ ck_assert_int_eq(efl_isa(entry, ELM_ENTRY_CLASS), 1);
+ efl_ui_focus_util_focus(entry);
+ get_me_to_those_events(spin);
+
+ write_key_sequence(spin, text);
+ get_me_to_those_events(spin);
+
+ efl_ui_focus_util_focus(efl_content_get(efl_part(spin, "efl.inc_button")));
+ ck_assert_msg(EINA_DBL_EQ(efl_ui_range_value_get(spin), result), "Values do not match %f - %f (%s)", efl_ui_range_value_get(spin), result, elm_object_text_get(entry));
+}
+
+EFL_START_TEST (spin_direct_text_input)
+{
+ efl_ui_spin_button_direct_text_input_set(spin, EINA_TRUE);
+ efl_ui_range_limits_set(spin, -30, 30);
+ efl_ui_range_value_set(spin, 20);
+ get_me_to_those_events(spin);
+ _try_direct_text_input("1asdf2", 12);
+ _try_direct_text_input("1-2", 12);
+ _try_direct_text_input("-12", -12);
+ _try_direct_text_input("-100", -30);
+ _try_direct_text_input("1.8", 18);
+ _try_direct_text_input("12342435", 30);
+}
+EFL_END_TEST
+
+EFL_START_TEST (spin_direct_text_input_comma_value)
+{
+ efl_ui_spin_button_direct_text_input_set(spin, EINA_TRUE);
+ efl_ui_range_limits_set(spin, -30, 30);
+ efl_ui_range_value_set(spin, 20);
+ efl_ui_format_string_set(spin, "%.2f", EFL_UI_FORMAT_STRING_TYPE_SIMPLE);
+ efl_ui_focus_util_focus(efl_content_get(efl_part(spin, "efl.text_button")));
+ get_me_to_those_events(spin);
+ _try_direct_text_input("1asdf2.1", 12.1);
+ _try_direct_text_input("1-2.2", 12.2);
+ _try_direct_text_input("-12.8", -12.8);
+ _try_direct_text_input("-100", -30);
+ _try_direct_text_input("10.8", 10.8);
+ _try_direct_text_input("12342435.12312341342", 30);
+}
+EFL_END_TEST
void efl_ui_test_spin_button(TCase *tc)
{
tcase_add_checked_fixture(tc, fail_on_errors_setup, fail_on_errors_teardown);
@@ -220,4 +272,6 @@ void efl_ui_test_spin_button(TCase *tc)
tcase_add_test(tc, spin_wraparound);
tcase_add_test(tc, spin_double_values);
tcase_add_test(tc, spin_double_values_hitting_max_with_step);
+ tcase_add_test(tc, spin_direct_text_input);
+ tcase_add_test(tc, spin_direct_text_input_comma_value);
}
diff --git a/src/tests/elementary/suite_helpers.c b/src/tests/elementary/suite_helpers.c
index 53c473a9fa..0ee066e697 100644
--- a/src/tests/elementary/suite_helpers.c
+++ b/src/tests/elementary/suite_helpers.c
@@ -618,3 +618,18 @@ drag_object(Eo *obj, int x, int y, int dx, int dy, Eina_Bool iterate)
evas_event_feed_mouse_move(e, x + dx, y + dy, 0, NULL);
evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
}
+
+void
+write_key_sequence(Eo *obj, const char *seqence)
+{
+ Evas *e = evas_object_evas_get(obj);
+ for (unsigned int i = 0; i < strlen(seqence); ++i)
+ {
+ const char part_seq[] = {seqence[i], '\0'};
+
+ evas_event_feed_key_down(e, part_seq, part_seq, part_seq, part_seq, 0, NULL);
+ ecore_main_loop_iterate();
+ evas_event_feed_key_up(e, part_seq, part_seq, part_seq, part_seq, 0, NULL);
+ ecore_main_loop_iterate();
+ }
+}
diff --git a/src/tests/elementary/suite_helpers.h b/src/tests/elementary/suite_helpers.h
index 40c8dec12b..b9535a8826 100644
--- a/src/tests/elementary/suite_helpers.h
+++ b/src/tests/elementary/suite_helpers.h
@@ -22,6 +22,7 @@ void click_part(Eo *obj, const char *part);
void click_part_flags(Eo *obj, const char *part, int flags);
void click_object_at(Eo *obj, int x, int y);
void click_object_at_flags(Eo *obj, int x, int y, int flags);
+void write_key_sequence(Eo *obj, const char *seqence);
void drag_object(Eo *obj, int x, int y, int dx, int dy, Eina_Bool iterate);
void wheel_object(Eo *obj, Eina_Bool horiz, Eina_Bool down);
void wheel_part(Eo *obj, const char *part, Eina_Bool horiz, Eina_Bool down);