(Slider) Update slider properties to new property system
[platform/core/uifw/dali-toolkit.git] / automated-tests / TET / dali-test-suite / slider / utc-Dali-Slider.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 #include <iostream>
18
19 #include <stdlib.h>
20 #include <tet_api.h>
21
22 #include <dali/public-api/dali-core.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali/integration-api/events/touch-event-integ.h>
25 #include <dali-toolkit/public-api/controls/slider/slider.h>
26
27 #include <dali-toolkit-test-suite-utils.h>
28
29 using namespace Dali;
30 using namespace Dali::Toolkit;
31
32 static void Startup();
33 static void Cleanup();
34
35 extern "C" {
36   void (*tet_startup)() = Startup;
37   void (*tet_cleanup)() = Cleanup;
38 }
39
40 static void UtcDaliSliderNew();
41 static void UtcDaliSliderDestructor();
42 static void UtcDaliSliderDownCast();
43 static void UtcDaliSliderSignals();
44
45 enum {
46   POSITIVE_TC_IDX = 0x01,
47   NEGATIVE_TC_IDX,
48 };
49
50 // Add test functionality for all APIs in the class (Positive and Negative)
51 extern "C" {
52   struct tet_testlist tet_testlist[] = {
53     { UtcDaliSliderNew, POSITIVE_TC_IDX },
54     { UtcDaliSliderDestructor, POSITIVE_TC_IDX },
55     { UtcDaliSliderDownCast, POSITIVE_TC_IDX },
56     { UtcDaliSliderSignals, POSITIVE_TC_IDX },
57     { NULL, 0 }
58   };
59 }
60
61 // Called only once before first test is run.
62 static void Startup()
63 {
64 }
65
66 // Called only once after last test is run
67 static void Cleanup()
68 {
69 }
70
71 static bool gObjectCreatedCallBackCalled;
72
73 static void TestCallback(BaseHandle handle)
74 {
75   gObjectCreatedCallBackCalled = true;
76 }
77
78 static void UtcDaliSliderNew()
79 {
80   ToolkitTestApplication application;
81   tet_infoline(" UtcDaliSliderNew");
82
83   // Create the Slider actor
84   Slider slider;
85
86   DALI_TEST_CHECK( !slider );
87
88   slider = Slider::New();
89
90   DALI_TEST_CHECK( slider );
91
92   Slider slider2(slider);
93
94   DALI_TEST_CHECK( slider2 == slider );
95
96   //Additional check to ensure object is created by checking if it's registered
97   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
98   DALI_TEST_CHECK( registry );
99
100   gObjectCreatedCallBackCalled = false;
101   registry.ObjectCreatedSignal().Connect( &TestCallback );
102   {
103     Slider slider = Slider::New();
104   }
105   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
106 }
107
108 static void UtcDaliSliderDestructor()
109 {
110   ToolkitTestApplication application;
111
112   Slider* slider = new Slider();
113   delete slider;
114
115   DALI_TEST_CHECK( true );
116 }
117
118 static void UtcDaliSliderDownCast()
119 {
120   ToolkitTestApplication application;
121
122   Handle handle = Slider::New();
123
124   Slider slider = Slider::DownCast( handle );
125
126   DALI_TEST_CHECK( slider == handle );
127 }
128
129 static bool gSliderValueChangedCallBackCalled;
130 static bool OnSliderValueChanged( Slider slider, float value )
131 {
132   gSliderValueChangedCallBackCalled = true;
133   return true;
134 }
135
136 static bool gSliderMarkCallBackCalled;
137 static bool OnSliderMark( Slider slider, int value )
138 {
139   gSliderMarkCallBackCalled = true;
140   return true;
141 }
142
143 static void UtcDaliSliderSignals()
144 {
145   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
146   tet_infoline(" UtcDaliSliderSignals");
147
148   // Create the Popup actor
149   Slider slider = Slider::New();
150   Stage::GetCurrent().Add( slider );
151   slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
152   slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
153   slider.SetSize( Stage::GetCurrent().GetSize().x, 20.0f );
154   slider.SetPosition( 0.0f, 0.0f );
155
156   const float MIN_BOUND = 0.0f;
157   const float MAX_BOUND = 1.0f;
158   const int NUM_MARKS = 5;
159   Property::Array marks;
160   for( int i = 0; i < NUM_MARKS; ++i )
161   {
162     marks.push_back( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
163   }
164   slider.SetProperty( Slider::MARKS_PROPERTY, marks );
165   slider.SetProperty( Slider::MARK_TOLERANCE_PROPERTY, 0.1f );
166
167   slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
168   slider.MarkSignal().Connect( &OnSliderMark );
169
170   application.SendNotification();
171   application.Render();
172
173   gSliderValueChangedCallBackCalled = false;
174   gSliderMarkCallBackCalled = false;
175
176   Dali::Integration::TouchEvent event;
177
178   event = Dali::Integration::TouchEvent();
179
180   const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 10.0f );
181   event.AddPoint( pointDown );
182
183   for( int i = 0; i < 5; ++i )
184   {
185     const Dali::TouchPoint pointDown( 0, TouchPoint::Motion, 10.0f + i * 10.0f, 10.0f );
186     event.AddPoint( pointDown );
187   }
188
189   const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 50.0f, 10.0f );
190   event.AddPoint( pointUp );
191
192   application.ProcessEvent( event );
193
194   application.SendNotification();
195   application.Render();
196
197   DALI_TEST_CHECK(gSliderValueChangedCallBackCalled);
198   DALI_TEST_CHECK(gSliderMarkCallBackCalled);
199 }