Migrating to new test framework
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-KeyEvent.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
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
7 //
8 //     http://floralicense.org/license/
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 #include <iostream>
18
19 #include <stdlib.h>
20 #include <dali/dali.h>
21 #include <dali/integration-api/events/key-event-integ.h>
22
23 #include <dali-test-suite-utils.h>
24
25 using namespace Dali;
26
27 void utc_dali_key_event_startup(void)
28 {
29   test_return_value = TET_UNDEF;
30 }
31
32 void utc_dali_key_event_cleanup(void)
33 {
34   test_return_value = TET_PASS;
35 }
36
37 namespace
38 {
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
51 // Stores data that is populated in the callback and will be read by the TET cases
52 struct SignalData
53 {
54   SignalData()
55   : functorCalled(false)
56   {}
57
58   void Reset()
59   {
60     functorCalled = false;
61
62     receivedKeyEvent.keyModifier = 0;
63     receivedKeyEvent.keyPressedName.clear();
64     receivedKeyEvent.keyPressed.clear();
65
66     keyedActor = NULL;
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 ) : signalData( data ) { }
78
79   bool operator()( Actor actor, const KeyEvent& keyEvent )
80   {
81     signalData.functorCalled = true;
82     signalData.receivedKeyEvent = keyEvent;
83     signalData.keyedActor = actor;
84
85     return true;
86   }
87
88   SignalData& signalData;
89 };
90
91 } // anon namespace
92
93 int UtcDaliKeyEventConstructor(void)
94 {
95   TestApplication application; // Reset all test adapter return codes
96
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
98
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
104   END_TEST;
105 }
106
107 // Positive test case for a method
108 int UtcDaliKeyEventIsShiftModifier(void)
109 {
110   TestApplication application; // Reset all test adapter return codes
111
112   KeyEvent event;
113   DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
114
115   event.keyModifier = SHIFT_MODIFIER; // Set to Shift Modifier
116
117   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
118
119   DALI_TEST_EQUALS(true, event.IsShiftModifier(), TEST_LOCATION); // check IsShiftModifier
120
121   END_TEST;
122 }
123
124 // Positive test case for a method
125 int UtcDaliKeyEventIsCtrlModifier(void)
126 {
127   TestApplication application; // Reset all test adapter return codes
128
129   KeyEvent event;
130   DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
131
132   event.keyModifier = CTRL_MODIFIER; // Set to Ctrl Modifier
133
134   DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
135
136   DALI_TEST_EQUALS(true, event.IsCtrlModifier(), TEST_LOCATION); // check IsCtrlModifier
137   END_TEST;
138 }
139
140 // Positive test case for a method
141 int UtcDaliKeyEventIsAltModifier(void)
142 {
143   TestApplication application; // Reset all test adapter return codes
144
145   KeyEvent event;
146   DALI_TEST_EQUALS(0, event.keyModifier, TEST_LOCATION);
147
148   event.keyModifier = ALT_MODIFIER; // Set to Alt Modifier
149
150   DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION); // check able to set
151
152   DALI_TEST_EQUALS(true, event.IsAltModifier(), TEST_LOCATION);  // IsAltModifier
153   END_TEST;
154 }
155
156 // Positive fail test case for a method
157 int UtcDaliKeyEventIsNotShiftModifier(void)
158 {
159   TestApplication application; // Reset all test adapter return codes
160
161   KeyEvent event("i","i", 0, CTRL_MODIFIER, 0, KeyEvent::Down);
162
163   DALI_TEST_EQUALS(CTRL_MODIFIER, event.keyModifier, TEST_LOCATION);  // check different modifier used
164
165   DALI_TEST_EQUALS(false, event.IsShiftModifier(), TEST_LOCATION);
166   END_TEST;
167 }
168
169 // Positive fail test case for a method
170 int UtcDaliKeyEventIsNotCtrlModifier(void)
171 {
172   TestApplication application; // Reset all test adapter return codes
173
174   KeyEvent event("i","i", 0, ALT_MODIFIER, 0, KeyEvent::Up);
175
176   DALI_TEST_EQUALS(ALT_MODIFIER, event.keyModifier, TEST_LOCATION);  // check different modifier used
177
178   DALI_TEST_EQUALS(false, event.IsCtrlModifier(), TEST_LOCATION);
179   END_TEST;
180 }
181
182 // Positive fail test case for a method
183 int UtcDaliKeyEventIsNotAltModifier(void)
184 {
185   TestApplication application; // Reset all test adapter return codes
186
187   KeyEvent event("i","i", 0, SHIFT_MODIFIER, 0, KeyEvent::Up);
188
189   DALI_TEST_EQUALS(SHIFT_MODIFIER, event.keyModifier, TEST_LOCATION);  // check different modifier used
190
191   DALI_TEST_EQUALS(false, event.IsAltModifier(), TEST_LOCATION);
192   END_TEST;
193 }
194
195 // Positive test case for a method
196 int UtcDaliKeyEventANDModifer(void)
197 {
198   TestApplication application; // Reset all test adapter return codes
199
200   KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
201   DALI_TEST_EQUALS(true, event.IsCtrlModifier() & event.IsShiftModifier(), TEST_LOCATION);
202
203   event.keyModifier = SHIFT_MODIFIER;
204
205   DALI_TEST_EQUALS(false, event.IsCtrlModifier() & event.IsShiftModifier(), TEST_LOCATION);
206   END_TEST;
207 }
208
209 // Positive test case for a method
210 int UtcDaliKeyEventORModifer(void)
211 {
212   TestApplication application; // Reset all test adapter return codes
213
214   KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
215   DALI_TEST_EQUALS(true, event.IsCtrlModifier() | event.IsAltModifier(), TEST_LOCATION);
216
217   event.keyModifier = SHIFT_MODIFIER;
218
219   DALI_TEST_EQUALS(false, event.IsCtrlModifier() & event.IsAltModifier(), TEST_LOCATION);
220   END_TEST;
221 }
222
223 // Positive test case for a method
224 int UtcDaliKeyEventState(void)
225 {
226   TestApplication application; // Reset all test adapter return codes
227
228   KeyEvent event("i","i", 0, SHIFT_AND_CTRL_MODIFIER, 0, KeyEvent::Down);
229   DALI_TEST_EQUALS(true, event.IsCtrlModifier() | event.IsAltModifier(), TEST_LOCATION);
230
231   event.keyModifier = SHIFT_MODIFIER;
232
233   DALI_TEST_EQUALS(false, event.IsCtrlModifier() & event.IsAltModifier(), TEST_LOCATION);
234   END_TEST;
235 }
236
237 int UtcDaliIntegrationKeyEvent(void)
238 {
239   TestApplication application;
240
241   {
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);
250   }
251
252   {
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);
259
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);
268   }
269   END_TEST;
270 }