[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Accessibility-Value.cpp
1 /**
2  * Copyright (c) 2017 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 // Need to override adaptor classes for toolkit test harness, so include
19 // test harness headers before dali headers.
20 #include <dali-toolkit-test-suite-utils.h>
21
22 #include <dali.h>
23 #include <dali/devel-api/common/stage.h>
24 #include <dali-toolkit/dali-toolkit.h>
25
26 #include <dali/devel-api/adaptor-framework/accessibility.h>
27 #include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
28 #include <dali/devel-api/atspi-interfaces/accessible.h>
29 #include <dali/devel-api/atspi-interfaces/component.h>
30 #include <dali/devel-api/atspi-interfaces/value.h>
31
32 #include <dali-toolkit/devel-api/controls/scroll-bar/scroll-bar.h>
33
34 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h>
35 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
36
37 using namespace Dali::Accessibility;
38
39 void utc_dali_toolkit_accessibility_value_startup(void)
40 {
41   test_return_value = TET_UNDEF;
42   DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
43 }
44
45 void utc_dali_toolkit_accessibility_value_cleanup(void)
46 {
47   test_return_value = TET_PASS;
48 }
49
50 int utcDaliAccessibilityProgressBarGetMinimum(void)
51 {
52   ToolkitTestApplication application;
53
54   Toolkit::ProgressBar progress_bar = Toolkit::ProgressBar::New();
55   auto q = Dali::Accessibility::Accessible::Get( progress_bar );
56   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
57   DALI_TEST_CHECK( x );
58   DALI_TEST_EQUALS( x->GetMinimum(), 0.0, TEST_LOCATION );
59
60   END_TEST;
61 }
62
63 int utcDaliAccessibilityProgressBarGetMaximum(void)
64 {
65   ToolkitTestApplication application;
66
67   Toolkit::ProgressBar progress_bar = Toolkit::ProgressBar::New();
68   auto q = Dali::Accessibility::Accessible::Get( progress_bar );
69   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
70   DALI_TEST_CHECK( x );
71   DALI_TEST_EQUALS( x->GetMaximum(), 1.0, TEST_LOCATION );
72
73   END_TEST;
74 }
75
76 int utcDaliAccessibilityProgressBarGetMinimumIncrement(void)
77 {
78   ToolkitTestApplication application;
79
80   Toolkit::ProgressBar progress_bar = Toolkit::ProgressBar::New();
81   auto q = Dali::Accessibility::Accessible::Get(progress_bar);
82   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
83   DALI_TEST_CHECK( x );
84   DALI_TEST_EQUALS( x->GetMinimumIncrement(), 0.0, TEST_LOCATION );
85
86   END_TEST;
87 }
88
89 int utcDaliAccessibilityProgressBarGetSetCurrent(void)
90 {
91   ToolkitTestApplication application;
92   Dali::Accessibility::TestEnableSC(true);
93
94   Toolkit::ProgressBar progress_bar = Toolkit::ProgressBar::New();
95   auto q = Dali::Accessibility::Accessible::Get(progress_bar);
96   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
97   DALI_TEST_CHECK( x );
98   DALI_TEST_CHECK(Dali::Accessibility::Component::DownCast(q)->GrabHighlight());
99   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
100   DALI_TEST_EQUALS( x->SetCurrent( 2.0 ), false, TEST_LOCATION );
101   DALI_TEST_EQUALS( x->SetCurrent( 0.25 ), true, TEST_LOCATION );
102   DALI_TEST_EQUALS( x->GetCurrent(), 0.25, TEST_LOCATION );
103   DALI_TEST_EQUALS( x->GetValueText().empty(), true, TEST_LOCATION ); // not implemented
104
105   Dali::Accessibility::TestEnableSC(false);
106   END_TEST;
107 }
108
109 int utcDaliAccessibilityScrollBarGetMinimum(void)
110 {
111   ToolkitTestApplication application;
112
113   // Create a source actor that owns the scroll properties required by the scroll bar
114   Actor sourceActor = Actor::New();
115   Stage::GetCurrent().Add( sourceActor );
116
117   // Register the scroll properties
118   Property::Index propertyScrollPosition = sourceActor.RegisterProperty( "sourcePosition",  0.0f );
119   Property::Index propertyMinScrollPosition = sourceActor.RegisterProperty( "sourcePositionMin",   10.0f );
120   Property::Index propertyMaxScrollPosition = sourceActor.RegisterProperty( "sourcePositionMax",   100.0f );
121   Property::Index propertyScrollContentSize = sourceActor.RegisterProperty( "sourceContentSize",   500.0f );
122
123   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
124
125   scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
126
127   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
128   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
129   DALI_TEST_CHECK( x );
130   DALI_TEST_EQUALS( x->GetMinimum(), 10.0, TEST_LOCATION );
131
132   END_TEST;
133 }
134
135 int utcDaliAccessibilityScrollBarGetMaximum(void)
136 {
137   ToolkitTestApplication application;
138
139   // Create a source actor that owns the scroll properties required by the scroll bar
140   Actor sourceActor = Actor::New();
141   Stage::GetCurrent().Add( sourceActor );
142
143   // Register the scroll properties
144   Property::Index propertyScrollPosition = sourceActor.RegisterProperty( "sourcePosition",  0.0f );
145   Property::Index propertyMinScrollPosition = sourceActor.RegisterProperty( "sourcePositionMin",   0.0f );
146   Property::Index propertyMaxScrollPosition = sourceActor.RegisterProperty( "sourcePositionMax",   100.0f );
147   Property::Index propertyScrollContentSize = sourceActor.RegisterProperty( "sourceContentSize",   500.0f );
148
149   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
150
151   scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
152
153   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
154   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
155   DALI_TEST_CHECK( x );
156   DALI_TEST_EQUALS( x->GetMaximum(), 100.0, TEST_LOCATION );
157
158   END_TEST;
159 }
160
161 int utcDaliAccessibilityScrollBarGetMinimumIncrement(void)
162 {
163   ToolkitTestApplication application;
164
165   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
166   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
167   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
168   DALI_TEST_CHECK( x );
169   DALI_TEST_EQUALS( x->GetMinimumIncrement(), 1.0, TEST_LOCATION );
170
171   END_TEST;
172 }
173
174 int utcDaliAccessibilityScrollBarGetSetCurrent(void)
175 {
176   ToolkitTestApplication application;
177   Dali::Accessibility::TestEnableSC(true);
178
179   // Create a source actor that owns the scroll properties required by the scroll bar
180   Actor sourceActor = Actor::New();
181   Stage::GetCurrent().Add( sourceActor );
182
183   // Register the scroll properties
184   Property::Index propertyScrollPosition = sourceActor.RegisterProperty( "sourcePosition",  0.0f );
185   Property::Index propertyMinScrollPosition = sourceActor.RegisterProperty( "sourcePositionMin",   0.0f );
186   Property::Index propertyMaxScrollPosition = sourceActor.RegisterProperty( "sourcePositionMax",   100.0f );
187   Property::Index propertyScrollContentSize = sourceActor.RegisterProperty( "sourceContentSize",   500.0f );
188
189   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
190
191   scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
192
193   //sourceActor.SetProperty(propertyScrollPosition, 20.0f);
194
195   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
196   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
197   DALI_TEST_CHECK( x );
198   DALI_TEST_CHECK(Dali::Accessibility::Component::DownCast(q)->GrabHighlight());
199   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
200   DALI_TEST_EQUALS( x->SetCurrent( 1000.0 ), false, TEST_LOCATION );
201   DALI_TEST_EQUALS( x->SetCurrent( 50.0 ), false, TEST_LOCATION );
202   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
203   DALI_TEST_EQUALS( x->GetValueText().empty(), true, TEST_LOCATION ); // not implemented
204
205   Dali::Accessibility::TestEnableSC(false);
206   END_TEST;
207 }
208
209 int utcDaliAccessibilitySliderGetMinimum(void)
210 {
211   ToolkitTestApplication application;
212
213   Toolkit::Slider slider = Toolkit::Slider::New();
214   auto q = Dali::Accessibility::Accessible::Get(slider);
215   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
216   DALI_TEST_CHECK( x );
217   DALI_TEST_EQUALS( x->GetMinimum(), 0.0, TEST_LOCATION );
218
219   END_TEST;
220 }
221
222 int utcDaliAccessibilitySliderGetMaximum(void)
223 {
224   ToolkitTestApplication application;
225
226   Toolkit::Slider slider = Toolkit::Slider::New();
227   auto q = Dali::Accessibility::Accessible::Get(slider);
228   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
229   DALI_TEST_CHECK( x );
230   DALI_TEST_EQUALS( x->GetMaximum(), 1.0, TEST_LOCATION );
231
232   END_TEST;
233 }
234
235 int utcDaliAccessibilitySliderGetMinimumIncrement(void)
236 {
237   ToolkitTestApplication application;
238
239   Toolkit::Slider slider = Toolkit::Slider::New();
240   auto q = Dali::Accessibility::Accessible::Get(slider);
241   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
242   DALI_TEST_CHECK( x );
243   DALI_TEST_EQUALS<float>( x->GetMinimumIncrement(), 0.0, TEST_LOCATION );
244
245   END_TEST;
246 }
247
248 int utcDaliAccessibilitySliderGetSetCurrent(void)
249 {
250   ToolkitTestApplication application;
251   Dali::Accessibility::TestEnableSC(true);
252
253   Toolkit::Slider slider = Toolkit::Slider::New();
254   auto q = Dali::Accessibility::Accessible::Get(slider);
255   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
256   DALI_TEST_CHECK( x );
257   DALI_TEST_CHECK(Dali::Accessibility::Component::DownCast(q)->GrabHighlight());
258   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
259   DALI_TEST_EQUALS( x->SetCurrent( 2.0 ), false, TEST_LOCATION );
260   DALI_TEST_EQUALS( x->SetCurrent( 0.25 ), true, TEST_LOCATION );
261   DALI_TEST_EQUALS( x->GetCurrent(), 0.25, TEST_LOCATION );
262   DALI_TEST_EQUALS( x->GetValueText().empty(), true, TEST_LOCATION ); // not implemented
263
264   const float MIN_BOUND = 0.0f;
265   const float MAX_BOUND = 1.0f;
266   const int NUM_MARKS = 5;
267   Property::Array marks;
268   for( int i = 0; i < NUM_MARKS; ++i )
269   {
270     marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
271   }
272   slider.SetProperty( Toolkit::Slider::Property::MARKS, marks );
273   // when current value is not a mark, set new value to the closest mark
274   DALI_TEST_CHECK( x->SetCurrent( 0.1f ) );
275   slider.SetProperty( Toolkit::Slider::Property::SNAP_TO_MARKS, true );
276   DALI_TEST_CHECK( x->SetCurrent( 0.7f ) );
277   DALI_TEST_EQUALS( static_cast<float>( x->GetCurrent() ), marks[3].Get<float>(), TEST_LOCATION );
278   // when current value is a mark at index i set new value to the mark at index i +/- 1
279   // depending if the new value is greater/less than current value
280   DALI_TEST_CHECK( x->SetCurrent( 0.2f ) );
281   DALI_TEST_EQUALS( static_cast<float>( x->GetCurrent() ),  marks[2].Get<float>(), TEST_LOCATION );
282
283   Dali::Accessibility::TestEnableSC(false);
284   END_TEST;
285 }