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