Apply e_view_text 43/323143/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 22 Apr 2025 11:42:10 +0000 (20:42 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 23 Apr 2025 09:20:32 +0000 (18:20 +0900)
e_view_text wrap evas_object_text.

Change-Id: I8c5b7bba0b10a2f34145a919fe5c1b71d11b54e9

src/bin/Makefile.mk
src/bin/core/e_view_intern.h
src/bin/core/e_view_text.c [new file with mode: 0644]
src/include/e_view_text.h [new file with mode: 0644]
tests/Makefile.am
tests/evas_wrapper.cpp
tests/evas_wrapper.h
tests/evas_wrapper_intern.h
tests/tc-e_view_text.cpp [new file with mode: 0644]

index 224e6a7e358696ce3a185e314e06c2289bf77e43..69f1eddc4f3732fb73b84ff0b3d745136cf15d9f 100644 (file)
@@ -129,7 +129,8 @@ src/include/e_view_image.h \
 src/include/e_view_client.h \
 src/include/e_view_edje.h \
 src/include/e_view_layout.h \
-src/include/e_blur_video_capture.h
+src/include/e_blur_video_capture.h \
+src/include/e_view_text.h
 
 enlightenment_src = \
 src/bin/e_comp_screen.c \
@@ -155,6 +156,7 @@ src/bin/core/e_view_edje.c \
 src/bin/core/e_view_event.c \
 src/bin/core/e_view_layout.c \
 src/bin/core/e_device.c \
+src/bin/core/e_view_text.c \
 src/bin/server/e_compositor.c \
 src/bin/server/e_comp_wl.c \
 src/bin/server/e_comp_wl_data.c \
index 80f331cb9fdca8e941afd9a0713b7d61b5339104..430db3d9b9a511815d377b8ecbe432912dcd10a7 100644 (file)
@@ -22,6 +22,7 @@ typedef enum {
      E_VIEW_TYPE_IMAGE,
      E_VIEW_TYPE_CLIENT,
      E_VIEW_TYPE_EDJE,
+     E_VIEW_TYPE_TEXT,
 } E_View_Type;
 
 struct _E_View_Impl
diff --git a/src/bin/core/e_view_text.c b/src/bin/core/e_view_text.c
new file mode 100644 (file)
index 0000000..c230ca3
--- /dev/null
@@ -0,0 +1,204 @@
+#include "e_intern.h"
+#include "e_view_intern.h"
+#include "e_view_text.h"
+#include "e_canvas_intern.h"
+
+struct _E_View_Text
+{
+   E_View view;
+
+   struct
+     {
+        struct wl_signal resize;
+     } events;
+
+   int width;
+   int height;
+};
+
+static E_View_Text *_view_text_from_view(E_View *view);
+static void _view_text_handle_destroy(E_View *view);
+static void _view_text_evas_object_cb_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+const static E_View_Impl view_text_impl = {
+     .destroy = _view_text_handle_destroy,
+};
+
+static E_View_Text *
+_view_text_from_view(E_View *view)
+{
+   E_View_Text *text;
+   assert(view->impl == &view_text_impl);
+   return wl_container_of(view, text, view);
+}
+
+static void
+_view_text_handle_destroy(E_View *view)
+{
+   E_View_Text *text = _view_text_from_view(view);
+
+   evas_object_event_callback_del(text->view.eo, EVAS_CALLBACK_RESIZE, _view_text_evas_object_cb_resize);
+
+   evas_object_del(view->eo);
+   free(text);
+}
+
+static void
+_view_text_evas_object_cb_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   E_View_Text *text = (E_View_Text *)data;
+   int width, height;
+
+   // for debugging
+   evas_object_geometry_get(text->view.eo,
+         &width, &height, NULL, NULL);
+   if (width != text->width || height!= text->height)
+     {
+        ERR("e_view_text(%p) size mismatched: %dx%d != %dx%d", text,
+            text->width, text->height, width, height);
+
+        // FIXME: set the size of evas_obejct to the size of text
+        //       for avoiding regression.
+        text->width = width;
+        text->height = height;
+     }
+
+   wl_signal_emit_mutable(&text->events.resize, text);
+}
+
+static void
+_view_text_size_set(E_View_Text *text, int width, int height)
+{
+   text->width = width;
+   text->height = height;
+
+   evas_object_resize(text->view.eo, width, height);
+}
+
+E_API E_View_Text *
+e_view_text_create(E_View_Tree *parent, int width, int height, const int color[4])
+{
+   E_Canvas *canvas;
+   E_View_Text *text;
+   Evas_Object *eo;
+
+   assert(parent != NULL);
+
+   text = malloc(sizeof(*text));
+   if (!text)
+     return NULL;
+
+   canvas = e_canvas_get(&parent->view);
+   eo = evas_object_text_add(canvas->evas);
+   if (!eo)
+     {
+        free(text);
+        return NULL;
+     }
+
+   e_view_init(&text->view, E_VIEW_TYPE_TEXT, (E_View_Impl*)&view_text_impl, eo, parent);
+   e_view_color_set(&text->view, color[0], color[1], color[2], color[3]);
+   _view_text_size_set(text, width, height);
+
+   wl_signal_init(&text->events.resize);
+
+   evas_object_event_callback_add(text->view.eo, EVAS_CALLBACK_RESIZE, _view_text_evas_object_cb_resize, text);
+
+   return text;
+}
+
+E_API E_View *
+e_view_text_view_get(E_View_Text *text)
+{
+   if (text == NULL) return NULL;
+
+   return &text->view;
+}
+
+E_API E_View_Text *
+e_view_text_try_from_view(E_View *view)
+{
+   if (view == NULL) return NULL;
+
+   if (view->impl != &view_text_impl)
+     return NULL;
+
+   return _view_text_from_view(view);
+}
+
+E_API void
+e_view_text_color_set(E_View_Text *text, int r, int g, int b, int a)
+{
+   if (text == NULL) return;
+
+       e_view_color_set(&text->view, r, g, b, a);
+}
+
+E_API void
+e_view_text_color_get(E_View_Text *text, int *r, int *g, int *b, int *a)
+{
+   if (text == NULL) return;
+
+   e_view_color_get(&text->view, r, g, b, a);
+}
+
+E_API void
+e_view_text_size_set(E_View_Text *text, int width, int height)
+{
+   if (text == NULL) return;
+
+   if (text->width == width && text->height == height)
+     return;
+
+   _view_text_size_set(text, width, height);
+}
+
+E_API void
+e_view_text_size_get(E_View_Text *text, int *width, int *height)
+{
+   if (text == NULL) return;
+
+   if (width)
+     *width = text->width;
+
+   if (height)
+     *height = text->height;
+}
+
+E_API void
+e_view_text_resize_listener_add(E_View_Text *text, struct wl_listener *listener)
+{
+   wl_signal_add(&text->events.resize, listener);
+}
+
+E_API void
+e_view_text_font_set(E_View_Text *text, const char *font, int size)
+{
+   if (text == NULL) return;
+
+   evas_object_text_font_set(text->view.eo, font, size);
+}
+
+E_API void
+e_view_text_font_get(E_View_Text *text, const char **font, int *size)
+{
+   if (text == NULL) return;
+
+   evas_object_text_font_get(text->view.eo, font, size);
+}
+
+E_API void
+e_view_text_text_set(E_View_Text *text, const char *sentence)
+{
+   if (text == NULL) return;
+
+   evas_object_text_text_set(text->view.eo, sentence);
+}
+
+E_API const char *
+e_view_text_text_get(E_View_Text *text)
+{
+   if (text == NULL) return NULL;
+
+   return evas_object_text_text_get(text->view.eo);
+}
diff --git a/src/include/e_view_text.h b/src/include/e_view_text.h
new file mode 100644 (file)
index 0000000..d8c3d6f
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef E_VIEW_TEXT_H
+#define E_VIEW_TEXT_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#include <e_view.h>
+
+typedef struct _E_View_Text E_View_Text;
+
+/**
+ * TODO
+ */
+E_View_Text *e_view_text_create(E_View_Tree *parent, int width, int height, const int color[4]);
+
+/**
+ * TODO
+ */
+E_View_Text *e_view_text_try_from_view(E_View *view);
+
+/**
+ * TODO
+ */
+E_View *e_view_text_view_get(E_View_Text *text);
+
+/**
+ * TODO
+ */
+void e_view_text_color_set(E_View_Text *text, int r, int g, int b, int a);
+
+/**
+ * TODO
+ */
+void e_view_text_color_get(E_View_Text *text, int *r, int *g, int *b, int *a);
+
+void e_view_text_size_set(E_View_Text *text, int width, int height);
+
+/**
+ * TODO
+ */
+void e_view_text_size_get(E_View_Text *text, int *width, int *height);
+
+/**
+ * TODO
+ */
+void e_view_text_resize_listener_add(E_View_Text *text, struct wl_listener *listener);
+
+/**
+ * TODO
+ */
+void e_view_text_font_set(E_View_Text *text, const char *font, int size);
+
+/**
+ * TODO
+ */
+void e_view_text_font_get(E_View_Text *text, const char **font, int *size);
+
+/**
+ * TODO
+ */
+void e_view_text_text_set(E_View_Text *text, const char *sentence);
+
+/**
+ * TODO
+ */
+const char *e_view_text_text_get(E_View_Text *text);
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
index 7d99d7ca5510fc129ccb2df49bf8190935bc4a1d..49a17cc1345da894b47f27a962adaa068d01ef4e 100644 (file)
@@ -8,7 +8,8 @@ enlightenment_source = \
        $(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_layout.c
+       $(top_builddir)/src/bin/core/e_view_layout.c \
+       $(top_builddir)/src/bin/core/e_view_text.c
 
 enlightenment_tests_SOURCES = \
        ${enlightenment_source} \
@@ -20,7 +21,8 @@ enlightenment_tests_SOURCES = \
        tc-e_view_image.cpp \
        tc-e_view_event.cpp \
        tc-e_view_layout.cpp \
-       tc-e_view_tree.cpp
+       tc-e_view_tree.cpp \
+       tc-e_view_text.cpp
 
 enlightenment_tests_CFLAGS = \
        @E_CFLAGS@ \
index 6a254c69601c100e579bd3492aac23101b629df3..7ce0ef587d001a1204a6882f46ae5b713f81e218 100644 (file)
@@ -520,12 +520,37 @@ void *evas_object_smart_data_get(const Evas_Object *obj)
    return evasMock->evas_object_smart_data_get(obj);
 }
 
-void  evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj)
+void evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj)
 {
    evasMock->evas_object_smart_member_add(obj, smart_obj);
 }
 
-void  evas_object_smart_member_del(Evas_Object *obj)
+void evas_object_smart_member_del(Evas_Object *obj)
 {
    evasMock->evas_object_smart_member_del(obj);
 }
+
+Evas_Object *evas_object_text_add(Evas *e)
+{
+   return evasMock->evas_object_text_add(e);
+}
+
+void evas_object_text_font_set(Evas_Object *obj, const char *font, int size)
+{
+   evasMock->evas_object_text_font_set(obj, font, size);
+}
+
+void evas_object_text_font_get(const Evas_Object *obj, const char **font, int *size)
+{
+   evasMock->evas_object_text_font_get(obj, font, size);
+}
+
+void evas_object_text_text_set(Evas_Object *obj, const char *text)
+{
+   evasMock->evas_object_text_text_set(obj, text);
+}
+
+const char *evas_object_text_text_get(const Evas_Object *obj)
+{
+   return evasMock->evas_object_text_text_get(obj);
+}
index 37c9f49d48c6e4875367697ac0802bc16e1eab4e..8ec95575d4efdcf9971418c8e5d93fe720c18ca3 100644 (file)
@@ -33,10 +33,8 @@ public:
     virtual void evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled) = 0;
     virtual Eina_Bool evas_object_map_enable_get(const Evas_Object *obj) = 0;
     virtual void evas_object_layer_set(Evas_Object *obj, short layer) = 0;
-
-    virtual Evas_Object* evas_object_rectangle_add(Evas *evas) = 0;
-
-    virtual Evas_Object* evas_object_image_add(Evas *e) = 0;
+    virtual Evas_Object *evas_object_rectangle_add(Evas *e) = 0;
+    virtual Evas_Object *evas_object_image_add(Evas *e) = 0;
     virtual void evas_object_image_alpha_set(Evas_Object* obj, Eina_Bool alpha) = 0;
     virtual Eina_Bool evas_object_image_alpha_get(const Evas_Object* obj) = 0;
     virtual Eina_Bool evas_object_image_animated_get(const Evas_Object *obj) = 0;
@@ -108,13 +106,17 @@ public:
     virtual void evas_object_pass_events_set(Evas_Object *obj, Eina_Bool set) = 0;
     virtual Eina_Bool evas_object_pass_events_get(Evas_Object *obj) = 0;
     virtual char *efl_gfx_filter_program_set(Evas_Object *obj, const char *code, const char *name) = 0;
-
     virtual Evas_Smart *evas_smart_class_new(const Evas_Smart_Class *sc) = 0;
     virtual Evas_Object *evas_object_smart_add(Evas *e, Evas_Smart *s) = 0;
     virtual Evas_Smart *evas_object_smart_smart_get(const Evas_Object *obj) = 0;
     virtual void *evas_object_smart_data_get(const Evas_Object *obj) = 0;
-    virtual void  evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj) = 0;
-    virtual void  evas_object_smart_member_del(Evas_Object *obj) = 0;
+    virtual void evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj) = 0;
+    virtual void evas_object_smart_member_del(Evas_Object *obj) = 0;
+    virtual Evas_Object *evas_object_text_add(Evas *e) = 0;
+    virtual void evas_object_text_font_set(Evas_Object *obj, const char *font, int size) = 0;
+    virtual void evas_object_text_font_get(const Evas_Object *obj, const char **font, int *size) = 0;
+    virtual void evas_object_text_text_set(Evas_Object *obj, const char *text) = 0;
+    virtual const char *evas_object_text_text_get(const Evas_Object *obj) = 0;
 };
 
 class EvasMock : public EvasWrapper {
@@ -147,9 +149,7 @@ public:
     MOCK_METHOD(void, evas_object_map_enable_set, (Evas_Object *obj, Eina_Bool enabled));
     MOCK_METHOD(Eina_Bool, evas_object_map_enable_get, (const Evas_Object *obj));
     MOCK_METHOD(void, evas_object_layer_set, (Evas_Object *obj, short layer));
-
     MOCK_METHOD(Evas_Object *, evas_object_rectangle_add, (Evas *e));
-
     MOCK_METHOD(Evas_Object *, evas_object_image_add, (Evas *e));
     MOCK_METHOD(void, evas_object_image_alpha_set, (Evas_Object* obj, Eina_Bool alpha));
     MOCK_METHOD(Eina_Bool, evas_object_image_alpha_get, (const Evas_Object* obj));
@@ -222,13 +222,17 @@ public:
     MOCK_METHOD(void, evas_object_pass_events_set, (Evas_Object *obj, Eina_Bool set));
     MOCK_METHOD(Eina_Bool, evas_object_pass_events_get, (Evas_Object *obj));
     MOCK_METHOD(char *, efl_gfx_filter_program_set, (Evas_Object *obj, const char *code, const char *name));
-
     MOCK_METHOD(Evas_Smart *, evas_smart_class_new, (const Evas_Smart_Class *sc));
     MOCK_METHOD(Evas_Object *, evas_object_smart_add, (Evas *e, Evas_Smart *s));
     MOCK_METHOD(Evas_Smart *, evas_object_smart_smart_get, (const Evas_Object *obj));
     MOCK_METHOD(void *, evas_object_smart_data_get, (const Evas_Object *obj));
     MOCK_METHOD(void, evas_object_smart_member_add, (Evas_Object *obj, Evas_Object *smart_obj));
     MOCK_METHOD(void, evas_object_smart_member_del, (Evas_Object *obj));
+    MOCK_METHOD(Evas_Object *, evas_object_text_add, (Evas *e));
+    MOCK_METHOD(void, evas_object_text_font_set, (Evas_Object *obj, const char *font, int size));
+    MOCK_METHOD(void, evas_object_text_font_get, (const Evas_Object *obj, const char **font, int *size));
+    MOCK_METHOD(void, evas_object_text_text_set, (Evas_Object *obj, const char *text));
+    MOCK_METHOD(const char *, evas_object_text_text_get, (const Evas_Object *obj));
 };
 
 extern EvasMock* evasMock;
index 3902f76f1acd812db1553b6c5b4e9f9ba74c1421..16d513131375493e06b93cd4ef372382d99add9d 100755 (executable)
@@ -448,6 +448,11 @@ int evas_map_count_get(const Evas_Map *m);
 void evas_map_direct_render_set(Evas_Map *m, Eina_Bool direct_render);
 void evas_object_pass_events_set(Evas_Object *obj, Eina_Bool set);
 Eina_Bool evas_object_pass_events_get(Evas_Object *obj);
+Evas_Object *evas_object_text_add(Evas *e);
+void evas_object_text_font_set(Evas_Object *obj, const char *font, int size);
+void evas_object_text_font_get(const Evas_Object *obj, const char **font, int *size);
+void evas_object_text_text_set(Evas_Object *obj, const char *text);
+const char *evas_object_text_text_get(const Evas_Object *obj);
 
 #ifdef  __cplusplus
 }
diff --git a/tests/tc-e_view_text.cpp b/tests/tc-e_view_text.cpp
new file mode 100644 (file)
index 0000000..1f8fb5b
--- /dev/null
@@ -0,0 +1,280 @@
+#include "tc-main.h"
+#include "evas_wrapper.h"
+
+#include "e_canvas.h"
+#include "src/bin/core/e_view_intern.h"
+#include "src/bin/core/e_canvas_intern.h"
+#include "e_view_text.h"
+
+using ::testing::Return;
+using ::testing::_;
+using ::testing::SetArgPointee;
+using ::testing::DoAll;
+using ::testing::AnyNumber;
+
+class EViewTextTest : public ::testing::Test
+{
+protected:
+   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(EViewTextTest, Test_E_View_Text_Create)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   int width = 123, height = 456;
+   int color[4] = { 10, 20, 30, 40 };
+   EXPECT_CALL(*evasMock, evas_object_text_add(this->evas))
+      .Times(1)
+      .WillOnce(Return(obj));
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, width, height))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3]))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   E_View_Text *text = e_view_text_create(this->tree, width, height, color);
+   EXPECT_NE(text, nullptr);
+   E_View *view = e_view_text_view_get(text);
+   EXPECT_NE(view, nullptr);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); 
+   e_view_destroy(view);
+   free(obj);
+}
+
+TEST_F(EViewTextTest, Test_E_View_Text_Size_Set_Get)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   int color[4] = { 10, 20, 30, 40 };
+   ON_CALL(*evasMock, evas_object_text_add(this->evas)).WillByDefault(Return(obj));
+
+   EXPECT_CALL(*evasMock, evas_object_text_add(this->evas))
+      .Times(1);
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, 123, 456))
+      .Times(1);
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, 10, 20, 30, 40))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   E_View_Text *text = e_view_text_create(this->tree, 123, 456, color);
+   ASSERT_NE(text, nullptr);
+   E_View *view = e_view_text_view_get(text);
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, _, _))
+      .Times(0);
+   e_view_text_size_set(text, 123, 456);
+   int width, height;
+   e_view_text_size_get(text, &width, &height);
+   EXPECT_EQ(width,123);
+   EXPECT_EQ(height,456);
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, 456, 123))
+      .Times(1);
+   e_view_text_size_set(text, 456, 123);
+   e_view_text_size_get(text, &width, &height);
+   EXPECT_EQ(width,456);
+   EXPECT_EQ(height,123);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _)); 
+   e_view_destroy(view);
+   free(obj);
+}
+
+
+TEST_F(EViewTextTest, Test_E_View_Text_Try_From_View)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   int width = 123, height = 456;
+   int color[4] = { 10, 20, 30, 40 };
+   EXPECT_CALL(*evasMock, evas_object_text_add(this->evas))
+      .Times(1)
+      .WillOnce(Return(obj));
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, width, height))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3]))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   E_View_Text *text = e_view_text_create(this->tree, width, height, color);
+   E_View *view = e_view_text_view_get(text);
+
+   E_View_Text *text_from_view = e_view_text_try_from_view(view);
+   EXPECT_EQ(text_from_view, text);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+}
+
+TEST_F(EViewTextTest, Test_E_View_Text_Color_Set_Get)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   int width = 123, height = 456;
+   int color[4] = { 10, 20, 30, 40 };
+   EXPECT_CALL(*evasMock, evas_object_text_add(this->evas))
+      .Times(1)
+      .WillOnce(Return(obj));
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, width, height))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3]))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   E_View_Text *text = e_view_text_create(this->tree, width, height, color);
+   E_View *view = e_view_text_view_get(text);
+
+   int red = 255;
+   int green = 128;
+   int blue = 64;
+   int alpha = 32;
+
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, red, green, blue, alpha))
+      .Times(1);
+
+   e_view_text_color_set(text, red, green, blue, alpha);
+
+   int r, g, b, a;
+   EXPECT_CALL(*evasMock, evas_object_color_get(obj, &r, &g, &b, &a))
+      .Times(1)
+      .WillOnce(DoAll(SetArgPointee<1>(red),
+                      SetArgPointee<2>(green),
+                      SetArgPointee<3>(blue),
+                      SetArgPointee<4>(alpha)));
+
+   e_view_text_color_get(text, &r, &g, &b, &a);
+   EXPECT_EQ(red, r);
+   EXPECT_EQ(green, g);
+   EXPECT_EQ(blue, b);
+   EXPECT_EQ(alpha, a);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+}
+
+TEST_F(EViewTextTest, Test_E_View_Text_Font_Set_Get)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   int width = 123, height = 456;
+   int color[4] = { 10, 20, 30, 40 };
+   EXPECT_CALL(*evasMock, evas_object_text_add(this->evas))
+      .Times(1)
+      .WillOnce(Return(obj));
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, width, height))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3]))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   E_View_Text *text = e_view_text_create(this->tree, width, height, color);
+   E_View *view = e_view_text_view_get(text);
+
+   const char *font = "Sans";
+   int size = 10;
+
+   EXPECT_CALL(*evasMock, evas_object_text_font_set(obj, font, size))
+      .Times(1);
+
+   e_view_text_font_set(text, font, size);
+
+   const char *ret_f;
+   int ret_s;
+   EXPECT_CALL(*evasMock, evas_object_text_font_get(obj, &ret_f, &ret_s))
+      .Times(1)
+      .WillOnce(DoAll(SetArgPointee<1>(font),
+                      SetArgPointee<2>(size)));
+
+   e_view_text_font_get(text, &ret_f, &ret_s);
+   EXPECT_EQ(font, ret_f);
+   EXPECT_EQ(size, ret_s);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+}
+
+TEST_F(EViewTextTest, Test_E_View_Text_Text_Set_Get)
+{
+   Evas_Object *obj = (Evas_Object *)malloc(EVAS_OBJECT_SIZE);
+
+   int width = 123, height = 456;
+   int color[4] = { 10, 20, 30, 40 };
+   EXPECT_CALL(*evasMock, evas_object_text_add(this->evas))
+      .Times(1)
+      .WillOnce(Return(obj));
+
+   EXPECT_CALL(*evasMock, evas_object_resize(obj, width, height))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_color_set(obj, color[0], color[1], color[2], color[3]))
+      .Times(1);
+
+   EXPECT_CALL(*evasMock, evas_object_data_set(_, _, _));
+   EXPECT_CALL(*evasMock, evas_object_layer_set(_, _));
+   EXPECT_CALL(*evasMock, evas_object_move(_, _, _));
+   E_View_Text *text = e_view_text_create(this->tree, width, height, color);
+   E_View *view = e_view_text_view_get(text);
+
+   const char *sentence = "text sample";
+
+   EXPECT_CALL(*evasMock, evas_object_text_text_set(obj, sentence))
+      .Times(1);
+
+   e_view_text_text_set(text, sentence);
+
+   const char *ret_s;
+   EXPECT_CALL(*evasMock, evas_object_text_text_get(obj))
+      .Times(1)
+      .WillOnce(Return(sentence));
+
+   ret_s = e_view_text_text_get(text);
+   EXPECT_EQ(sentence, ret_s);
+
+   EXPECT_CALL(*evasMock, evas_object_del(_));
+   EXPECT_CALL(*evasMock, evas_object_data_del(_, _));
+   e_view_destroy(view);
+   free(obj);
+}