From 6b1de6a4ac4afac779d873f292757c943331540d Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Mon, 11 Nov 2019 10:14:42 +0100 Subject: [PATCH] efl_canvas_animation: correctly handle double signness Summary: start_delay and duration both have to be > 0.0 otherwise there should be an error. This also adds the neccessary checks, to ensure that. For now this is only added to the normal evas test suite, maybe we eed to refactor these efl_* API tests into theire own test suite. However, not for now. Reviewers: segfaultxavi Reviewed By: segfaultxavi Subscribers: segfaultxavi, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10617 --- src/lib/evas/canvas/efl_canvas_animation.c | 3 +- src/tests/evas/efl_canvas_animation.c | 40 ++++++++++++++++++++++ src/tests/evas/evas_suite.c | 1 + src/tests/evas/evas_suite.h | 1 + src/tests/evas/meson.build | 1 + 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/tests/evas/efl_canvas_animation.c diff --git a/src/lib/evas/canvas/efl_canvas_animation.c b/src/lib/evas/canvas/efl_canvas_animation.c index 119384b5eb..33ffa035ac 100644 --- a/src/lib/evas/canvas/efl_canvas_animation.c +++ b/src/lib/evas/canvas/efl_canvas_animation.c @@ -7,6 +7,7 @@ _efl_canvas_animation_duration_set(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Animation_Data *pd, double sec) { + EINA_SAFETY_ON_FALSE_RETURN(sec > 0.0); pd->duration = sec; } @@ -69,7 +70,7 @@ _efl_canvas_animation_start_delay_set(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Animation_Data *pd, double sec) { - EINA_SAFETY_ON_FALSE_RETURN(sec < 0.0); + EINA_SAFETY_ON_FALSE_RETURN(sec >= 0.0); pd->start_delay_time = sec; } diff --git a/src/tests/evas/efl_canvas_animation.c b/src/tests/evas/efl_canvas_animation.c new file mode 100644 index 0000000000..cef036341c --- /dev/null +++ b/src/tests/evas/efl_canvas_animation.c @@ -0,0 +1,40 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include + +#include "evas_suite.h" +#include "evas_tests_helpers.h" + +EFL_START_TEST(efl_canvas_animation_negative_double_checking) +{ + Efl_Canvas_Animation *animation = efl_new(EFL_CANVAS_ANIMATION_CLASS); + + efl_animation_duration_set(animation, 1.0); + ck_assert_int_eq(efl_animation_duration_get(animation), 1.0); + efl_animation_duration_set(animation, 3.0); + ck_assert_int_eq(efl_animation_duration_get(animation), 3.0); + EXPECT_ERROR_START; + efl_animation_duration_set(animation, -1.0); + ck_assert_int_eq(efl_animation_duration_get(animation), 3.0); + EXPECT_ERROR_END; + + efl_animation_start_delay_set(animation, 1.0); + ck_assert(EINA_DBL_EQ(efl_animation_start_delay_get(animation), 1.0)); + efl_animation_start_delay_set(animation, 0.0); + ck_assert(EINA_DBL_EQ(efl_animation_start_delay_get(animation), 0.0)); + EXPECT_ERROR_START; + efl_animation_start_delay_set(animation, -1.0); + ck_assert_int_eq(efl_animation_start_delay_get(animation), 0.0); + EXPECT_ERROR_END; + +} +EFL_END_TEST + +void efl_test_canvas_animation(TCase *tc) +{ + tcase_add_test(tc, efl_canvas_animation_negative_double_checking); +} diff --git a/src/tests/evas/evas_suite.c b/src/tests/evas/evas_suite.c index 5e3d0d5571..eded3ae08f 100644 --- a/src/tests/evas/evas_suite.c +++ b/src/tests/evas/evas_suite.c @@ -29,6 +29,7 @@ static const Efl_Test_Case etc[] = { { "Object Smart", evas_test_object_smart }, { "Matrix", evas_test_matrix }, { "Events", evas_test_events }, + { "Efl Canvas Animation", efl_test_canvas_animation }, { NULL, NULL } }; diff --git a/src/tests/evas/evas_suite.h b/src/tests/evas/evas_suite.h index 6fee2236d0..90a7ac0860 100644 --- a/src/tests/evas/evas_suite.h +++ b/src/tests/evas/evas_suite.h @@ -23,5 +23,6 @@ void evas_test_evasgl(TCase *tc); void evas_test_object_smart(TCase *tc); void evas_test_matrix(TCase *tc); void evas_test_events(TCase *tc); +void efl_test_canvas_animation(TCase *tc); #endif /* _EVAS_SUITE_H */ diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build index 62d744a5db..0e92eba83e 100644 --- a/src/tests/evas/meson.build +++ b/src/tests/evas/meson.build @@ -21,6 +21,7 @@ evas_suite_src = [ 'efl_test_canvas.c', 'efl_test_canvas2.c', 'efl_test_canvas3.c', + 'efl_canvas_animation.c', ] evas_suite = executable('evas_suite',