Add testcase of e_view_layout 06/320006/1
authorjinbong.lee <jinbong.lee@samsung.com>
Wed, 25 Sep 2024 09:19:08 +0000 (18:19 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 6 Nov 2024 10:41:56 +0000 (19:41 +0900)
Change-Id: I9e0499e5a4c59d17e78bfa18b1ced3438a272f38

src/include/e_view_layout.h
tests/Makefile.am
tests/evas_wrapper.cpp
tests/tc-e_view_layout.cpp [new file with mode: 0644]

index c29ab7626190ec453e3348e6298c95067fc23a6f..e2330649dbabc8a724e37d25e98884fc07138352 100644 (file)
@@ -27,4 +27,4 @@ E_API void           e_view_layout_child_raise (E_View *child);
 }
 #endif
 
-#endif
\ No newline at end of file
+#endif
index 461bd23bf1c82a8f448498042aef6ac18117c83f..ad54e1c07e91bc3923a84d48a60ff63d7622e5c9 100644 (file)
@@ -7,7 +7,9 @@ enlightenment_source = \
        $(top_builddir)/src/bin/core/e_view_image.c \
        $(top_builddir)/src/bin/core/e_canvas.c \
        $(top_builddir)/src/bin/utils/e_map.c \
-       $(top_builddir)/src/bin/core/e_view_event.c
+       $(top_builddir)/src/bin/core/e_view_event.c \
+       $(top_builddir)/src/bin/windowmgr/e_layout.c \
+       $(top_builddir)/src/bin/core/e_view_layout.c
 
 enlightenment_tests_SOURCES = \
        ${enlightenment_source} \
@@ -17,7 +19,8 @@ enlightenment_tests_SOURCES = \
        tc-e_canvas.cpp \
        tc-e_view_rect.cpp \
        tc-e_view_image.cpp \
-       tc-e_view_event.cpp
+       tc-e_view_event.cpp \
+       tc-e_view_layout.cpp
 
 enlightenment_tests_CFLAGS = \
        @E_CFLAGS@ \
@@ -32,6 +35,7 @@ enlightenment_tests_CFLAGS = \
        -I$(top_builddir)/src/bin/core \
        -I$(top_builddir)/src/bin/utils \
        -I$(top_builddir)/src/bin/log \
+       -I$(top_builddir)/src/bin/windowmgr \
        -I$(top_builddir)/src/bin/debug
 
 enlightenment_tests_CXXFLAGS = \
index 6c65ce939198531544b98e510a92c616fbfed7ef..f17f12448e0fedbeefaed2760875a1880b70361c 100644 (file)
@@ -523,4 +523,4 @@ void  evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj)
 void  evas_object_smart_member_del(Evas_Object *obj)
 {
    evasMock->evas_object_smart_member_del(obj);
-}
\ No newline at end of file
+}
diff --git a/tests/tc-e_view_layout.cpp b/tests/tc-e_view_layout.cpp
new file mode 100644 (file)
index 0000000..2ee125d
--- /dev/null
@@ -0,0 +1,313 @@
+#include "tc-main.h"
+#include "evas_wrapper.h"
+
+#include "src/bin/core/e_view_intern.h"
+#include "e_view_layout.h"
+#include "e_view_rect.h"
+#include "e_canvas.h"
+
+using ::testing::Return;
+using ::testing::_;
+using ::testing::SetArgPointee;
+using ::testing::DoAll;
+using ::testing::AnyNumber;
+
+
+class EViewLayoutTest : public ::testing::Test
+{
+public:
+   Evas *evas;
+   E_Canvas *canvas;
+   E_View_Tree *tree;
+
+   void SetUp(void) override {
+      evasMock = new EvasMock();
+      this->evas = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+      this->canvas = e_canvas_create(this->evas);
+      this->tree = e_canvas_layer_view_tree_get(this->canvas, E_CANVAS_LAYER_BOTTOM);
+   }
+
+   void TearDown(void) override {
+      e_canvas_destroy(this->canvas);
+      free(this->evas);
+      delete evasMock;
+   }
+};
+
+TEST_F(EViewLayoutTest, Test_E_View_Layout_Create)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_smart_class_new(_));
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_add(_, _))
+      .Times(1)
+      .WillOnce(Return(obj));
+   E_View_Layout *layout = e_view_layout_create(this->tree);
+   EXPECT_NE(layout, nullptr);
+   E_View *view = e_view_layout_view_get(layout);
+   EXPECT_NE(view, nullptr);
+
+   EXPECT_CALL(*evasMock, evas_object_smart_data_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+}
+
+TEST_F(EViewLayoutTest, Test_E_View_Layout_Pack_UnPack)
+{
+   const int color[4] = {0, 0, 0, 0};
+
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+   Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_smart_class_new(_));
+   EXPECT_CALL(*evasMock, evas_object_smart_add(_, _))
+      .Times(1)
+      .WillOnce(Return(obj));
+   E_View_Layout *layout = e_view_layout_create(this->tree);
+   E_View *view = e_view_layout_view_get(layout);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_stack_above(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _));
+   EXPECT_CALL(*evasMock, evas_object_resize(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_rectangle_add(_))
+      .Times(1)
+      .WillOnce(Return(obj2));
+   E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color);
+   E_View *childView = e_view_rect_view_get(view_rect);
+
+   EXPECT_CALL(*evasMock, evas_object_smart_data_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_visible_get(_))
+      .Times(AnyNumber());
+   e_view_layout_pack(layout, childView);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_layout_unpack(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   e_view_destroy(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+   free(obj2);
+}
+
+TEST_F(EViewLayoutTest, Test_E_View_Layout_Virtual_Size_Set)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_smart_class_new(_));
+   EXPECT_CALL(*evasMock, evas_object_smart_add(_, _))
+      .Times(1)
+      .WillOnce(Return(obj));
+   E_View_Layout *layout = e_view_layout_create(this->tree);
+   E_View *view = e_view_layout_view_get(layout);
+
+   EXPECT_CALL(*evasMock, evas_object_smart_data_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   e_view_layout_virtual_size_set(layout, 100, 200);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+}
+
+TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Move)
+{
+   const int color[4] = {0, 0, 0, 0};
+
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+   Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_smart_class_new(_));
+   EXPECT_CALL(*evasMock, evas_object_smart_add(_, _))
+      .Times(1)
+      .WillOnce(Return(obj));
+   E_View_Layout *layout = e_view_layout_create(this->tree);
+   E_View *view = e_view_layout_view_get(layout);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_stack_above(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _));
+   EXPECT_CALL(*evasMock, evas_object_resize(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_rectangle_add(_))
+      .Times(1)
+      .WillOnce(Return(obj2));
+   E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color);
+   E_View *childView = e_view_rect_view_get(view_rect);
+
+   EXPECT_CALL(*evasMock, evas_object_smart_data_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_visible_get(_))
+      .Times(AnyNumber());
+   e_view_layout_pack(layout, childView);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   e_view_layout_child_move(childView, 10, 20);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_layout_unpack(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   e_view_destroy(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+   free(obj2);
+}
+
+TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Resize)
+{
+   const int color[4] = {0, 0, 0, 0};
+
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+   Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_smart_class_new(_));
+   EXPECT_CALL(*evasMock, evas_object_smart_add(_, _))
+      .Times(1)
+      .WillOnce(Return(obj));
+   E_View_Layout *layout = e_view_layout_create(this->tree);
+   E_View *view = e_view_layout_view_get(layout);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_stack_above(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _));
+   EXPECT_CALL(*evasMock, evas_object_resize(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_rectangle_add(_))
+      .Times(1)
+      .WillOnce(Return(obj2));
+   E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color);
+   E_View *childView = e_view_rect_view_get(view_rect);
+
+   EXPECT_CALL(*evasMock, evas_object_smart_data_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_visible_get(_))
+      .Times(AnyNumber());
+   e_view_layout_pack(layout, childView);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   e_view_layout_child_resize(childView, 100, 200);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_layout_unpack(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   e_view_destroy(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+   free(obj2);
+}
+
+TEST_F(EViewLayoutTest, Test_E_View_Layout_Children_Raise)
+{
+   const int color[4] = {0, 0, 0, 0};
+
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+   Evas_Object *obj2 = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_smart_class_new(_));
+   EXPECT_CALL(*evasMock, evas_object_smart_add(_, _))
+      .Times(1)
+      .WillOnce(Return(obj));
+   E_View_Layout *layout = e_view_layout_create(this->tree);
+   E_View *view = e_view_layout_view_get(layout);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_stack_above(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_color_set(_, _, _, _, _));
+   EXPECT_CALL(*evasMock, evas_object_resize(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_rectangle_add(_))
+      .Times(1)
+      .WillOnce(Return(obj2));
+   E_View_Rect* view_rect = e_view_rect_create(this->tree, 1, 1, color);
+   E_View *childView = e_view_rect_view_get(view_rect);
+
+   EXPECT_CALL(*evasMock, evas_object_smart_data_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_smart_smart_get(_))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_visible_get(_))
+      .Times(AnyNumber());
+   e_view_layout_pack(layout, childView);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   e_view_layout_child_raise(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_data_get(_, _))
+      .Times(AnyNumber());
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_layout_unpack(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   e_view_destroy(childView);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+   free(obj2);
+}