If a RenderTask's exclusive actor is destoryed, then ensure the RenderTaskList of...
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-RenderTaskList.cpp
1 /*
2  * Copyright (c) 2019 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include <iostream>
19
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
23
24 using namespace Dali;
25
26 void utc_dali_render_task_list_startup(void)
27 {
28   test_return_value = TET_UNDEF;
29 }
30
31 void utc_dali_render_task_list_cleanup(void)
32 {
33   test_return_value = TET_PASS;
34 }
35
36 int UtcDaliRenderTaskListDefaultConstructor(void)
37 {
38   TestApplication application;
39
40   tet_infoline("Testing RenderTaskList::RenderTaskList()");
41
42   RenderTaskList taskList;
43
44   DALI_TEST_CHECK( ! taskList );
45   END_TEST;
46 }
47
48 int UtcDaliRenderTaskListCopyConstructor(void)
49 {
50   TestApplication application;
51
52   tet_infoline("Testing RenderTaskList::RenderTaskList(const RenderTaskList& handle)");
53
54   RenderTaskList taskList1;
55
56   RenderTaskList taskList2( taskList1 );
57
58   DALI_TEST_CHECK( ! taskList2 );
59   END_TEST;
60 }
61
62 int UtcDaliRenderTaskListAssignment(void)
63 {
64   TestApplication application;
65
66   tet_infoline("Testing RenderTaskList::RenderTaskList(const RenderTaskList& handle)");
67
68   RenderTaskList taskList1;
69
70   RenderTaskList taskList2;
71
72   taskList1 = taskList2;
73
74   DALI_TEST_CHECK( ! taskList1 );
75   END_TEST;
76 }
77
78
79 int UtcDaliRenderTaskListDownCast(void)
80 {
81   TestApplication application;
82
83   tet_infoline("Testing RenderTaskList::DownCast()");
84
85   BaseHandle base = Stage::GetCurrent().GetRenderTaskList();
86
87   RenderTaskList taskList = RenderTaskList::DownCast( base );
88
89   DALI_TEST_CHECK( taskList );
90
91   // Try calling a method
92   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
93   END_TEST;
94 }
95
96 int UtcDaliRenderTaskListCreateTask(void)
97 {
98   TestApplication application;
99
100   tet_infoline("Testing RenderTaskList::CreateTask()");
101
102   RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
103   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
104
105   taskList.CreateTask();
106   DALI_TEST_CHECK( 2u == taskList.GetTaskCount() );
107   END_TEST;
108 }
109
110 int UtcDaliRenderTaskListRemoveTask(void)
111 {
112   TestApplication application;
113
114   tet_infoline("Testing RenderTaskList::RemoveTask()");
115
116   RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
117   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
118
119   RenderTask newTask = taskList.CreateTask();
120   DALI_TEST_CHECK( 2u == taskList.GetTaskCount() );
121
122   taskList.RemoveTask( newTask );
123   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
124   END_TEST;
125 }
126
127 int UtcDaliRenderTaskListRemoveTaskWithExclusiveActor(void)
128 {
129   TestApplication application;
130
131   tet_infoline("Testing RenderTaskList::RemoveTask() which has an exclusive actor set");
132
133   RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
134   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
135
136   RenderTask newTask = taskList.CreateTask();
137   DALI_TEST_CHECK( 2u == taskList.GetTaskCount() );
138
139   auto actor = CreateRenderableActor();
140   newTask.SetSourceActor( actor );
141   newTask.SetExclusive( true );
142   DALI_TEST_EQUALS( actor, newTask.GetSourceActor(), TEST_LOCATION );
143   DALI_TEST_EQUALS( true, newTask.IsExclusive(), TEST_LOCATION );
144   taskList.RemoveTask( newTask );
145
146   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
147   END_TEST;
148 }
149
150 int UtcDaliRenderTaskListGetTaskCount(void)
151 {
152   TestApplication application;
153
154   tet_infoline("Testing RenderTaskList::GetTaskCount()");
155
156   RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
157   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
158
159   taskList.RemoveTask( taskList.GetTask(0u) );
160   DALI_TEST_CHECK( 0u == taskList.GetTaskCount() );
161   END_TEST;
162 }
163
164 int UtcDaliRenderTaskListGetTask(void)
165 {
166   TestApplication application;
167
168   tet_infoline("Testing RenderTaskList::GetTask()");
169
170   RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
171   RenderTask defaultTask = taskList.GetTask( 0u );
172   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
173   DALI_TEST_CHECK( defaultTask );
174   DALI_TEST_CHECK( defaultTask == taskList.GetTask( 0u ) );
175
176   RenderTask newTask = taskList.CreateTask();
177   DALI_TEST_CHECK( 2u == taskList.GetTaskCount() );
178
179   RenderTask temp = taskList.GetTask( 0u );
180   RenderTask temp2 = taskList.GetTask( 1u );
181
182   DALI_TEST_CHECK( newTask );
183   DALI_TEST_CHECK( defaultTask != newTask );
184   DALI_TEST_CHECK( taskList.GetTask( 0u ) == defaultTask );
185   DALI_TEST_CHECK( taskList.GetTask( 1u ) == newTask );
186   DALI_TEST_CHECK( taskList.GetTask( 1u ) != defaultTask );
187
188   taskList.RemoveTask( taskList.GetTask(0u) );
189   DALI_TEST_CHECK( 1u == taskList.GetTaskCount() );
190   DALI_TEST_CHECK( taskList.GetTask( 0u ) != defaultTask  );
191   DALI_TEST_CHECK( taskList.GetTask( 0u ) == newTask );
192   END_TEST;
193 }