--- /dev/null
+#include "e_test_event.h"
+#include "e_test_base.h"
+
+class etTestBackgroundState : public ::etTCBase
+{
+ public:
+ etTestBackgroundState() { };
+ ~etTestBackgroundState() { };
+
+ protected:
+ etWin *tw = NULL;
+ std::string testCaseName;
+ std::string testName;
+
+ void initTC(Eina_Bool partial);
+};
+
+void
+etTestBackgroundState::initTC(Eina_Bool partial)
+{
+ const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
+
+ tw = initNormalWin("Test Window", partial);
+ ASSERT_TRUE(tw != NULL) << "failed to initiation window";
+
+ etRunner::get().setWinBgState(tw, EINA_TRUE);
+
+ testCaseName = test_info->test_case_name();
+ testName = test_info->name();
+}
+
+TEST_F(etTestBackgroundState, win_show)
+{
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+}
+
+TEST_F(etTestBackgroundState, win_lower)
+{
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+ etWin *tw_temp = NULL;
+
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ // Lower tw
+ etRunner::get().setWinLower(tw);
+ ASSERT_EVENT(tw, E_TC_EVENT_TYPE_STACK_LOWER);
+
+ list = etRunner::get().getWinInfoList();
+ ASSERT_TRUE(list != NULL);
+
+ // traverse stack to top from bottom
+ EINA_LIST_CAST_REVERSE_FOREACH(list, l, tw_temp, etWin*)
+ {
+ if (tw_temp->layer < 200) continue;
+
+ if (pass_count == 0)
+ {
+ ASSERT_EQ(tw_temp->native_win, tw->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(1, pass_count);
+}
+
+TEST_F(etTestBackgroundState, win_lower2)
+{
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+ etWin *tw2 = NULL;
+ etWin *tw_temp = NULL;
+
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ tw2 = initNormalWin("Test Window2", EINA_FALSE);
+ ASSERT_TRUE(tw2 != NULL) << "failed to initiation window";
+
+ ASSERT_TRUE(showTCWin(tw2)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw2);
+
+ // Lower tw
+ etRunner::get().setWinLower(tw2);
+ ASSERT_EVENT(tw2, E_TC_EVENT_TYPE_STACK_LOWER);
+
+ list = etRunner::get().getWinInfoList();
+ ASSERT_TRUE(list != NULL);
+
+ // traverse stack from top to bottom
+ EINA_LIST_CAST_FOREACH(list, l, tw_temp, etWin*)
+ {
+ if (tw_temp->layer > 200) continue;
+
+ if (pass_count == 0)
+ {
+ ASSERT_EQ(tw_temp->native_win, tw->native_win);
+ pass_count++;
+ }
+ break;
+ }
+ ASSERT_EQ(1, pass_count);
+
+ // traverse stack from bottom to top
+ EINA_LIST_CAST_REVERSE_FOREACH(list, l, tw_temp, etWin*)
+ {
+ if (tw_temp->layer < 200) continue;
+
+ if (pass_count == 1)
+ {
+ ASSERT_EQ(tw_temp->native_win, tw2->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(2, pass_count);
+}
+
+TEST_F(etTestBackgroundState, win_iconify)
+{
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ etRunner::get().setWinIconic(tw, EINA_TRUE);
+ ASSERT_IF_VIS_ON(tw);
+}
+
+TEST_F(etTestBackgroundState, win_uniconify)
+{
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ etRunner::get().setWinIconic(tw, EINA_FALSE);
+ ASSERT_IF_VIS_ON(tw);
+}
+
+TEST_F(etTestBackgroundState, unset_bg_state)
+{
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ etRunner::get().setWinBgState(tw, EINA_FALSE);
+ ASSERT_VIS_ON(tw);
+}
+
+TEST_F(etTestBackgroundState, unset_bg_state_after_lower)
+{
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ etRunner::get().setWinLower(tw);
+ ASSERT_EVENT(tw, E_TC_EVENT_TYPE_STACK_LOWER);
+
+ etRunner::get().setWinBgState(tw, EINA_FALSE);
+ ASSERT_VIS_OFF(tw);
+}
+
+TEST_F(etTestBackgroundState, unset_bg_state_after_iconify)
+{
+ initTC(EINA_FALSE);
+
+ ASSERT_TRUE(showTCWin(tw)) << "failed to show window";
+ ASSERT_IF_VIS_ON(tw);
+
+ etRunner::get().setWinIconic(tw, EINA_TRUE);
+ ASSERT_IF_VIS_ON(tw);
+
+ etRunner::get().setWinBgState(tw, EINA_FALSE);
+ ASSERT_VIS_OFF(tw);
+}
+