zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=599d7f80dbed43a90c6e92bc3b2b62c6ff2c263b

commit 599d7f80dbed43a90c6e92bc3b2b62c6ff2c263b
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Sep 11 13:38:28 2019 -0400

    tests/edje: add comprehensive edje reloading test
    
    Summary:
    this verifies:
    * successfully loading a file
    * emission of "load" signal when performing a file load
    * swallowing an object
    * no-op of file load operation on same file if mtime is unchanged
    * successfully reloading the same file if the mtime has changed
    * preserving user-defined data across file reloads
    
    Depends on D9877
    
    Reviewers: cedric
    
    Reviewed By: cedric
    
    Subscribers: #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D9878
---
 src/tests/edje/edje_test_edje.c | 46 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c
index fb1e8e224d..7f0f3b6f08 100644
--- a/src/tests/edje/edje_test_edje.c
+++ b/src/tests/edje/edje_test_edje.c
@@ -32,6 +32,51 @@ EFL_START_TEST(edje_test_edje_load)
 }
 EFL_END_TEST
 
+static void
+_callback(void *data, Evas_Object *obj EINA_UNUSED, const char *sig 
EINA_UNUSED, const char *src EINA_UNUSED)
+{
+   int *called = data;
+   ck_assert_int_eq(*called, 0);
+   *called = 1;
+}
+
+EFL_START_TEST(edje_test_edje_reload)
+{
+   Evas *evas = _setup_evas();
+   Evas_Object *obj, *rect;
+   int called = 0;
+   struct timespec t[2] = {0};
+   const char *layout = test_layout_get("test_swallows.edj");
+
+   obj = edje_object_add(evas);
+   edje_object_signal_callback_add(obj, "load", "", _callback, &called);
+   fail_unless(edje_object_file_set(obj, layout, "test_group"));
+   rect = evas_object_rectangle_add(evas);
+   ck_assert(edje_object_part_swallow(obj, "swallow", rect));
+   edje_object_message_signal_process(obj);
+   /* load should be called */
+   ck_assert_int_eq(called, 1);
+
+   called = 0;
+   fail_unless(edje_object_file_set(obj, layout, "test_group"));
+   edje_object_message_signal_process(obj);
+   /* load should NOT be called */
+   ck_assert_int_eq(called, 0);
+
+   t[0].tv_nsec = t[1].tv_nsec = UTIME_NOW;
+   ck_assert(!utimensat(0, layout, t, 0));
+
+   called = 0;
+   fail_unless(edje_object_file_set(obj, layout, "test_group"));
+   edje_object_message_signal_process(obj);
+   /* layout mtime has changed; load should be called */
+   ck_assert_int_eq(called, 1);
+
+   /* verify that the object has actually loaded */
+   ck_assert_ptr_eq(edje_object_part_swallow_get(obj, "swallow"), rect);
+}
+EFL_END_TEST
+
 EFL_START_TEST(edje_test_load_simple_layout)
 {
    Evas *evas = _setup_evas();
@@ -241,6 +286,7 @@ void edje_test_edje(TCase *tc)
    tcase_add_test(tc, edje_test_edje_init);
    tcase_add_test(tc, edje_test_load_simple_layout);
    tcase_add_test(tc, edje_test_edje_load);
+   tcase_add_test(tc, edje_test_edje_reload);
    tcase_add_test(tc, edje_test_simple_layout_geometry);
    tcase_add_test(tc, edje_test_complex_layout);
    tcase_add_test(tc, edje_test_calculate_parens);

-- 


Reply via email to