cedric pushed a commit to branch master.

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

commit b799ba1a10b0f4906a5487474ba9f14db465caeb
Author: Cedric BAIL <cedric.b...@free.fr>
Date:   Fri Jun 14 16:46:17 2019 -0700

    evas: add a test for loading Android 9patch file.
    
    Example data come from 
https://github.com/vindolin/ninepatch/tree/master/ninepatch/data
    under MIT license.
    
    Reviewed-by: Mike Blumenkrantz <michael.blumenkra...@gmail.com>
    Reviewed-by: Hermet Park <hermetp...@gmail.com>
    Differential Revision: https://phab.enlightenment.org/D9105
---
 src/tests/evas/evas_test_image.c            |  89 ++++++++++++++++++++++++++++
 src/tests/evas/evas_tests_helpers.h         |  15 +----
 src/tests/evas/images/9patch_test.9.png     | Bin 0 -> 9821 bytes
 src/tests/evas/images/9patch_test.9.png.png | Bin 0 -> 16919 bytes
 4 files changed, 92 insertions(+), 12 deletions(-)

diff --git a/src/tests/evas/evas_test_image.c b/src/tests/evas/evas_test_image.c
index c66d718ce0..1eaa6d0e2e 100644
--- a/src/tests/evas/evas_test_image.c
+++ b/src/tests/evas/evas_test_image.c
@@ -1029,6 +1029,94 @@ EFL_START_TEST(evas_object_image_jp2k_loader_data)
 EFL_END_TEST
 #endif
 
+EFL_START_TEST(evas_object_image_9patch)
+{
+   Evas *e = _setup_evas();
+   Evas *sub_e;
+   Ecore_Evas *ee, *sub_ee;
+   Evas_Object *obj, *cmp, *ref;
+   Eina_Strbuf *str;
+
+   const char *files[] = {
+     "9patch_test.9.png"
+   };
+   unsigned int i;
+
+   ee = ecore_evas_ecore_evas_get(e);
+
+   cmp = ecore_evas_object_image_new(ee);
+   evas_object_image_filled_set(cmp, EINA_TRUE);
+   evas_object_image_size_set(cmp, 1024, 1024);
+   evas_object_resize(cmp, 1024, 1024);
+   evas_object_show(cmp);
+
+   sub_ee = ecore_evas_object_ecore_evas_get(cmp);
+   sub_e = ecore_evas_object_evas_get(cmp);
+
+   ecore_evas_alpha_set(sub_ee, EINA_TRUE);
+
+   obj = evas_object_rectangle_add(sub_e);
+   evas_object_color_set(obj, 0, 0, 0, 0);
+   evas_object_move(obj, 0, 0);
+   evas_object_resize(obj, 1024, 1024);
+   evas_object_show(obj);
+
+   obj = evas_object_image_filled_add(sub_e);
+   evas_object_image_alpha_set(obj, 1);
+   evas_object_move(obj, 0, 0);
+   evas_object_resize(obj, 1024, 1024);
+   ecore_evas_resize(sub_ee, 1024, 1024);
+   evas_object_show(obj);
+
+   Evas_Object *rect = evas_object_rectangle_add(sub_e);
+   evas_object_color_set(rect, 128, 0, 0, 128);
+   evas_object_show(rect);
+
+   ref = evas_object_image_add(e);
+   str = eina_strbuf_new();
+
+   for (i = 0; i < sizeof (files) / sizeof (files[0]); i++)
+     {
+        Eina_Rect content;
+        int r_w, r_h;
+        const uint32_t *d, *r_d;
+
+        eina_strbuf_append_printf(str, "%s/%s", TESTS_IMG_DIR, files[i]);
+        evas_object_image_file_set(obj, eina_strbuf_string_get(str), NULL);
+        ck_assert_int_eq(evas_object_image_load_error_get(obj), 
EVAS_LOAD_ERROR_NONE);
+        content = efl_gfx_image_content_region_get(obj);
+
+        evas_object_move(rect, content.x, content.y);
+        evas_object_resize(rect, content.w, content.h);
+
+        eina_strbuf_reset(str);
+
+        ecore_evas_manual_render(ee);
+
+        d = evas_object_image_data_get(cmp, EINA_FALSE);
+
+        eina_strbuf_append_printf(str, "%s/%s.png", TESTS_IMG_DIR, files[i]);
+        evas_object_image_file_set(ref, eina_strbuf_string_get(str), NULL);
+        ck_assert_int_eq(evas_object_image_load_error_get(ref), 
EVAS_LOAD_ERROR_NONE);
+        evas_object_image_size_get(ref, &r_w, &r_h);
+        r_d = evas_object_image_data_get(ref, EINA_FALSE);
+
+        eina_strbuf_reset(str);
+
+        fail_if(r_w != 1024 || r_h != 1024);
+        for (int i = 0; i < r_w * r_h; i++)
+          fail_if(((d[i] - r_d[i]) & 0xF8F8F8F8) != 0);
+     }
+
+   evas_object_del(obj);
+   evas_object_del(ref);
+
+   eina_strbuf_free(str);
+
+   evas_free(e);
+}
+EFL_END_TEST
+
 void evas_test_image_object(TCase *tc)
 {
    tcase_add_test(tc, evas_object_image_api);
@@ -1054,6 +1142,7 @@ void evas_test_image_object(TCase *tc)
 #endif
    tcase_add_test(tc, evas_object_image_partially_load_orientation);
    tcase_add_test(tc, evas_object_image_cached_data_comparision);
+   tcase_add_test(tc, evas_object_image_9patch);
 }
 
 
diff --git a/src/tests/evas/evas_tests_helpers.h 
b/src/tests/evas/evas_tests_helpers.h
index af970b1a11..b3a3063790 100644
--- a/src/tests/evas/evas_tests_helpers.h
+++ b/src/tests/evas/evas_tests_helpers.h
@@ -21,19 +21,10 @@ while (0)
 static Evas *
 _setup_evas()
 {
-   Evas *evas;
-   Evas_Engine_Info *einfo;
+   Ecore_Evas *ee;
 
-   evas = evas_new();
-
-   evas_output_method_set(evas, evas_render_method_lookup("buffer"));
-   einfo = evas_engine_info_get(evas);
-   evas_engine_info_set(evas, einfo);
-
-   evas_output_size_set(evas, 500, 500);
-   evas_output_viewport_set(evas, 0, 0, 500, 500);
-
-   return evas;
+   ee = ecore_evas_buffer_new(500, 500);
+   return ecore_evas_get(ee);
 }
 
 #endif
diff --git a/src/tests/evas/images/9patch_test.9.png 
b/src/tests/evas/images/9patch_test.9.png
new file mode 100644
index 0000000000..7e579d2498
Binary files /dev/null and b/src/tests/evas/images/9patch_test.9.png differ
diff --git a/src/tests/evas/images/9patch_test.9.png.png 
b/src/tests/evas/images/9patch_test.9.png.png
new file mode 100644
index 0000000000..e1d0549634
Binary files /dev/null and b/src/tests/evas/images/9patch_test.9.png.png differ

-- 


Reply via email to