Merge branch 'devel/master' into sandbox/dkdk/tizen
[platform/core/uifw/dali-adaptor.git] / automated-tests / src / dali-adaptor / utc-Dali-Key.cpp
1 /*
2  * Copyright (c) 2020 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 // EXTERNAL INCLUDES
19 #include <string.h>
20 #include <iostream>
21 #include <map>
22
23 // CLASS HEADER
24 #include <dali-test-suite-utils.h>
25 #include <dali.h>
26 #include <dali/devel-api/events/key-event-devel.h>
27 #include <stdlib.h>
28 #include <iostream>
29
30 using namespace Dali;
31
32 void utc_dali_adaptor_key_startup(void)
33 {
34   test_return_value = TET_UNDEF;
35 }
36
37 void utc_dali_adaptor_key_cleanup(void)
38 {
39   test_return_value = TET_PASS;
40 }
41
42 // Copied from key-impl.h
43 struct KeyLookup
44 {
45   const char*     keyName;      ///< XF86 key name
46   const Dali::KEY daliKeyCode;  ///< Dali key code
47   const bool      deviceButton; ///< Whether the key is from a button on the device
48 };
49
50 // Common keys for all platforms
51 KeyLookup KeyLookupTable[] =
52   {
53     {"Escape", DALI_KEY_ESCAPE, false}, // item not defined in utilX
54     {"Menu", DALI_KEY_MENU, false},     // item not defined in utilX
55
56     // Now the key names are used as literal string not defined symbols,
57     // since these definition in utilX.h is deprecated and we're guided not to use them
58     {"XF86Camera", DALI_KEY_CAMERA, false},
59     {"XF86Camera_Full", DALI_KEY_CONFIG, false},
60     {"XF86PowerOff", DALI_KEY_POWER, true},
61     {"XF86Standby", DALI_KEY_PAUSE, false},
62     {"Cancel", DALI_KEY_CANCEL, false},
63     {"XF86AudioPlay", DALI_KEY_PLAY_CD, false},
64     {"XF86AudioStop", DALI_KEY_STOP_CD, false},
65     {"XF86AudioPause", DALI_KEY_PAUSE_CD, false},
66     {"XF86AudioNext", DALI_KEY_NEXT_SONG, false},
67     {"XF86AudioPrev", DALI_KEY_PREVIOUS_SONG, false},
68     {"XF86AudioRewind", DALI_KEY_REWIND, false},
69     {"XF86AudioForward", DALI_KEY_FASTFORWARD, false},
70     {"XF86AudioMedia", DALI_KEY_MEDIA, false},
71     {"XF86AudioPlayPause", DALI_KEY_PLAY_PAUSE, false},
72     {"XF86AudioMute", DALI_KEY_MUTE, false},
73     {"XF86Menu", DALI_KEY_MENU, true},
74     {"XF86Home", DALI_KEY_HOME, true},
75     {"XF86Back", DALI_KEY_BACK, true},
76     {"XF86Send", DALI_KEY_MENU, true},
77     {"XF86Phone", DALI_KEY_HOME, true},
78     {"XF86Stop", DALI_KEY_BACK, true},
79     {"XF86HomePage", DALI_KEY_HOMEPAGE, false},
80     {"XF86WWW", DALI_KEY_WEBPAGE, false},
81     {"XF86Mail", DALI_KEY_MAIL, false},
82     {"XF86ScreenSaver", DALI_KEY_SCREENSAVER, false},
83     {"XF86MonBrightnessUp", DALI_KEY_BRIGHTNESS_UP, false},
84     {"XF86MonBrightnessDown", DALI_KEY_BRIGHTNESS_DOWN, false},
85     {"XF86SoftKBD", DALI_KEY_SOFT_KBD, false},
86     {"XF86QuickPanel", DALI_KEY_QUICK_PANEL, false},
87     {"XF86TaskPane", DALI_KEY_TASK_SWITCH, false},
88     {"XF86Apps", DALI_KEY_APPS, false},
89     {"XF86Search", DALI_KEY_SEARCH, false},
90     {"XF86Voice", DALI_KEY_VOICE, false},
91     {"Hangul", DALI_KEY_LANGUAGE, false},
92     {"XF86AudioRaiseVolume", DALI_KEY_VOLUME_UP, true},
93     {"XF86AudioLowerVolume", DALI_KEY_VOLUME_DOWN, true},
94 };
95 const std::size_t KEY_LOOKUP_COUNT = (sizeof(KeyLookupTable)) / (sizeof(KeyLookup));
96
97 // Generate a KeyPressEvent to send to Core
98 Dali::KeyEvent GenerateKeyPress(const std::string& keyName)
99 {
100   Dali::KeyEvent keyPress = DevelKeyEvent::New(keyName, "", "", -1, 0, 0lu, Dali::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE); // set name to test, key string to i and modifier to shift
101   return keyPress;
102 }
103
104 int UtcDaliKeyIsKey(void)
105 {
106   TestApplication application;
107
108   for(std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i)
109   {
110     tet_printf("Checking %s", KeyLookupTable[i].keyName);
111     DALI_TEST_CHECK(IsKey(GenerateKeyPress(KeyLookupTable[i].keyName), KeyLookupTable[i].daliKeyCode));
112   }
113   END_TEST;
114 }
115
116 int UtcDaliKeyIsKeyNegative(void)
117 {
118   TestApplication application;
119
120   // Random value
121   DALI_TEST_CHECK(IsKey(GenerateKeyPress("invalid-key-name"), DALI_KEY_MUTE) == false);
122
123   // Compare with another key value
124   for(std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i)
125   {
126     tet_printf("Checking %s", KeyLookupTable[i].keyName);
127     DALI_TEST_CHECK(IsKey(GenerateKeyPress(KeyLookupTable[i].keyName), KeyLookupTable[(i + 1) % KEY_LOOKUP_COUNT].daliKeyCode) == false);
128   }
129   END_TEST;
130 }