Moved Slider to the public API
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-Slider.cpp
1 /*
2  * Copyright (c) 2014 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 #include <iostream>
19 #include <stdlib.h>
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali/integration-api/events/touch-event-integ.h>
23
24 using namespace Dali;
25 using namespace Dali::Toolkit;
26
27 void dali_slider_startup(void)
28 {
29   test_return_value = TET_UNDEF;
30 }
31
32 void dali_slider_cleanup(void)
33 {
34   test_return_value = TET_PASS;
35 }
36
37 namespace
38 {
39
40 static bool gObjectCreatedCallBackCalled;
41
42 static void TestCallback(BaseHandle handle)
43 {
44   gObjectCreatedCallBackCalled = true;
45 }
46
47 }
48
49 int UtcDaliSliderNew(void)
50 {
51   ToolkitTestApplication application;
52   tet_infoline(" UtcDaliSliderNew");
53
54   // Create the Slider actor
55   Slider slider;
56
57   DALI_TEST_CHECK( !slider );
58
59   slider = Slider::New();
60
61   DALI_TEST_CHECK( slider );
62
63   Slider slider2(slider);
64
65   DALI_TEST_CHECK( slider2 == slider );
66
67   //Additional check to ensure object is created by checking if it's registered
68   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
69   DALI_TEST_CHECK( registry );
70
71   gObjectCreatedCallBackCalled = false;
72   registry.ObjectCreatedSignal().Connect( &TestCallback );
73   {
74     Slider slider = Slider::New();
75   }
76   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
77   END_TEST;
78 }
79
80 int UtcDaliSliderDestructor(void)
81 {
82   ToolkitTestApplication application;
83
84   Slider* slider = new Slider();
85   delete slider;
86
87   DALI_TEST_CHECK( true );
88   END_TEST;
89 }
90
91 int UtcDaliSliderDownCast(void)
92 {
93   ToolkitTestApplication application;
94
95   Handle handle = Slider::New();
96
97   Slider slider = Slider::DownCast( handle );
98
99   DALI_TEST_CHECK( slider == handle );
100   END_TEST;
101 }
102
103 static bool gSliderValueChangedCallBackCalled;
104 static bool OnSliderValueChanged( Slider slider, float value )
105 {
106   gSliderValueChangedCallBackCalled = true;
107   return true;
108 }
109
110 static bool gSliderMarkCallBackCalled;
111 static bool OnSliderMark( Slider slider, int value )
112 {
113   gSliderMarkCallBackCalled = true;
114   return true;
115 }
116
117 int UtcDaliSliderSignals(void)
118 {
119   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
120   tet_infoline(" UtcDaliSliderSignals");
121
122   // Create the Popup actor
123   Slider slider = Slider::New();
124   Stage::GetCurrent().Add( slider );
125   slider.SetParentOrigin(ParentOrigin::TOP_LEFT);
126   slider.SetAnchorPoint(ParentOrigin::TOP_LEFT);
127   slider.SetSize( Vector2( Stage::GetCurrent().GetSize().x, 20.0f ) );
128   slider.SetPosition( 0.0f, 0.0f );
129
130   const float MIN_BOUND = 0.0f;
131   const float MAX_BOUND = 1.0f;
132   const int NUM_MARKS = 5;
133   Property::Array marks;
134   for( int i = 0; i < NUM_MARKS; ++i )
135   {
136     marks.PushBack( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
137   }
138   slider.SetProperty( Slider::Property::MARKS, marks );
139   slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f );
140
141   slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
142   slider.MarkReachedSignal().Connect( &OnSliderMark );
143
144   application.SendNotification();
145   application.Render();
146
147   gSliderValueChangedCallBackCalled = false;
148   gSliderMarkCallBackCalled = false;
149
150   Dali::Integration::TouchEvent event;
151
152   event = Dali::Integration::TouchEvent();
153
154   const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 10.0f );
155   event.AddPoint( pointDown );
156
157   for( int i = 0; i < 5; ++i )
158   {
159     const Dali::TouchPoint pointDown( 0, TouchPoint::Motion, 10.0f + i * 10.0f, 10.0f );
160     event.AddPoint( pointDown );
161   }
162
163   const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 50.0f, 10.0f );
164   event.AddPoint( pointUp );
165
166   application.ProcessEvent( event );
167
168   application.SendNotification();
169   application.Render();
170
171   DALI_TEST_CHECK(gSliderValueChangedCallBackCalled);
172   DALI_TEST_CHECK(gSliderMarkCallBackCalled);
173   END_TEST;
174 }