2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <dali/public-api/dali-core.h>
22 #include <dali/integration-api/events/key-event-integ.h>
24 #include <dali-test-suite-utils.h>
28 void utc_dali_key_event_startup(void)
30 test_return_value = TET_UNDEF;
33 void utc_dali_key_event_cleanup(void)
35 test_return_value = TET_PASS;
41 // Key Event Test references
42 const static int SHIFT_MODIFIER = 0x1;
43 const static int CTRL_MODIFIER = 0x2;
44 const static int ALT_MODIFIER = 0x4;
45 const static int SHIFT_AND_CTRL_MODIFIER = SHIFT_MODIFIER | CTRL_MODIFIER;
46 const static int SHIFT_AND_ALT_MODIFIER = SHIFT_MODIFIER | ALT_MODIFIER;
47 const static int CTRL_AND_ALT_MODIFIER = CTRL_MODIFIER | ALT_MODIFIER;
49 const static char* TEST_STRING_1 = "alpha";
52 // Stores data that is populated in the callback and will be read by the TET cases
56 : functorCalled(false)
61 functorCalled = false;
63 receivedKeyEvent.keyModifier = 0;
64 receivedKeyEvent.keyPressedName.clear();
65 receivedKeyEvent.keyPressed.clear();
71 KeyEvent receivedKeyEvent;
75 // Functor that sets the data when called
76 struct KeyEventReceivedFunctor
78 KeyEventReceivedFunctor( SignalData& data ) : signalData( data ) { }
80 bool operator()( Actor actor, const KeyEvent& keyEvent )
82 signalData.functorCalled = true;
83 signalData.receivedKeyEvent = keyEvent;
84 signalData.keyedActor = actor;
89 SignalData& signalData;
94 int UtcDaliKeyEventConstructor(void)
96 TestApplication application; // Reset all test adapter return codes
98 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 DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
101 DALI_TEST_EQUALS("i", event.keyPressed, TEST_LOCATION); // check key string
102 DALI_TEST_EQUALS(99, event.keyCode, TEST_LOCATION); // check keyCode
103 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
104 DALI_TEST_EQUALS(KeyEvent::Down, event.state, TEST_LOCATION); // check state
108 int UtcDaliKeyEventAssignment(void)
110 // Test Assignment operator
111 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0, KeyEvent::Down); // set name to test, key string to i and modifier to shift
113 DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
114 DALI_TEST_EQUALS("i", event.keyPressed, TEST_LOCATION); // check key string
115 DALI_TEST_EQUALS(99, event.keyCode, TEST_LOCATION); // check keyCode
116 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
117 DALI_TEST_EQUALS(KeyEvent::Down, event.state, TEST_LOCATION); // check state
119 KeyEvent event2(TEST_STRING_1,"j", 88, CTRL_MODIFIER, 0, KeyEvent::Up); // set name to test, key string to i and modifier to shift
121 DALI_TEST_EQUALS(TEST_STRING_1, event2.keyPressedName, TEST_LOCATION); // check key name
122 DALI_TEST_EQUALS("j", event2.keyPressed, TEST_LOCATION); // check key string
123 DALI_TEST_EQUALS(88, event2.keyCode, TEST_LOCATION); // check keyCode
124 DALI_TEST_EQUALS(CTRL_MODIFIER, event2.keyModifier, TEST_LOCATION); // check modifier
125 DALI_TEST_EQUALS(KeyEvent::Up, event2.state, TEST_LOCATION); // check state
129 DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
130 DALI_TEST_EQUALS("j", event.keyPressed, TEST_LOCATION); // check key string
131 DALI_TEST_EQUALS(88, event.keyCode, TEST_LOCATION); // check keyCode
132 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
133 DALI_TEST_EQUALS(KeyEvent::Up, event.state, TEST_LOCATION); // check state
138 int UtcDaliKeyEventCopy(void)
140 // Test Assignment operator
141 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0, KeyEvent::Down); // set name to test, key string to i and modifier to shift
143 DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
144 DALI_TEST_EQUALS("i", event.keyPressed, TEST_LOCATION); // check key string
145 DALI_TEST_EQUALS(99, event.keyCode, TEST_LOCATION); // check keyCode
146 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
147 DALI_TEST_EQUALS(KeyEvent::Down, event.state, TEST_LOCATION); // check state
149 KeyEvent event2( event );
151 DALI_TEST_EQUALS(TEST_STRING_1, event2.keyPressedName, TEST_LOCATION); // check key name
152 DALI_TEST_EQUALS("i", event2.keyPressed, TEST_LOCATION); // check key string
153 DALI_TEST_EQUALS(99, event2.keyCode, TEST_LOCATION); // check keyCode
154 DALI_TEST_EQUALS(SHIFT_MODIFIER, event2.keyModifier, TEST_LOCATION); // check modifier
155 DALI_TEST_EQUALS(KeyEvent::Down, event2.state, TEST_LOCATION); // check state
160 // Positive test case for a method
161 int UtcDaliKeyEventIsShiftModifier(void)
163 TestApplication application; // Reset all test adapter return codes
166 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
168 event.keyModifier = SHIFT_MODIFIER; // Set to Shift Modifier
170 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
172 DALI_TEST_EQUALS(true, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
177 // Positive test case for a method
178 int UtcDaliKeyEventIsCtrlModifier(void)
180 TestApplication application; // Reset all test adapter return codes
183 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
185 event.keyModifier = CTRL_MODIFIER; // Set to Ctrl Modifier
187 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
189 DALI_TEST_EQUALS(true, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
193 // Positive test case for a method
194 int UtcDaliKeyEventIsAltModifier(void)
196 TestApplication application; // Reset all test adapter return codes
199 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
201 event.keyModifier = ALT_MODIFIER; // Set to Alt Modifier
203 DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
205 DALI_TEST_EQUALS(true, event.IsAltModifier(), TEST_LOCATION); // IsAltModifier
209 // Positive fail test case for a method
210 int UtcDaliKeyEventIsNotShiftModifier(void)
212 TestApplication application; // Reset all test adapter return codes
214 KeyEvent event("i","i", 0, CTRL_MODIFIER, 0, KeyEvent::Down);
216 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
218 DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION);
222 // Positive fail test case for a method
223 int UtcDaliKeyEventIsNotCtrlModifier(void)
225 TestApplication application; // Reset all test adapter return codes
227 KeyEvent event("i","i", 0, ALT_MODIFIER, 0, KeyEvent::Up);
229 DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
231 DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION);
235 // Positive fail test case for a method
236 int UtcDaliKeyEventIsNotAltModifier(void)
238 TestApplication application; // Reset all test adapter return codes
240 KeyEvent event("i","i", 0, SHIFT_MODIFIER, 0, KeyEvent::Up);
242 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
244 DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION);
248 // Positive test case for a method
249 int UtcDaliKeyEventANDModifer(void)
251 TestApplication application; // Reset all test adapter return codes
253 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
254 DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
256 event.keyModifier = SHIFT_MODIFIER;
258 DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
262 // Positive test case for a method
263 int UtcDaliKeyEventORModifer(void)
265 TestApplication application; // Reset all test adapter return codes
267 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
268 DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
270 event.keyModifier = SHIFT_MODIFIER;
272 DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
276 // Positive test case for a method
277 int UtcDaliKeyEventState(void)
279 TestApplication application; // Reset all test adapter return codes
281 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
282 DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
284 event.keyModifier = SHIFT_MODIFIER;
286 DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
290 int UtcDaliIntegrationKeyEvent(void)
292 TestApplication application;
295 Integration::KeyEvent keyEvent;
296 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
297 DALI_TEST_CHECK( keyEvent.keyName == std::string() );
298 DALI_TEST_CHECK( keyEvent.keyString == std::string() );
299 DALI_TEST_EQUALS( keyEvent.keyCode, -1, TEST_LOCATION );
300 DALI_TEST_EQUALS( keyEvent.keyModifier, 0, TEST_LOCATION );
301 DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
302 DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
306 const std::string keyName("keyName");
307 const std::string keyString("keyString");
308 const int keyCode(333);
309 const int keyModifier(312);
310 const unsigned long timeStamp(132);
311 const Integration::KeyEvent::State keyState(Integration::KeyEvent::Up);
312 const std::string deviceName("hwKeyboard");
313 const Device::Class::Type deviceClass = Device::Class::KEYBOARD;
314 const Device::Subclass::Type deviceSubclass = Device::Subclass::NONE;
316 Integration::KeyEvent keyEvent(keyName, keyString, keyCode, keyModifier, timeStamp, keyState, deviceName, deviceClass, deviceSubclass );
317 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
318 DALI_TEST_CHECK( keyEvent.keyName == keyName );
319 DALI_TEST_CHECK( keyEvent.keyString == keyString );
320 DALI_TEST_EQUALS( keyEvent.keyCode, keyCode, TEST_LOCATION );
321 DALI_TEST_EQUALS( keyEvent.keyModifier, keyModifier, TEST_LOCATION );
322 DALI_TEST_EQUALS( keyEvent.time, timeStamp, TEST_LOCATION );
323 DALI_TEST_EQUALS( keyEvent.state, keyState, TEST_LOCATION);
324 DALI_TEST_EQUALS( keyEvent.deviceName, deviceName, TEST_LOCATION);
325 DALI_TEST_EQUALS( keyEvent.deviceClass, deviceClass, TEST_LOCATION);
326 DALI_TEST_EQUALS( keyEvent.deviceSubclass, deviceSubclass, TEST_LOCATION);
331 int UtcDaliIntegrationKeyEventConvertor(void)
333 TestApplication application;
335 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down); // set name to test, key string to i and modifier to shift
337 Integration::KeyEvent keyEvent( event );
339 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
340 DALI_TEST_CHECK( keyEvent.keyName == TEST_STRING_1 );
341 DALI_TEST_CHECK( keyEvent.keyString == "i" );
342 DALI_TEST_EQUALS( keyEvent.keyCode, 99, TEST_LOCATION );
343 DALI_TEST_EQUALS( keyEvent.keyModifier, SHIFT_MODIFIER, TEST_LOCATION );
344 DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
345 DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
346 DALI_TEST_EQUALS( keyEvent.deviceName, "", TEST_LOCATION);
347 DALI_TEST_EQUALS( keyEvent.deviceClass, Device::Class::NONE, TEST_LOCATION);
348 DALI_TEST_EQUALS( keyEvent.deviceSubclass, Device::Subclass::NONE, TEST_LOCATION);
353 int UtcDaliKeyEventSetDeviceName(void)
355 TestApplication application;
357 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down);
359 DALI_TEST_EQUALS( event.GetDeviceName(), "", TEST_LOCATION);
364 int UtcDaliKeyEventSetDeviceClass(void)
366 TestApplication application;
368 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down);
370 DALI_TEST_EQUALS( event.GetDeviceClass(), Device::Class::NONE, TEST_LOCATION);
375 int UtcDaliKeyEventSetDeviceSubclass(void)
377 TestApplication application;
379 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down);
381 DALI_TEST_EQUALS( event.GetDeviceSubclass(), Device::Subclass::NONE, TEST_LOCATION);