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