Sync UTC with text shape method.
[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
100   END_TEST;
101 }
102
103 int utcDaliAccessibilityScrollBarGetMinimum(void)
104 {
105   ToolkitTestApplication application;
106
107   // Create a source actor that owns the scroll properties required by the scroll bar
108   Actor sourceActor = Actor::New();
109   Stage::GetCurrent().Add( sourceActor );
110
111   // Register the scroll properties
112   Property::Index propertyScrollPosition = sourceActor.RegisterProperty( "sourcePosition",  0.0f );
113   Property::Index propertyMinScrollPosition = sourceActor.RegisterProperty( "sourcePositionMin",   10.0f );
114   Property::Index propertyMaxScrollPosition = sourceActor.RegisterProperty( "sourcePositionMax",   100.0f );
115   Property::Index propertyScrollContentSize = sourceActor.RegisterProperty( "sourceContentSize",   500.0f );
116
117   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
118
119   scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
120
121   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
122   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
123   DALI_TEST_CHECK( x );
124   DALI_TEST_EQUALS( x->GetMinimum(), 10.0, TEST_LOCATION );
125
126   END_TEST;
127 }
128
129 int utcDaliAccessibilityScrollBarGetMaximum(void)
130 {
131   ToolkitTestApplication application;
132
133   // Create a source actor that owns the scroll properties required by the scroll bar
134   Actor sourceActor = Actor::New();
135   Stage::GetCurrent().Add( sourceActor );
136
137   // Register the scroll properties
138   Property::Index propertyScrollPosition = sourceActor.RegisterProperty( "sourcePosition",  0.0f );
139   Property::Index propertyMinScrollPosition = sourceActor.RegisterProperty( "sourcePositionMin",   0.0f );
140   Property::Index propertyMaxScrollPosition = sourceActor.RegisterProperty( "sourcePositionMax",   100.0f );
141   Property::Index propertyScrollContentSize = sourceActor.RegisterProperty( "sourceContentSize",   500.0f );
142
143   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
144
145   scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
146
147   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
148   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
149   DALI_TEST_CHECK( x );
150   DALI_TEST_EQUALS( x->GetMaximum(), 100.0, TEST_LOCATION );
151
152   END_TEST;
153 }
154
155 int utcDaliAccessibilityScrollBarGetMinimumIncrement(void)
156 {
157   ToolkitTestApplication application;
158
159   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
160   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
161   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
162   DALI_TEST_CHECK( x );
163   DALI_TEST_EQUALS( x->GetMinimumIncrement(), 1.0, TEST_LOCATION );
164
165   END_TEST;
166 }
167
168 int utcDaliAccessibilityScrollBarGetSetCurrent(void)
169 {
170   ToolkitTestApplication application;
171
172   // Create a source actor that owns the scroll properties required by the scroll bar
173   Actor sourceActor = Actor::New();
174   Stage::GetCurrent().Add( sourceActor );
175
176   // Register the scroll properties
177   Property::Index propertyScrollPosition = sourceActor.RegisterProperty( "sourcePosition",  0.0f );
178   Property::Index propertyMinScrollPosition = sourceActor.RegisterProperty( "sourcePositionMin",   0.0f );
179   Property::Index propertyMaxScrollPosition = sourceActor.RegisterProperty( "sourcePositionMax",   100.0f );
180   Property::Index propertyScrollContentSize = sourceActor.RegisterProperty( "sourceContentSize",   500.0f );
181
182   Toolkit::ScrollBar scroll_bar = Toolkit::ScrollBar::New();
183
184   scroll_bar.SetScrollPropertySource(sourceActor, propertyScrollPosition, propertyMinScrollPosition, propertyMaxScrollPosition, propertyScrollContentSize);
185
186   //sourceActor.SetProperty(propertyScrollPosition, 20.0f);
187
188   auto q = Dali::Accessibility::Accessible::Get(scroll_bar);
189   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
190   DALI_TEST_CHECK( x );
191   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
192   DALI_TEST_EQUALS( x->SetCurrent( 1000.0 ), false, TEST_LOCATION );
193   DALI_TEST_EQUALS( x->SetCurrent( 50.0 ), false, TEST_LOCATION );
194   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
195
196   END_TEST;
197 }
198
199 int utcDaliAccessibilitySliderGetMinimum(void)
200 {
201   ToolkitTestApplication application;
202
203   Toolkit::Slider slider = Toolkit::Slider::New();
204   auto q = Dali::Accessibility::Accessible::Get(slider);
205   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
206   DALI_TEST_CHECK( x );
207   DALI_TEST_EQUALS( x->GetMinimum(), 0.0, TEST_LOCATION );
208
209   END_TEST;
210 }
211
212 int utcDaliAccessibilitySliderGetMaximum(void)
213 {
214   ToolkitTestApplication application;
215
216   Toolkit::Slider slider = Toolkit::Slider::New();
217   auto q = Dali::Accessibility::Accessible::Get(slider);
218   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
219   DALI_TEST_CHECK( x );
220   DALI_TEST_EQUALS( x->GetMaximum(), 1.0, TEST_LOCATION );
221
222   END_TEST;
223 }
224
225 int utcDaliAccessibilitySliderGetMinimumIncrement(void)
226 {
227   ToolkitTestApplication application;
228
229   Toolkit::Slider slider = Toolkit::Slider::New();
230   auto q = Dali::Accessibility::Accessible::Get(slider);
231   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
232   DALI_TEST_CHECK( x );
233   DALI_TEST_EQUALS<float>( x->GetMinimumIncrement(), 0.0, TEST_LOCATION );
234
235   END_TEST;
236 }
237
238 int utcDaliAccessibilitySliderGetSetCurrent(void)
239 {
240   ToolkitTestApplication application;
241
242   Toolkit::Slider slider = Toolkit::Slider::New();
243   auto q = Dali::Accessibility::Accessible::Get(slider);
244   auto x = dynamic_cast< Dali::Accessibility::Value* >( q );
245   DALI_TEST_CHECK( x );
246   DALI_TEST_EQUALS( x->GetCurrent(), 0.0, TEST_LOCATION );
247   DALI_TEST_EQUALS( x->SetCurrent( 2.0 ), false, TEST_LOCATION );
248   DALI_TEST_EQUALS( x->SetCurrent( 0.25 ), true, TEST_LOCATION );
249   DALI_TEST_EQUALS( x->GetCurrent(), 0.25, TEST_LOCATION );
250
251   const float MIN_BOUND = 0.0f;
252   const float MAX_BOUND = 1.0f;
253   const int NUM_MARKS = 5;
254   Property::Array marks;
255   for( int i = 0; i < NUM_MARKS; ++i )
256   {
257     marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
258   }
259   slider.SetProperty( Toolkit::Slider::Property::MARKS, marks );
260   // when current value is not a mark, set new value to the closest mark
261   DALI_TEST_CHECK( x->SetCurrent( 0.1f ) );
262   slider.SetProperty( Toolkit::Slider::Property::SNAP_TO_MARKS, true );
263   DALI_TEST_CHECK( x->SetCurrent( 0.7f ) );
264   DALI_TEST_EQUALS( static_cast<float>( x->GetCurrent() ), marks[3].Get<float>(), TEST_LOCATION );
265   // when current value is a mark at index i set new value to the mark at index i +/- 1
266   // depending if the new value is greater/less than current value
267   DALI_TEST_CHECK( x->SetCurrent( 0.2f ) );
268   DALI_TEST_EQUALS( static_cast<float>( x->GetCurrent() ),  marks[2].Get<float>(), TEST_LOCATION );
269   END_TEST;
270 }