2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
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>
23 #include <dali/devel-api/common/stage.h>
24 #include <dali-toolkit/dali-toolkit.h>
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>
32 #include <dali-toolkit/devel-api/controls/scroll-bar/scroll-bar.h>
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>
37 using namespace Dali::Accessibility;
39 void utc_dali_toolkit_accessibility_value_startup(void)
41 test_return_value = TET_UNDEF;
42 DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
45 void utc_dali_toolkit_accessibility_value_cleanup(void)
47 test_return_value = TET_PASS;
50 int utcDaliAccessibilityProgressBarGetMinimum(void)
52 ToolkitTestApplication application;
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 );
58 DALI_TEST_EQUALS( x->GetMinimum(), 0.0, TEST_LOCATION );
63 int utcDaliAccessibilityProgressBarGetMaximum(void)
65 ToolkitTestApplication application;
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 );
71 DALI_TEST_EQUALS( x->GetMaximum(), 1.0, TEST_LOCATION );
76 int utcDaliAccessibilityProgressBarGetMinimumIncrement(void)
78 ToolkitTestApplication application;
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 );
84 DALI_TEST_EQUALS( x->GetMinimumIncrement(), 0.0, TEST_LOCATION );
89 int utcDaliAccessibilityProgressBarGetSetCurrent(void)
91 ToolkitTestApplication application;
92 Dali::Accessibility::TestEnableSC(true);
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 );
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
105 Dali::Accessibility::TestEnableSC(false);
109 int utcDaliAccessibilityScrollBarGetMinimum(void)
111 ToolkitTestApplication application;
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 );
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 );
123 Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
125 scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
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 );
135 int utcDaliAccessibilityScrollBarGetMaximum(void)
137 ToolkitTestApplication application;
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 );
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 );
149 Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
151 scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
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 );
161 int utcDaliAccessibilityScrollBarGetMinimumIncrement(void)
163 ToolkitTestApplication application;
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 );
174 int utcDaliAccessibilityScrollBarGetSetCurrent(void)
176 ToolkitTestApplication application;
177 Dali::Accessibility::TestEnableSC(true);
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 );
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 );
189 Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
191 scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
193 //sourceActor.SetProperty(propertyScrollPosition, 20.0f);
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
205 Dali::Accessibility::TestEnableSC(false);
209 int utcDaliAccessibilitySliderGetMinimum(void)
211 ToolkitTestApplication application;
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 );
222 int utcDaliAccessibilitySliderGetMaximum(void)
224 ToolkitTestApplication application;
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 );
235 int utcDaliAccessibilitySliderGetMinimumIncrement(void)
237 ToolkitTestApplication application;
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 );
248 int utcDaliAccessibilitySliderGetSetCurrent(void)
250 ToolkitTestApplication application;
251 Dali::Accessibility::TestEnableSC(true);
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
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 )
270 marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
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 );
283 Dali::Accessibility::TestEnableSC(false);