Adding deviceName to KeyEvent Integ
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-KeyEvent.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 <iostream>
19
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali/integration-api/events/key-event-integ.h>
23 #include <dali/devel-api/events/key-event-devel.h>
24
25 #include <dali-test-suite-utils.h>
26
27 using namespace Dali;
28
29 void utc_dali_key_event_startup(void)
30 {
31   test_return_value = TET_UNDEF;
32 }
33
34 void utc_dali_key_event_cleanup(void)
35 {
36   test_return_value = TET_PASS;
37 }
38
39 namespace
40 {
41
42 // Key Event Test references
43 const static int SHIFT_MODIFIER  = 0x1;
44 const static int CTRL_MODIFIER  = 0x2;
45 const static int ALT_MODIFIER  = 0x4;
46 const static int SHIFT_AND_CTRL_MODIFIER  = SHIFT_MODIFIER | CTRL_MODIFIER;
47 const static int SHIFT_AND_ALT_MODIFIER  = SHIFT_MODIFIER | ALT_MODIFIER;
48 const static int CTRL_AND_ALT_MODIFIER  = CTRL_MODIFIER | ALT_MODIFIER;
49
50 const static char* TEST_STRING_1 = "alpha";
51
52
53 // Stores data that is populated in the callback and will be read by the TET cases
54 struct SignalData
55 {
56   SignalData()
57   : functorCalled(false)
58   {}
59
60   void Reset()
61   {
62     functorCalled = false;
63
64     receivedKeyEvent.keyModifier = 0;
65     receivedKeyEvent.keyPressedName.clear();
66     receivedKeyEvent.keyPressed.clear();
67
68     keyedActor.Reset();
69   }
70
71   bool functorCalled;
72   KeyEvent receivedKeyEvent;
73   Actor keyedActor;
74 };
75
76 // Functor that sets the data when called
77 struct KeyEventReceivedFunctor
78 {
79   KeyEventReceivedFunctor( SignalData& data ) : signalData( data ) { }
80
81   bool operator()( Actor actor, const KeyEvent& keyEvent )
82   {
83     signalData.functorCalled = true;
84     signalData.receivedKeyEvent = keyEvent;
85     signalData.keyedActor = actor;
86
87     return true;
88   }
89
90   SignalData& signalData;
91 };
92
93 } // anon namespace
94
95 int UtcDaliKeyEventConstructor(void)
96 {
97   TestApplication application; // Reset all test adapter return codes
98
99   KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0, KeyEvent::Down);  // set name to test, key string to i and modifier to shift
100
101   DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
102   DALI_TEST_EQUALS("i", event.keyPressed, TEST_LOCATION); // check key string
103   DALI_TEST_EQUALS(99, event.keyCode, TEST_LOCATION); // check keyCode
104   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
105   DALI_TEST_EQUALS(KeyEvent::Down, event.state, TEST_LOCATION); // check state
106   END_TEST;
107 }
108
109 // Positive test case for a method
110 int UtcDaliKeyEventIsShiftModifier(void)
111 {
112   TestApplication application; // Reset all test adapter return codes
113
114   KeyEvent event;
115   DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
116
117   event.keyModifier = SHIFT_MODIFIER; // Set to Shift Modifier
118
119   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
120
121   DALI_TEST_EQUALS(true, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
122
123   END_TEST;
124 }
125
126 // Positive test case for a method
127 int UtcDaliKeyEventIsCtrlModifier(void)
128 {
129   TestApplication application; // Reset all test adapter return codes
130
131   KeyEvent event;
132   DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
133
134   event.keyModifier = CTRL_MODIFIER; // Set to Ctrl Modifier
135
136   DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
137
138   DALI_TEST_EQUALS(true, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
139   END_TEST;
140 }
141
142 // Positive test case for a method
143 int UtcDaliKeyEventIsAltModifier(void)
144 {
145   TestApplication application; // Reset all test adapter return codes
146
147   KeyEvent event;
148   DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
149
150   event.keyModifier = ALT_MODIFIER; // Set to Alt Modifier
151
152   DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
153
154   DALI_TEST_EQUALS(true, event.IsAltModifier(), TEST_LOCATION);  // IsAltModifier
155   END_TEST;
156 }
157
158 // Positive fail test case for a method
159 int UtcDaliKeyEventIsNotShiftModifier(void)
160 {
161   TestApplication application; // Reset all test adapter return codes
162
163   KeyEvent event("i","i", 0, CTRL_MODIFIER, 0, KeyEvent::Down);
164
165   DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION);  // check different modifier used
166
167   DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION);
168   END_TEST;
169 }
170
171 // Positive fail test case for a method
172 int UtcDaliKeyEventIsNotCtrlModifier(void)
173 {
174   TestApplication application; // Reset all test adapter return codes
175
176   KeyEvent event("i","i", 0, ALT_MODIFIER, 0, KeyEvent::Up);
177
178   DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION);  // check different modifier used
179
180   DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION);
181   END_TEST;
182 }
183
184 // Positive fail test case for a method
185 int UtcDaliKeyEventIsNotAltModifier(void)
186 {
187   TestApplication application; // Reset all test adapter return codes
188
189   KeyEvent event("i","i", 0, SHIFT_MODIFIER, 0, KeyEvent::Up);
190
191   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION);  // check different modifier used
192
193   DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION);
194   END_TEST;
195 }
196
197 // Positive test case for a method
198 int UtcDaliKeyEventANDModifer(void)
199 {
200   TestApplication application; // Reset all test adapter return codes
201
202   KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
203   DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
204
205   event.keyModifier = SHIFT_MODIFIER;
206
207   DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
208   END_TEST;
209 }
210
211 // Positive test case for a method
212 int UtcDaliKeyEventORModifer(void)
213 {
214   TestApplication application; // Reset all test adapter return codes
215
216   KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
217   DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
218
219   event.keyModifier = SHIFT_MODIFIER;
220
221   DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
222   END_TEST;
223 }
224
225 // Positive test case for a method
226 int UtcDaliKeyEventState(void)
227 {
228   TestApplication application; // Reset all test adapter return codes
229
230   KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
231   DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
232
233   event.keyModifier = SHIFT_MODIFIER;
234
235   DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
236   END_TEST;
237 }
238
239 int UtcDaliIntegrationKeyEvent(void)
240 {
241   TestApplication application;
242
243   {
244     Integration::KeyEvent keyEvent;
245     DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
246     DALI_TEST_CHECK( keyEvent.keyName == std::string() );
247     DALI_TEST_CHECK( keyEvent.keyString == std::string() );
248     DALI_TEST_EQUALS( keyEvent.keyCode, -1, TEST_LOCATION );
249     DALI_TEST_EQUALS( keyEvent.keyModifier, 0, TEST_LOCATION );
250     DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
251     DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
252   }
253
254   {
255     const std::string keyName("keyName");
256     const std::string keyString("keyString");
257     const int keyCode(333);
258     const int keyModifier(312);
259     const unsigned long timeStamp(132);
260     const Integration::KeyEvent::State keyState(Integration::KeyEvent::Up);
261     const std::string deviceName("hwKeyboard");
262
263     Integration::KeyEvent keyEvent(keyName, keyString, keyCode, keyModifier, timeStamp, keyState, deviceName );
264     DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
265     DALI_TEST_CHECK( keyEvent.keyName == keyName );
266     DALI_TEST_CHECK( keyEvent.keyString == keyString );
267     DALI_TEST_EQUALS( keyEvent.keyCode, keyCode, TEST_LOCATION );
268     DALI_TEST_EQUALS( keyEvent.keyModifier, keyModifier, TEST_LOCATION );
269     DALI_TEST_EQUALS( keyEvent.time, timeStamp, TEST_LOCATION );
270     DALI_TEST_EQUALS( keyEvent.state, keyState, TEST_LOCATION);
271     DALI_TEST_EQUALS( keyEvent.deviceName, deviceName, TEST_LOCATION);
272   }
273   END_TEST;
274 }
275
276 int UtcDaliIntegrationKeyEventConvertor(void)
277 {
278   TestApplication application;
279
280   KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down);  // set name to test, key string to i and modifier to shift
281
282   Integration::KeyEvent keyEvent( event );
283
284   DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
285   DALI_TEST_CHECK( keyEvent.keyName == TEST_STRING_1 );
286   DALI_TEST_CHECK( keyEvent.keyString == "i" );
287   DALI_TEST_EQUALS( keyEvent.keyCode, 99, TEST_LOCATION );
288   DALI_TEST_EQUALS( keyEvent.keyModifier, SHIFT_MODIFIER, TEST_LOCATION );
289   DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
290   DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
291   DALI_TEST_EQUALS( keyEvent.deviceName, "", TEST_LOCATION);
292
293   END_TEST;
294 }
295
296 int UtcDaliKeyEventSetDeviceName(void)
297 {
298   TestApplication application;
299
300   KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down);
301
302   DALI_TEST_EQUALS( DevelKeyEvent::GetDeviceName( event ), "", TEST_LOCATION);
303
304   DevelKeyEvent::SetDeviceName( event, "finger" );
305
306   DALI_TEST_EQUALS( DevelKeyEvent::GetDeviceName( event ), "finger", TEST_LOCATION);
307
308   KeyEvent event2;
309   DALI_TEST_EQUALS( DevelKeyEvent::GetDeviceName( event2 ), "", TEST_LOCATION);
310
311   END_TEST;
312 }