2 * Copyright (c) 2014 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>
23 #include <dali/devel-api/events/key-event-devel.h>
25 #include <dali-test-suite-utils.h>
29 void utc_dali_key_event_startup(void)
31 test_return_value = TET_UNDEF;
34 void utc_dali_key_event_cleanup(void)
36 test_return_value = TET_PASS;
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;
50 const static char* TEST_STRING_1 = "alpha";
53 // Stores data that is populated in the callback and will be read by the TET cases
57 : functorCalled(false)
62 functorCalled = false;
64 receivedKeyEvent.keyModifier = 0;
65 receivedKeyEvent.keyPressedName.clear();
66 receivedKeyEvent.keyPressed.clear();
72 KeyEvent receivedKeyEvent;
76 // Functor that sets the data when called
77 struct KeyEventReceivedFunctor
79 KeyEventReceivedFunctor( SignalData& data ) : signalData( data ) { }
81 bool operator()( Actor actor, const KeyEvent& keyEvent )
83 signalData.functorCalled = true;
84 signalData.receivedKeyEvent = keyEvent;
85 signalData.keyedActor = actor;
90 SignalData& signalData;
95 int UtcDaliKeyEventConstructor(void)
97 TestApplication application; // Reset all test adapter return codes
99 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0, KeyEvent::Down); // set name to test, key string to i and modifier to shift
101 DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
102 DALI_TEST_EQUALS("i", event.keyPressed, TEST_LOCATION); // check key string
103 DALI_TEST_EQUALS(99, event.keyCode, TEST_LOCATION); // check keyCode
104 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
105 DALI_TEST_EQUALS(KeyEvent::Down, event.state, TEST_LOCATION); // check state
109 // Positive test case for a method
110 int UtcDaliKeyEventIsShiftModifier(void)
112 TestApplication application; // Reset all test adapter return codes
115 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
117 event.keyModifier = SHIFT_MODIFIER; // Set to Shift Modifier
119 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
121 DALI_TEST_EQUALS(true, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
126 // Positive test case for a method
127 int UtcDaliKeyEventIsCtrlModifier(void)
129 TestApplication application; // Reset all test adapter return codes
132 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
134 event.keyModifier = CTRL_MODIFIER; // Set to Ctrl Modifier
136 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
138 DALI_TEST_EQUALS(true, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
142 // Positive test case for a method
143 int UtcDaliKeyEventIsAltModifier(void)
145 TestApplication application; // Reset all test adapter return codes
148 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
150 event.keyModifier = ALT_MODIFIER; // Set to Alt Modifier
152 DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
154 DALI_TEST_EQUALS(true, event.IsAltModifier(), TEST_LOCATION); // IsAltModifier
158 // Positive fail test case for a method
159 int UtcDaliKeyEventIsNotShiftModifier(void)
161 TestApplication application; // Reset all test adapter return codes
163 KeyEvent event("i","i", 0, CTRL_MODIFIER, 0, KeyEvent::Down);
165 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
167 DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION);
171 // Positive fail test case for a method
172 int UtcDaliKeyEventIsNotCtrlModifier(void)
174 TestApplication application; // Reset all test adapter return codes
176 KeyEvent event("i","i", 0, ALT_MODIFIER, 0, KeyEvent::Up);
178 DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
180 DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION);
184 // Positive fail test case for a method
185 int UtcDaliKeyEventIsNotAltModifier(void)
187 TestApplication application; // Reset all test adapter return codes
189 KeyEvent event("i","i", 0, SHIFT_MODIFIER, 0, KeyEvent::Up);
191 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
193 DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION);
197 // Positive test case for a method
198 int UtcDaliKeyEventANDModifer(void)
200 TestApplication application; // Reset all test adapter return codes
202 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
203 DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
205 event.keyModifier = SHIFT_MODIFIER;
207 DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsShiftModifier()), TEST_LOCATION);
211 // Positive test case for a method
212 int UtcDaliKeyEventORModifer(void)
214 TestApplication application; // Reset all test adapter return codes
216 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
217 DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
219 event.keyModifier = SHIFT_MODIFIER;
221 DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
225 // Positive test case for a method
226 int UtcDaliKeyEventState(void)
228 TestApplication application; // Reset all test adapter return codes
230 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
231 DALI_TEST_EQUALS(true, (bool)(event.IsCtrlModifier() | event.IsAltModifier()), TEST_LOCATION);
233 event.keyModifier = SHIFT_MODIFIER;
235 DALI_TEST_EQUALS(false, (bool)(event.IsCtrlModifier() & event.IsAltModifier()), TEST_LOCATION);
239 int UtcDaliIntegrationKeyEvent(void)
241 TestApplication application;
244 Integration::KeyEvent keyEvent;
245 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
246 DALI_TEST_CHECK( keyEvent.keyName == std::string() );
247 DALI_TEST_CHECK( keyEvent.keyString == std::string() );
248 DALI_TEST_EQUALS( keyEvent.keyCode, -1, TEST_LOCATION );
249 DALI_TEST_EQUALS( keyEvent.keyModifier, 0, TEST_LOCATION );
250 DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
251 DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
255 const std::string keyName("keyName");
256 const std::string keyString("keyString");
257 const int keyCode(333);
258 const int keyModifier(312);
259 const unsigned long timeStamp(132);
260 const Integration::KeyEvent::State keyState(Integration::KeyEvent::Up);
261 const std::string deviceName("hwKeyboard");
263 Integration::KeyEvent keyEvent(keyName, keyString, keyCode, keyModifier, timeStamp, keyState, deviceName );
264 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
265 DALI_TEST_CHECK( keyEvent.keyName == keyName );
266 DALI_TEST_CHECK( keyEvent.keyString == keyString );
267 DALI_TEST_EQUALS( keyEvent.keyCode, keyCode, TEST_LOCATION );
268 DALI_TEST_EQUALS( keyEvent.keyModifier, keyModifier, TEST_LOCATION );
269 DALI_TEST_EQUALS( keyEvent.time, timeStamp, TEST_LOCATION );
270 DALI_TEST_EQUALS( keyEvent.state, keyState, TEST_LOCATION);
271 DALI_TEST_EQUALS( keyEvent.deviceName, deviceName, TEST_LOCATION);
276 int UtcDaliIntegrationKeyEventConvertor(void)
278 TestApplication application;
280 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down); // set name to test, key string to i and modifier to shift
282 Integration::KeyEvent keyEvent( event );
284 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
285 DALI_TEST_CHECK( keyEvent.keyName == TEST_STRING_1 );
286 DALI_TEST_CHECK( keyEvent.keyString == "i" );
287 DALI_TEST_EQUALS( keyEvent.keyCode, 99, TEST_LOCATION );
288 DALI_TEST_EQUALS( keyEvent.keyModifier, SHIFT_MODIFIER, TEST_LOCATION );
289 DALI_TEST_EQUALS( keyEvent.time, 0lu, TEST_LOCATION );
290 DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
291 DALI_TEST_EQUALS( keyEvent.deviceName, "", TEST_LOCATION);
296 int UtcDaliKeyEventSetDeviceName(void)
298 TestApplication application;
300 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0lu, KeyEvent::Down);
302 DALI_TEST_EQUALS( DevelKeyEvent::GetDeviceName( event ), "", TEST_LOCATION);
304 DevelKeyEvent::SetDeviceName( event, "finger" );
306 DALI_TEST_EQUALS( DevelKeyEvent::GetDeviceName( event ), "finger", TEST_LOCATION);
309 DALI_TEST_EQUALS( DevelKeyEvent::GetDeviceName( event2 ), "", TEST_LOCATION);