xartigas pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6b1de6a4ac4afac779d873f292757c943331540d

commit 6b1de6a4ac4afac779d873f292757c943331540d
Author: Marcel Hollerbach <[email protected]>
Date:   Mon Nov 11 10:14:42 2019 +0100

    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(-)

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 <stdio.h>
+
+#include <Evas.h>
+
+#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',

-- 


Reply via email to