Added new test harness
[platform/core/uifw/dali-adaptor.git] / automated-tests / TET / dali-test-suite / key / utc-Dali-Key.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 // EXTERNAL INCLUDES
18 #include <utilX.h>
19 #include <map>
20 #include <string.h>
21 #include <iostream>
22
23 // CLASS HEADER
24 #include <adaptors/tizen/internal/common/key-impl.h>
25 #include <dali/public-api/events/key-event.h>
26
27 #include <dali/public-api/dali-core.h>
28
29 #include <stdlib.h>
30 #include <tet_api.h>
31
32 #include <dali/dali.h>
33 #include <iostream>
34
35 #include <dali-test-suite-utils.h>
36
37 using namespace Dali;
38
39 static void Startup();
40 static void Cleanup();
41
42 extern "C" {
43   void (*tet_startup)() = Startup;
44   void (*tet_cleanup)() = Cleanup;
45 }
46
47 #define MAX_NUMBER_OF_TESTS 10000
48 extern "C" {
49   struct tet_testlist tet_testlist[MAX_NUMBER_OF_TESTS];
50 }
51
52 enum {
53   POSITIVE_TC_IDX = 0x01,
54   NEGATIVE_TC_IDX,
55 };
56
57 // Add test functionality for all APIs in the class (Positive and Negative)
58 TEST_FUNCTION( UtcDaliKeyIsKey,                 POSITIVE_TC_IDX );
59 TEST_FUNCTION( UtcDaliKeyIsKeyNegative,         NEGATIVE_TC_IDX );
60 TEST_FUNCTION( UtcDaliKeyIsDeviceButton,        POSITIVE_TC_IDX );
61
62 // Copied from key-impl.cpp
63 struct KeyLookup
64 {
65   const char* keyName;      ///< X string representation
66   const int   daliKeyCode;  ///< Dali Enum Representation
67   const bool  deviceButton; ///< Whether the key is from a button on the device
68 };
69
70 // Taken from key-impl.cpp
71 KeyLookup KeyLookupTable[]=
72 {
73   // KeyName                DALi Equivalent           true if device key
74   { "Escape",               DALI_KEY_ESCAPE,          false },
75   { "Menu",                 DALI_KEY_MENU,            false },
76   { KEY_CAMERA,             DALI_KEY_CAMERA,          false },
77   { KEY_CONFIG,             DALI_KEY_CONFIG,          false },
78   { KEY_POWER,              DALI_KEY_POWER,           true  },
79   { KEY_PAUSE,              DALI_KEY_PAUSE,           false },
80   { KEY_CANCEL,             DALI_KEY_CANCEL,          false },
81   { KEY_PLAYCD,             DALI_KEY_PLAY_CD,         false },
82   { KEY_STOPCD,             DALI_KEY_STOP_CD,         false },
83   { KEY_PAUSECD,            DALI_KEY_PAUSE_CD,        false },
84   { KEY_NEXTSONG,           DALI_KEY_NEXT_SONG,       false },
85   { KEY_PREVIOUSSONG,       DALI_KEY_PREVIOUS_SONG,   false },
86   { KEY_REWIND,             DALI_KEY_REWIND,          false },
87   { KEY_FASTFORWARD,        DALI_KEY_FASTFORWARD,     false },
88   { KEY_MEDIA,              DALI_KEY_MEDIA,           false },
89   { KEY_PLAYPAUSE,          DALI_KEY_PLAY_PAUSE,      false },
90   { KEY_MUTE,               DALI_KEY_MUTE,            false },
91   { KEY_SEND,               DALI_KEY_SEND,            true  },
92   { KEY_SELECT,             DALI_KEY_SELECT,          true  },
93   { KEY_END,                DALI_KEY_END,             true  },
94   { KEY_MENU,               DALI_KEY_MENU,            true  },
95   { KEY_HOME,               DALI_KEY_HOME,            true  },
96   { KEY_BACK,               DALI_KEY_BACK,            true  },
97   { KEY_HOMEPAGE,           DALI_KEY_HOMEPAGE,        false },
98   { KEY_WEBPAGE,            DALI_KEY_WEBPAGE,         false },
99   { KEY_MAIL,               DALI_KEY_MAIL,            false },
100   { KEY_SCREENSAVER,        DALI_KEY_SCREENSAVER,     false },
101   { KEY_BRIGHTNESSUP,       DALI_KEY_BRIGHTNESS_UP,   false },
102   { KEY_BRIGHTNESSDOWN,     DALI_KEY_BRIGHTNESS_DOWN, false },
103   { KEY_SOFTKBD,            DALI_KEY_SOFT_KBD,        false },
104   { KEY_QUICKPANEL,         DALI_KEY_QUICK_PANEL,     false },
105   { KEY_TASKSWITCH,         DALI_KEY_TASK_SWITCH,     false },
106   { KEY_APPS,               DALI_KEY_APPS,            false },
107   { KEY_SEARCH,             DALI_KEY_SEARCH,          false },
108   { KEY_VOICE,              DALI_KEY_VOICE,           false },
109   { KEY_LANGUAGE,           DALI_KEY_LANGUAGE,        false },
110   { KEY_VOLUMEUP,           DALI_KEY_VOLUME_UP,       true  },
111   { KEY_VOLUMEDOWN,         DALI_KEY_VOLUME_DOWN,     true  },
112 };
113 const std::size_t KEY_LOOKUP_COUNT = (sizeof( KeyLookupTable))/ (sizeof(KeyLookup));
114
115 // Called only once before first test is run.
116 static void Startup()
117 {
118 }
119
120 // Called only once after last test is run
121 static void Cleanup()
122 {
123 }
124
125 // Generate a KeyPressEvent to send to Core
126 Dali::KeyEvent GenerateKeyPress( const std::string& keyName )
127 {
128   KeyEvent keyPress;
129   keyPress.keyPressedName = keyName;
130   return keyPress;
131 }
132
133 void UtcDaliKeyIsKey()
134 {
135   TestApplication application;
136
137   for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
138   {
139     tet_printf( "Checking %s", KeyLookupTable[i].keyName );
140     DALI_TEST_CHECK( IsKey( GenerateKeyPress( KeyLookupTable[i].keyName ), KeyLookupTable[i].daliKeyCode ) );
141   }
142 }
143
144 void UtcDaliKeyIsKeyNegative()
145 {
146   TestApplication application;
147
148   // Random value
149   DALI_TEST_CHECK( IsKey( GenerateKeyPress( "invalid-key-name" ), DALI_KEY_MUTE ) == false );
150
151   // Compare with another key value
152   for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
153   {
154     tet_printf( "Checking %s", KeyLookupTable[i].keyName );
155     DALI_TEST_CHECK( IsKey( GenerateKeyPress( KeyLookupTable[i].keyName ), KeyLookupTable[ ( i + 1 ) % KEY_LOOKUP_COUNT ].daliKeyCode ) == false );
156   }
157 }
158
159 void UtcDaliKeyIsDeviceButton()
160 {
161   TestApplication application;
162
163   for ( std::size_t i = 0; i < KEY_LOOKUP_COUNT; ++i )
164   {
165     tet_printf( "Checking %s", KeyLookupTable[i].keyName );
166     DALI_TEST_CHECK( Dali::Internal::Adaptor::KeyLookup::IsDeviceButton( KeyLookupTable[i].keyName ) == KeyLookupTable[i].deviceButton );
167   }
168 }