[dali_2.3.27] Merge branch 'devel/master'
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-TouchEvent.cpp
1 /*
2  * Copyright (c) 2014 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 <dali-test-suite-utils.h>
19 #include <dali/devel-api/events/touch-event-devel.h>
20 #include <dali/integration-api/events/touch-integ.h>
21 #include <dali/public-api/dali-core.h>
22 #include <stdlib.h>
23
24 #include <iostream>
25
26 void utc_dali_touch_event_startup(void)
27 {
28   test_return_value = TET_UNDEF;
29 }
30
31 void utc_dali_touch_event_cleanup(void)
32 {
33   test_return_value = TET_PASS;
34 }
35
36 namespace
37 {
38 TouchPoint GenerateTouchPoint()
39 {
40   return TouchPoint(1, PointState::STARTED, 100.0f, 200.0f);
41 }
42 } // namespace
43
44 int UtcDaliTouchEventConstructorP(void)
45 {
46   TouchEvent touchEvent;
47   DALI_TEST_CHECK(!touchEvent);
48   END_TEST;
49 }
50
51 int UtcDaliTouchEventCopyConstructorP(void)
52 {
53   TouchEvent touchEvent = Integration::NewTouchEvent(123u, GenerateTouchPoint());
54   DALI_TEST_CHECK(touchEvent);
55
56   const auto refCount = touchEvent.GetBaseObject().ReferenceCount();
57
58   TouchEvent touchEvent2(touchEvent);
59   DALI_TEST_CHECK(touchEvent);
60   DALI_TEST_CHECK(touchEvent2);
61   DALI_TEST_EQUALS(touchEvent, touchEvent2, TEST_LOCATION);
62   DALI_TEST_EQUALS(refCount + 1, touchEvent.GetBaseObject().ReferenceCount(), TEST_LOCATION);
63
64   END_TEST;
65 }
66
67 int UtcDaliTouchEventMoveConstructorP(void)
68 {
69   TouchEvent touchEvent = Integration::NewTouchEvent(123u, GenerateTouchPoint());
70   DALI_TEST_CHECK(touchEvent);
71
72   const auto refCount = touchEvent.GetBaseObject().ReferenceCount();
73
74   TouchEvent touchEvent2(std::move(touchEvent));
75   DALI_TEST_CHECK(!touchEvent);
76   DALI_TEST_CHECK(touchEvent2);
77   DALI_TEST_EQUALS(refCount, touchEvent2.GetBaseObject().ReferenceCount(), TEST_LOCATION);
78
79   END_TEST;
80 }
81
82 int UtcDaliTouchEventCopyAssignmentP(void)
83 {
84   TouchEvent touchEvent = Integration::NewTouchEvent(123u, GenerateTouchPoint());
85   DALI_TEST_CHECK(touchEvent);
86
87   const auto refCount = touchEvent.GetBaseObject().ReferenceCount();
88
89   TouchEvent touchEvent2;
90   DALI_TEST_CHECK(!touchEvent2);
91
92   touchEvent2 = touchEvent;
93   DALI_TEST_CHECK(touchEvent);
94   DALI_TEST_CHECK(touchEvent2);
95   DALI_TEST_EQUALS(touchEvent, touchEvent2, TEST_LOCATION);
96   DALI_TEST_EQUALS(refCount + 1, touchEvent.GetBaseObject().ReferenceCount(), TEST_LOCATION);
97
98   END_TEST;
99 }
100
101 int UtcDaliTouchEventMoveAssignmentP(void)
102 {
103   TouchEvent touchEvent = Integration::NewTouchEvent(123u, GenerateTouchPoint());
104   DALI_TEST_CHECK(touchEvent);
105
106   const auto refCount = touchEvent.GetBaseObject().ReferenceCount();
107
108   TouchEvent touchEvent2;
109   DALI_TEST_CHECK(!touchEvent2);
110
111   touchEvent2 = std::move(touchEvent);
112   DALI_TEST_CHECK(!touchEvent);
113   DALI_TEST_CHECK(touchEvent2);
114   DALI_TEST_EQUALS(refCount, touchEvent2.GetBaseObject().ReferenceCount(), TEST_LOCATION);
115
116   END_TEST;
117 }
118
119 int UtcDaliTouchEventCopyConstructorWithPointP(void)
120 {
121   Dali::Integration::Point point;
122
123   Vector2 touchPoint(10.0, 20.0);
124   point.SetDeviceId(1);
125   point.SetState(PointState::DOWN);
126   point.SetScreenPosition(Vector2(touchPoint.x, touchPoint.y));
127
128   TouchEvent touchEvent = Integration::NewTouchEvent(123u, point);
129   DALI_TEST_CHECK(touchEvent);
130
131   const auto refCount = touchEvent.GetBaseObject().ReferenceCount();
132
133   TouchEvent touchEvent2(touchEvent);
134   DALI_TEST_CHECK(touchEvent);
135   DALI_TEST_CHECK(touchEvent2);
136   DALI_TEST_EQUALS(touchEvent, touchEvent2, TEST_LOCATION);
137   DALI_TEST_EQUALS(refCount + 1, touchEvent.GetBaseObject().ReferenceCount(), TEST_LOCATION);
138
139   END_TEST;
140 }
141
142 int UtcDaliTouchEventMoveConstructorWithPointP(void)
143 {
144   Dali::Integration::Point point;
145
146   Vector2 touchPoint(10.0, 20.0);
147   point.SetDeviceId(1);
148   point.SetState(PointState::DOWN);
149   point.SetScreenPosition(Vector2(touchPoint.x, touchPoint.y));
150
151   TouchEvent touchEvent = Integration::NewTouchEvent(123u, point);
152   DALI_TEST_CHECK(touchEvent);
153
154   const auto refCount = touchEvent.GetBaseObject().ReferenceCount();
155
156   TouchEvent touchEvent2(std::move(touchEvent));
157   DALI_TEST_CHECK(!touchEvent);
158   DALI_TEST_CHECK(touchEvent2);
159   DALI_TEST_EQUALS(refCount, touchEvent2.GetBaseObject().ReferenceCount(), TEST_LOCATION);
160
161   END_TEST;
162 }
163
164 int UtcDaliTouchEventSetTime(void)
165 {
166   TestApplication application;
167
168   TouchEvent touchEvent = Integration::NewTouchEvent(123u, GenerateTouchPoint());
169   DALI_TEST_CHECK(touchEvent);
170
171   DALI_TEST_EQUALS(123lu, touchEvent.GetTime(), TEST_LOCATION);
172
173   DevelTouchEvent::SetTime(touchEvent, 200lu);
174   DALI_TEST_EQUALS(200lu, touchEvent.GetTime(), TEST_LOCATION);
175
176   END_TEST;
177 }