[PATCH v2 wfits] test_dayselector: Add user test

Brian Lovin brian.j.lovin at intel.com
Tue Jun 4 09:57:30 PDT 2013


Signed-off-by: Brian Lovin <brian.j.lovin at intel.com>
---
 src/test/efl/test_dayselector.cpp | 112 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 111 insertions(+), 1 deletion(-)

diff --git a/src/test/efl/test_dayselector.cpp b/src/test/efl/test_dayselector.cpp
index 254991f..172926d 100644
--- a/src/test/efl/test_dayselector.cpp
+++ b/src/test/efl/test_dayselector.cpp
@@ -21,12 +21,14 @@
  */
 
 #include <Elementary.h>
+#include <boost/lexical_cast.hpp>
 #include <boost/bind.hpp>
 
+#include <string>
 #include <vector>
 
-#include "window.h"
 
+#include "window.h"
 #include "elmtestharness.h"
 #include "templates.h"
 
@@ -149,6 +151,113 @@ private:
 	EvasObject	control_;
 };
 
+class DayselectorUserTest : public ElmTestHarness
+{
+public:
+	DayselectorUserTest()
+		: ElmTestHarness::ElmTestHarness()
+		, window_("DayselectorUserTest", "Dayselector User Test", 350, 120)
+		, dayselector_(elm_dayselector_add(window_))
+		, rendered_(false)
+		, changed_(false)
+	{
+		return;
+	}
+
+	void setup()
+	{
+		evas_object_size_hint_weight_set(dayselector_, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+		elm_win_resize_object_add(window_, dayselector_);
+
+		evas_event_callback_add(
+			evas_object_evas_get(window_),
+			EVAS_CALLBACK_RENDER_POST,
+			onPostRender, this
+		);
+
+		evas_object_smart_callback_add(dayselector_, "dayselector,changed", onDayselectorChanged, this);
+
+		window_.show();
+		dayselector_.show();
+
+		queueStep(boost::bind(&DayselectorUserTest::test, boost::ref(*this)));
+	}
+
+	void test(){
+		YIELD_UNTIL(rendered_);
+
+		for(unsigned i(0); i <= 5; ++i) {
+			std::string dayStr("day");
+			dayStr += boost::lexical_cast<std::string>(i);
+
+			changed_ = false;
+			clickDay(dayStr);
+			YIELD_UNTIL(changed_);
+
+			Eina_Bool ret = elm_dayselector_day_selected_get(dayselector_, static_cast<Elm_Dayselector_Day>((i+1)));
+			FAIL_IF(ret == EINA_FALSE);
+		}
+
+		//This is done outside the loop because ELM_DAYSELECTOR_SUN=0
+		changed_ = false;
+		clickDay("day6");
+		YIELD_UNTIL(changed_);
+		Eina_Bool ret = elm_dayselector_day_selected_get(dayselector_, ELM_DAYSELECTOR_SUN);
+		FAIL_IF(ret == EINA_FALSE);
+
+		//Test all are clicked.
+		testAllSelected();
+	}
+
+	void clickDay(const std::string &str)
+	{
+		EvasObject currentDay(elm_layout_content_get(dayselector_, str.c_str()), false);
+		Geometry gc(currentDay.getGeometry());
+		Geometry gw(getSurfaceGeometry(window_.get_wl_surface()));
+		Geometry gf(window_.getFramespaceGeometry());
+		Geometry gb(dayselector_.getGeometry());
+
+		setGlobalPointerPosition(
+			gw.x + gf.x + gc.x + gc.width / 2,
+			gw.y + gf.y + gc.y + gc.height / 2
+		);
+
+		inputKeySend(BTN_LEFT, 1);
+		inputKeySend(BTN_LEFT, 0);
+	}
+
+	void testAllSelected()
+	{
+		for(unsigned i(0); i <= 6; ++i) {
+			Elm_Dayselector_Day day = static_cast<Elm_Dayselector_Day>((i));
+			Eina_Bool ret = elm_dayselector_day_selected_get(dayselector_, day);
+			FAIL_IF(ret == EINA_FALSE);
+		}
+	}
+
+	static void onPostRender(void *data, Evas *e, void *info)
+	{
+		 evas_event_callback_del(e, EVAS_CALLBACK_RENDER_POST, onPostRender);
+
+		 DayselectorUserTest *test = static_cast<DayselectorUserTest*>(data);
+		 test->rendered_ = true;
+		 std::cout << "...received post render event" << std::endl;
+	}
+
+	static void onDayselectorChanged(void *data, Evas *e, void *info)
+	{
+		 DayselectorUserTest *test = static_cast<DayselectorUserTest*>(data);
+		 test->changed_ = true;
+		 std::cout << "...received changed event" << std::endl;
+	}
+
+private:
+	Window		window_;
+	EvasObject	dayselector_;
+	bool		rendered_;
+	bool		changed_;
+};
+
 typedef ResizeObjectTest<Dayselector> DayselectorResizeTest;
 typedef PositionObjectTest<Dayselector> DayselectorPositionTest;
 typedef VisibleObjectTest<Dayselector> DayselectorVisibilityTest;
@@ -159,6 +268,7 @@ WFITS_EFL_HARNESS_TEST_CASE(DayselectorVisibilityTest)
 WFITS_EFL_HARNESS_TEST_CASE(DayselectorDayTest)
 WFITS_EFL_HARNESS_TEST_CASE(DayselectorLocaleTest)
 
+WFITS_EFL_HARNESS_TEST_CASE(DayselectorUserTest)
 } // namespace efl
 } // namespace test
 } // namespace wfits
-- 
1.8.1.2



More information about the wayland-devel mailing list