2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
20 #include <dali/dali.h>
21 #include <dali/integration-api/events/key-event-integ.h>
23 #include <dali-test-suite-utils.h>
27 void utc_dali_key_event_startup(void)
29 test_return_value = TET_UNDEF;
32 void utc_dali_key_event_cleanup(void)
34 test_return_value = TET_PASS;
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;
48 const static char* TEST_STRING_1 = "alpha";
51 // Stores data that is populated in the callback and will be read by the TET cases
55 : functorCalled(false)
60 functorCalled = false;
62 receivedKeyEvent.keyModifier = 0;
63 receivedKeyEvent.keyPressedName.clear();
64 receivedKeyEvent.keyPressed.clear();
70 KeyEvent receivedKeyEvent;
74 // Functor that sets the data when called
75 struct KeyEventReceivedFunctor
77 KeyEventReceivedFunctor( SignalData& data ) : signalData( data ) { }
79 bool operator()( Actor actor, const KeyEvent& keyEvent )
81 signalData.functorCalled = true;
82 signalData.receivedKeyEvent = keyEvent;
83 signalData.keyedActor = actor;
88 SignalData& signalData;
93 int UtcDaliKeyEventConstructor(void)
95 TestApplication application; // Reset all test adapter return codes
97 KeyEvent event(TEST_STRING_1,"i", 99, SHIFT_MODIFIER, 0, KeyEvent::Down); // set name to test, key string to i and modifier to shift
99 DALI_TEST_EQUALS(TEST_STRING_1, event.keyPressedName, TEST_LOCATION); // check key name
100 DALI_TEST_EQUALS("i", event.keyPressed, TEST_LOCATION); // check key string
101 DALI_TEST_EQUALS(99, event.keyCode, TEST_LOCATION); // check keyCode
102 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check modifier
103 DALI_TEST_EQUALS(KeyEvent::Down, event.state, TEST_LOCATION); // check state
107 // Positive test case for a method
108 int UtcDaliKeyEventIsShiftModifier(void)
110 TestApplication application; // Reset all test adapter return codes
113 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
115 event.keyModifier = SHIFT_MODIFIER; // Set to Shift Modifier
117 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
119 DALI_TEST_EQUALS(true, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
124 // Positive test case for a method
125 int UtcDaliKeyEventIsCtrlModifier(void)
127 TestApplication application; // Reset all test adapter return codes
130 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
132 event.keyModifier = CTRL_MODIFIER; // Set to Ctrl Modifier
134 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
136 DALI_TEST_EQUALS(true, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
140 // Positive test case for a method
141 int UtcDaliKeyEventIsAltModifier(void)
143 TestApplication application; // Reset all test adapter return codes
146 DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
148 event.keyModifier = ALT_MODIFIER; // Set to Alt Modifier
150 DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
152 DALI_TEST_EQUALS(true, event.IsAltModifier(), TEST_LOCATION); // IsAltModifier
156 // Positive fail test case for a method
157 int UtcDaliKeyEventIsNotShiftModifier(void)
159 TestApplication application; // Reset all test adapter return codes
161 KeyEvent event("i","i", 0, CTRL_MODIFIER, 0, KeyEvent::Down);
163 DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
165 DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION);
169 // Positive fail test case for a method
170 int UtcDaliKeyEventIsNotCtrlModifier(void)
172 TestApplication application; // Reset all test adapter return codes
174 KeyEvent event("i","i", 0, ALT_MODIFIER, 0, KeyEvent::Up);
176 DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
178 DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION);
182 // Positive fail test case for a method
183 int UtcDaliKeyEventIsNotAltModifier(void)
185 TestApplication application; // Reset all test adapter return codes
187 KeyEvent event("i","i", 0, SHIFT_MODIFIER, 0, KeyEvent::Up);
189 DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check different modifier used
191 DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION);
195 // Positive test case for a method
196 int UtcDaliKeyEventANDModifer(void)
198 TestApplication application; // Reset all test adapter return codes
200 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
201 DALI_TEST_EQUALS(true, event.IsCtrlModifier() & event.IsShiftModifier(), TEST_LOCATION);
203 event.keyModifier = SHIFT_MODIFIER;
205 DALI_TEST_EQUALS(false, event.IsCtrlModifier() & event.IsShiftModifier(), TEST_LOCATION);
209 // Positive test case for a method
210 int UtcDaliKeyEventORModifer(void)
212 TestApplication application; // Reset all test adapter return codes
214 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
215 DALI_TEST_EQUALS(true, event.IsCtrlModifier() | event.IsAltModifier(), TEST_LOCATION);
217 event.keyModifier = SHIFT_MODIFIER;
219 DALI_TEST_EQUALS(false, event.IsCtrlModifier() & event.IsAltModifier(), TEST_LOCATION);
223 // Positive test case for a method
224 int UtcDaliKeyEventState(void)
226 TestApplication application; // Reset all test adapter return codes
228 KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
229 DALI_TEST_EQUALS(true, event.IsCtrlModifier() | event.IsAltModifier(), TEST_LOCATION);
231 event.keyModifier = SHIFT_MODIFIER;
233 DALI_TEST_EQUALS(false, event.IsCtrlModifier() & event.IsAltModifier(), TEST_LOCATION);
237 int UtcDaliIntegrationKeyEvent(void)
239 TestApplication application;
242 Integration::KeyEvent keyEvent;
243 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
244 DALI_TEST_CHECK( keyEvent.keyName == std::string() );
245 DALI_TEST_CHECK( keyEvent.keyString == std::string() );
246 DALI_TEST_EQUALS( keyEvent.keyCode, -1, TEST_LOCATION );
247 DALI_TEST_EQUALS( keyEvent.keyModifier, 0, TEST_LOCATION );
248 DALI_TEST_EQUALS( keyEvent.time, 0u, TEST_LOCATION );
249 DALI_TEST_EQUALS( keyEvent.state, Integration::KeyEvent::Down, TEST_LOCATION);
253 const std::string keyName("keyName");
254 const std::string keyString("keyString");
255 const int keyCode(333);
256 const int keyModifier(312);
257 const unsigned long timeStamp(132);
258 const Integration::KeyEvent::State keyState(Integration::KeyEvent::Up);
260 Integration::KeyEvent keyEvent(keyName, keyString, keyCode, keyModifier, timeStamp, keyState);
261 DALI_TEST_EQUALS( keyEvent.type, Integration::Event::Key, TEST_LOCATION );
262 DALI_TEST_CHECK( keyEvent.keyName == keyName );
263 DALI_TEST_CHECK( keyEvent.keyString == keyString );
264 DALI_TEST_EQUALS( keyEvent.keyCode, keyCode, TEST_LOCATION );
265 DALI_TEST_EQUALS( keyEvent.keyModifier, keyModifier, TEST_LOCATION );
266 DALI_TEST_EQUALS( keyEvent.time, timeStamp, TEST_LOCATION );
267 DALI_TEST_EQUALS( keyEvent.state, keyState, TEST_LOCATION);