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