d1a011896e4e7286881d5bca360ab5635c6453f7
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-KeyEvent.cpp
1 /*
2  * Copyright (c) 2020 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.Reset();
65
66     keyedActor.Reset();
67   }
68
69   bool functorCalled;
70   KeyEvent receivedKeyEvent;
71   Actor keyedActor;
72 };
73
74 // Functor that sets the data when called
75 struct KeyEventReceivedFunctor
76 {
77   KeyEventReceivedFunctor( SignalData& data ) : signalData( data ) { }
78
79   bool operator()( Actor actor, const KeyEvent& keyEvent )
80   {
81     signalData.functorCalled = true;
82     signalData.receivedKeyEvent = keyEvent;
83     signalData.keyedActor = actor;
84
85     return true;
86   }
87
88   SignalData& signalData;
89 };
90
91 } // anon namespace
92
93 int UtcDaliKeyEventConstructor(void)
94 {
95   TestApplication application; // Reset all test adapter return codes
96
97   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
98   DALI_TEST_CHECK( event );
99
100   DALI_TEST_EQUALS(TEST_STRING_1, event.GetKeyName(), TEST_LOCATION); // check key name
101   DALI_TEST_EQUALS("I", event.GetLogicalKey(), TEST_LOCATION); // check logical key string
102   DALI_TEST_EQUALS("i", event.GetKeyString(), TEST_LOCATION); // check key string
103   DALI_TEST_EQUALS(99, event.GetKeyCode(), TEST_LOCATION); // check keyCode
104   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check modifier
105   DALI_TEST_EQUALS(0lu, event.GetTime(), TEST_LOCATION); // check time
106   DALI_TEST_EQUALS(KeyEvent::Down, event.GetState(), TEST_LOCATION); // check state
107   DALI_TEST_EQUALS("", event.GetCompose(), TEST_LOCATION); // check compose
108   DALI_TEST_EQUALS("", event.GetDeviceName(), TEST_LOCATION); // check device name
109   DALI_TEST_EQUALS(Device::Class::NONE, event.GetDeviceClass(), TEST_LOCATION); // check device class
110   DALI_TEST_EQUALS(Device::Subclass::NONE, event.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
111
112   END_TEST;
113 }
114
115 int UtcDaliKeyEventCopyAssignment(void)
116 {
117   // Test Assignment operator
118   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
119   DALI_TEST_CHECK( event );
120
121   DALI_TEST_EQUALS(TEST_STRING_1, event.GetKeyName(), TEST_LOCATION); // check key name
122   DALI_TEST_EQUALS("I", event.GetLogicalKey(), TEST_LOCATION); // check logical key string
123   DALI_TEST_EQUALS("i", event.GetKeyString(), TEST_LOCATION); // check key string
124   DALI_TEST_EQUALS(99, event.GetKeyCode(), TEST_LOCATION); // check keyCode
125   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check modifier
126   DALI_TEST_EQUALS(0lu, event.GetTime(), TEST_LOCATION); // check time
127   DALI_TEST_EQUALS(KeyEvent::Down, event.GetState(), TEST_LOCATION); // check state
128   DALI_TEST_EQUALS("", event.GetCompose(), TEST_LOCATION); // check compose
129   DALI_TEST_EQUALS("", event.GetDeviceName(), TEST_LOCATION); // check device name
130   DALI_TEST_EQUALS(Device::Class::NONE, event.GetDeviceClass(), TEST_LOCATION); // check device class
131   DALI_TEST_EQUALS(Device::Subclass::NONE, event.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
132
133   Dali::KeyEvent event2 = DevelKeyEvent::New(TEST_STRING_1, "J", "j", 88, CTRL_MODIFIER, 0lu, KeyEvent::Up, "", "", Device::Class::USER, Device::Subclass::FINGER);  // set name to test, key string to i and modifier to shift
134   DALI_TEST_CHECK( event2 );
135
136   DALI_TEST_EQUALS(TEST_STRING_1, event2.GetKeyName(), TEST_LOCATION); // check key name
137   DALI_TEST_EQUALS("J", event2.GetLogicalKey(), TEST_LOCATION); // check logical key string
138   DALI_TEST_EQUALS("j", event2.GetKeyString(), TEST_LOCATION); // check key string
139   DALI_TEST_EQUALS(88, event2.GetKeyCode(), TEST_LOCATION); // check keyCode
140   DALI_TEST_EQUALS(CTRL_MODIFIER, event2.GetKeyModifier(), TEST_LOCATION); // check modifier
141   DALI_TEST_EQUALS(0lu, event2.GetTime(), TEST_LOCATION); // check time
142   DALI_TEST_EQUALS(KeyEvent::Up, event2.GetState(), TEST_LOCATION); // check state
143   DALI_TEST_EQUALS("", event2.GetCompose(), TEST_LOCATION); // check compose
144   DALI_TEST_EQUALS("", event2.GetDeviceName(), TEST_LOCATION); // check device name
145   DALI_TEST_EQUALS(Device::Class::USER, event2.GetDeviceClass(), TEST_LOCATION); // check device class
146   DALI_TEST_EQUALS(Device::Subclass::FINGER, event2.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
147
148   event = event2;
149   DALI_TEST_CHECK( event );
150
151   DALI_TEST_EQUALS(TEST_STRING_1, event.GetKeyName(), TEST_LOCATION); // check key name
152   DALI_TEST_EQUALS("J", event.GetLogicalKey(), TEST_LOCATION); // check logical key string
153   DALI_TEST_EQUALS("j", event.GetKeyString(), TEST_LOCATION); // check key string
154   DALI_TEST_EQUALS(88, event.GetKeyCode(), TEST_LOCATION); // check keyCode
155   DALI_TEST_EQUALS(CTRL_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check modifier
156   DALI_TEST_EQUALS(0lu, event.GetTime(), TEST_LOCATION); // check time
157   DALI_TEST_EQUALS(KeyEvent::Up, event.GetState(), TEST_LOCATION); // check state
158   DALI_TEST_EQUALS("", event.GetCompose(), TEST_LOCATION); // check compose
159   DALI_TEST_EQUALS("", event.GetDeviceName(), TEST_LOCATION); // check device name
160   DALI_TEST_EQUALS(Device::Class::USER, event.GetDeviceClass(), TEST_LOCATION); // check device class
161   DALI_TEST_EQUALS(Device::Subclass::FINGER, event.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
162
163   END_TEST;
164 }
165
166 int UtcDaliKeyEventCopyConstructor(void)
167 {
168   // Test Assignment operator
169   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
170   DALI_TEST_CHECK( event );
171
172   DALI_TEST_EQUALS(TEST_STRING_1, event.GetKeyName(), TEST_LOCATION); // check key name
173   DALI_TEST_EQUALS("I", event.GetLogicalKey(), TEST_LOCATION); // check logical key string
174   DALI_TEST_EQUALS("i", event.GetKeyString(), TEST_LOCATION); // check key string
175   DALI_TEST_EQUALS(99, event.GetKeyCode(), TEST_LOCATION); // check keyCode
176   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check modifier
177   DALI_TEST_EQUALS(0lu, event.GetTime(), TEST_LOCATION); // check time
178   DALI_TEST_EQUALS(KeyEvent::Down, event.GetState(), TEST_LOCATION); // check state
179   DALI_TEST_EQUALS("", event.GetCompose(), TEST_LOCATION); // check compose
180   DALI_TEST_EQUALS("", event.GetDeviceName(), TEST_LOCATION); // check device name
181   DALI_TEST_EQUALS(Device::Class::NONE, event.GetDeviceClass(), TEST_LOCATION); // check device class
182   DALI_TEST_EQUALS(Device::Subclass::NONE, event.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
183
184   KeyEvent event2( event );
185   DALI_TEST_CHECK( event2 );
186
187   DALI_TEST_EQUALS(TEST_STRING_1, event2.GetKeyName(), TEST_LOCATION); // check key name
188   DALI_TEST_EQUALS("I", event2.GetLogicalKey(), TEST_LOCATION); // check logical key string
189   DALI_TEST_EQUALS("i", event2.GetKeyString(), TEST_LOCATION); // check key string
190   DALI_TEST_EQUALS(99, event2.GetKeyCode(), TEST_LOCATION); // check keyCode
191   DALI_TEST_EQUALS(SHIFT_MODIFIER, event2.GetKeyModifier(), TEST_LOCATION); // check modifier
192   DALI_TEST_EQUALS(0lu, event2.GetTime(), TEST_LOCATION); // check time
193   DALI_TEST_EQUALS(KeyEvent::Down, event2.GetState(), TEST_LOCATION); // check state
194   DALI_TEST_EQUALS("", event2.GetCompose(), TEST_LOCATION); // check compose
195   DALI_TEST_EQUALS("", event2.GetDeviceName(), TEST_LOCATION); // check device name
196   DALI_TEST_EQUALS(Device::Class::NONE, event2.GetDeviceClass(), TEST_LOCATION); // check device class
197   DALI_TEST_EQUALS(Device::Subclass::NONE, event2.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
198
199   END_TEST;
200 }
201
202 int UtcDaliKeyEventMoveAssignment(void)
203 {
204   // Test Assignment operator
205   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
206   DALI_TEST_CHECK( event );
207
208   DALI_TEST_EQUALS(TEST_STRING_1, event.GetKeyName(), TEST_LOCATION); // check key name
209   DALI_TEST_EQUALS("I", event.GetLogicalKey(), TEST_LOCATION); // check logical key string
210   DALI_TEST_EQUALS("i", event.GetKeyString(), TEST_LOCATION); // check key string
211   DALI_TEST_EQUALS(99, event.GetKeyCode(), TEST_LOCATION); // check keyCode
212   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check modifier
213   DALI_TEST_EQUALS(0lu, event.GetTime(), TEST_LOCATION); // check time
214   DALI_TEST_EQUALS(KeyEvent::Down, event.GetState(), TEST_LOCATION); // check state
215   DALI_TEST_EQUALS("", event.GetCompose(), TEST_LOCATION); // check compose
216   DALI_TEST_EQUALS("", event.GetDeviceName(), TEST_LOCATION); // check device name
217   DALI_TEST_EQUALS(Device::Class::NONE, event.GetDeviceClass(), TEST_LOCATION); // check device class
218   DALI_TEST_EQUALS(Device::Subclass::NONE, event.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
219
220   KeyEvent move;
221   move = std::move( event );
222   DALI_TEST_CHECK( move );
223
224   DALI_TEST_EQUALS(TEST_STRING_1, move.GetKeyName(), TEST_LOCATION); // check key name
225   DALI_TEST_EQUALS("I", move.GetLogicalKey(), TEST_LOCATION); // check logical key string
226   DALI_TEST_EQUALS("i", move.GetKeyString(), TEST_LOCATION); // check key string
227   DALI_TEST_EQUALS(99, move.GetKeyCode(), TEST_LOCATION); // check keyCode
228   DALI_TEST_EQUALS(SHIFT_MODIFIER, move.GetKeyModifier(), TEST_LOCATION); // check modifier
229   DALI_TEST_EQUALS(0lu, move.GetTime(), TEST_LOCATION); // check time
230   DALI_TEST_EQUALS(KeyEvent::Down, move.GetState(), TEST_LOCATION); // check state
231   DALI_TEST_EQUALS("", move.GetCompose(), TEST_LOCATION); // check compose
232   DALI_TEST_EQUALS("", move.GetDeviceName(), TEST_LOCATION); // check device name
233   DALI_TEST_EQUALS(Device::Class::NONE, move.GetDeviceClass(), TEST_LOCATION); // check device class
234   DALI_TEST_EQUALS(Device::Subclass::NONE, move.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
235
236   DALI_TEST_CHECK( !event );
237
238   END_TEST;
239 }
240
241 int UtcDaliKeyEventMoveConstructor(void)
242 {
243   // Test Assignment operator
244   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
245   DALI_TEST_CHECK( event );
246
247   DALI_TEST_EQUALS(TEST_STRING_1, event.GetKeyName(), TEST_LOCATION); // check key name
248   DALI_TEST_EQUALS("I", event.GetLogicalKey(), TEST_LOCATION); // check logical key string
249   DALI_TEST_EQUALS("i", event.GetKeyString(), TEST_LOCATION); // check key string
250   DALI_TEST_EQUALS(99, event.GetKeyCode(), TEST_LOCATION); // check keyCode
251   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check modifier
252   DALI_TEST_EQUALS(0lu, event.GetTime(), TEST_LOCATION); // check time
253   DALI_TEST_EQUALS(KeyEvent::Down, event.GetState(), TEST_LOCATION); // check state
254   DALI_TEST_EQUALS("", event.GetCompose(), TEST_LOCATION); // check compose
255   DALI_TEST_EQUALS("", event.GetDeviceName(), TEST_LOCATION); // check device name
256   DALI_TEST_EQUALS(Device::Class::NONE, event.GetDeviceClass(), TEST_LOCATION); // check device class
257   DALI_TEST_EQUALS(Device::Subclass::NONE, event.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
258
259   KeyEvent move = std::move( event );
260   DALI_TEST_CHECK( move );
261
262   DALI_TEST_EQUALS(TEST_STRING_1, move.GetKeyName(), TEST_LOCATION); // check key name
263   DALI_TEST_EQUALS("I", move.GetLogicalKey(), TEST_LOCATION); // check logical key string
264   DALI_TEST_EQUALS("i", move.GetKeyString(), TEST_LOCATION); // check key string
265   DALI_TEST_EQUALS(99, move.GetKeyCode(), TEST_LOCATION); // check keyCode
266   DALI_TEST_EQUALS(SHIFT_MODIFIER, move.GetKeyModifier(), TEST_LOCATION); // check modifier
267   DALI_TEST_EQUALS(0lu, move.GetTime(), TEST_LOCATION); // check time
268   DALI_TEST_EQUALS(KeyEvent::Down, move.GetState(), TEST_LOCATION); // check state
269   DALI_TEST_EQUALS("", move.GetCompose(), TEST_LOCATION); // check compose
270   DALI_TEST_EQUALS("", move.GetDeviceName(), TEST_LOCATION); // check device name
271   DALI_TEST_EQUALS(Device::Class::NONE, move.GetDeviceClass(), TEST_LOCATION); // check device class
272   DALI_TEST_EQUALS(Device::Subclass::NONE, move.GetDeviceSubclass(), TEST_LOCATION); // check device subclass
273
274   DALI_TEST_CHECK( !event );
275
276   END_TEST;
277 }
278
279 // Positive test case for a method
280 int UtcDaliKeyEventIsShiftModifier(void)
281 {
282   TestApplication application; // Reset all test adapter return codes
283
284   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, CTRL_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
285   DALI_TEST_CHECK( event );
286
287   DALI_TEST_EQUALS(CTRL_MODIFIER, event.GetKeyModifier(), TEST_LOCATION);
288   DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
289
290   DevelKeyEvent::SetKeyModifier( event, SHIFT_MODIFIER ); // Set to Shift Modifier
291
292   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check able to set
293
294   DALI_TEST_EQUALS(true, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
295
296   END_TEST;
297 }
298
299 // Positive test case for a method
300 int UtcDaliKeyEventIsCtrlModifier(void)
301 {
302   TestApplication application; // Reset all test adapter return codes
303
304   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
305   DALI_TEST_CHECK( event );
306
307   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION);
308   DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
309
310   DevelKeyEvent::SetKeyModifier( event, CTRL_MODIFIER ); // Set to Ctrl Modifier
311
312   DALI_TEST_EQUALS(CTRL_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check able to set
313
314   DALI_TEST_EQUALS(true, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
315   END_TEST;
316 }
317
318 // Positive test case for a method
319 int UtcDaliKeyEventIsAltModifier(void)
320 {
321   TestApplication application; // Reset all test adapter return codes
322
323   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);  // set name to test, key string to i and modifier to shift
324   DALI_TEST_CHECK( event );
325
326   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION);
327   DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION); // check IsAltModifier
328
329   DevelKeyEvent::SetKeyModifier( event, ALT_MODIFIER ); // Set to Alt Modifier
330
331   DALI_TEST_EQUALS(ALT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION); // check able to set
332
333   DALI_TEST_EQUALS(true, event.IsAltModifier(), TEST_LOCATION);  // IsAltModifier
334   END_TEST;
335 }
336
337 // Positive fail test case for a method
338 int UtcDaliKeyEventIsNotShiftModifier(void)
339 {
340   TestApplication application; // Reset all test adapter return codes
341
342   Dali::KeyEvent event = DevelKeyEvent::New("i", "I", "i", 0, CTRL_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
343
344   DALI_TEST_EQUALS(CTRL_MODIFIER, event.GetKeyModifier(), TEST_LOCATION);
345
346   DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION);
347   END_TEST;
348 }
349
350 // Positive fail test case for a method
351 int UtcDaliKeyEventIsNotCtrlModifier(void)
352 {
353   TestApplication application; // Reset all test adapter return codes
354
355   Dali::KeyEvent event = DevelKeyEvent::New("i", "I", "i", 0, ALT_MODIFIER, 0lu, KeyEvent::Up, "", "", Device::Class::NONE, Device::Subclass::NONE);
356
357   DALI_TEST_EQUALS(ALT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION);
358
359   DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION);
360   END_TEST;
361 }
362
363 // Positive fail test case for a method
364 int UtcDaliKeyEventIsNotAltModifier(void)
365 {
366   TestApplication application; // Reset all test adapter return codes
367
368   Dali::KeyEvent event = DevelKeyEvent::New("i", "I", "i", 0, SHIFT_MODIFIER, 0lu, KeyEvent::Up, "", "", Device::Class::NONE, Device::Subclass::NONE);
369
370   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION);
371
372   DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION);
373   END_TEST;
374 }
375
376 // Positive test case for a method
377 int UtcDaliKeyEventANDModifer(void)
378 {
379   TestApplication application; // Reset all test adapter return codes
380
381   Dali::KeyEvent event = DevelKeyEvent::New("i", "I", "i", 0, SHIFT_AND_CTRL_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
382   DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
383
384   DevelKeyEvent::SetKeyModifier( event, SHIFT_MODIFIER ); // Set to Shift Modifier
385
386   DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
387   END_TEST;
388 }
389
390 // Positive test case for a method
391 int UtcDaliKeyEventORModifer(void)
392 {
393   TestApplication application; // Reset all test adapter return codes
394
395   Dali::KeyEvent event = DevelKeyEvent::New("i", "I", "i", 0, SHIFT_AND_CTRL_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
396   DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
397
398   DevelKeyEvent::SetKeyModifier( event, SHIFT_MODIFIER ); // Set to Shift Modifier
399
400   DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
401   END_TEST;
402 }
403
404 int UtcDaliIntegrationKeyEvent(void)
405 {
406   TestApplication application;
407
408   {
409     Integration::KeyEvent keyEvent;
410     DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
411     DALI_TEST_CHECK( keyEvent.keyName == std::string() );
412     DALI_TEST_CHECK( keyEvent.logicalKey == std::string() );
413     DALI_TEST_CHECK( keyEvent.keyString == std::string() );
414     DALI_TEST_EQUALS( keyEvent.keyCode, -1, TEST_LOCATION );
415     DALI_TEST_EQUALS( keyEvent.keyModifier, 0, TEST_LOCATION );
416     DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
417     DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
418     DALI_TEST_EQUALS( keyEvent.compose, std::string(), TEST_LOCATION);
419     DALI_TEST_EQUALS( keyEvent.deviceName, std::string(), TEST_LOCATION);
420     DALI_TEST_EQUALS( keyEvent.deviceClass, Device::Class::NONE, TEST_LOCATION);
421     DALI_TEST_EQUALS( keyEvent.deviceSubclass, Device::Subclass::NONE, TEST_LOCATION);
422   }
423
424   {
425     const std::string keyName("keyName");
426     const std::string logicalKey("logicalKey");
427     const std::string keyString("keyString");
428     const int keyCode(333);
429     const int keyModifier(312);
430     const unsigned long timeStamp(132);
431     const Integration::KeyEvent::State keyState(Integration::KeyEvent::Up);
432     const std::string compose("compose");
433     const std::string deviceName("hwKeyboard");
434     const Device::Class::Type deviceClass = Device::Class::KEYBOARD;
435     const Device::Subclass::Type deviceSubclass = Device::Subclass::NONE;
436
437     Integration::KeyEvent keyEvent(keyName, logicalKey, keyString, keyCode, keyModifier, timeStamp, keyState, compose, deviceName, deviceClass, deviceSubclass );
438     DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
439     DALI_TEST_CHECK( keyEvent.keyName == keyName );
440     DALI_TEST_CHECK( keyEvent.logicalKey == logicalKey );
441     DALI_TEST_CHECK( keyEvent.keyString == keyString );
442     DALI_TEST_EQUALS( keyEvent.keyCode, keyCode, TEST_LOCATION );
443     DALI_TEST_EQUALS( keyEvent.keyModifier, keyModifier, TEST_LOCATION );
444     DALI_TEST_EQUALS( keyEvent.time, timeStamp, TEST_LOCATION );
445     DALI_TEST_EQUALS( keyEvent.state, keyState, TEST_LOCATION);
446     DALI_TEST_EQUALS( keyEvent.compose, compose, TEST_LOCATION);
447     DALI_TEST_EQUALS( keyEvent.deviceName, deviceName, TEST_LOCATION);
448     DALI_TEST_EQUALS( keyEvent.deviceClass, deviceClass, TEST_LOCATION);
449     DALI_TEST_EQUALS( keyEvent.deviceSubclass, deviceSubclass, TEST_LOCATION);
450   }
451   END_TEST;
452 }
453
454 int UtcDaliKeyEventSetKeyName(void)
455 {
456   TestApplication application;
457
458   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
459
460   DALI_TEST_EQUALS( TEST_STRING_1, event.GetKeyName(), TEST_LOCATION );
461
462   DevelKeyEvent::SetKeyName( event, "keyName" );
463   DALI_TEST_EQUALS( "keyName", event.GetKeyName(), TEST_LOCATION );
464
465   END_TEST;
466 }
467
468 int UtcDaliKeyEventSetKeyString(void)
469 {
470   TestApplication application;
471
472   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
473
474   DALI_TEST_EQUALS( "i", event.GetKeyString(), TEST_LOCATION );
475
476   DevelKeyEvent::SetKeyString( event, "keyString" );
477   DALI_TEST_EQUALS( "keyString", event.GetKeyString(), TEST_LOCATION );
478
479   END_TEST;
480 }
481
482 int UtcDaliKeyEventSetKeyCode(void)
483 {
484   TestApplication application;
485
486   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
487
488   DALI_TEST_EQUALS( 99, event.GetKeyCode(), TEST_LOCATION );
489
490   DevelKeyEvent::SetKeyCode( event, 88 );
491   DALI_TEST_EQUALS( 88, event.GetKeyCode(), TEST_LOCATION );
492
493   END_TEST;
494 }
495
496 int UtcDaliKeyEventSetKeyModifier(void)
497 {
498   TestApplication application;
499
500   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
501
502   DALI_TEST_EQUALS( SHIFT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION );
503
504   DevelKeyEvent::SetKeyModifier( event, ALT_MODIFIER );
505   DALI_TEST_EQUALS( ALT_MODIFIER, event.GetKeyModifier(), TEST_LOCATION );
506
507   END_TEST;
508 }
509
510 int UtcDaliKeyEventSetTime(void)
511 {
512   TestApplication application;
513
514   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
515
516   DALI_TEST_EQUALS( 0lu, event.GetTime(), TEST_LOCATION );
517
518   DevelKeyEvent::SetTime( event, 100lu );
519   DALI_TEST_EQUALS( 100lu, event.GetTime(), TEST_LOCATION );
520
521   END_TEST;
522 }
523
524 int UtcDaliKeyEventSetState(void)
525 {
526   TestApplication application;
527
528   Dali::KeyEvent event = DevelKeyEvent::New(TEST_STRING_1, "I", "i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE);
529
530   DALI_TEST_EQUALS( KeyEvent::Down, event.GetState(), TEST_LOCATION );
531
532   DevelKeyEvent::SetState( event, KeyEvent::Up );
533   DALI_TEST_EQUALS( KeyEvent::Up, event.GetState(), TEST_LOCATION );
534
535   END_TEST;
536 }