ea611ac5c8982fcef5247708922c43361e5fc442
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-unmanaged / 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 #include <stdlib.h>
19 #include <dali-toolkit-test-suite-utils.h>
20 #include <dali-toolkit/dali-toolkit.h>
21 #include <dali/integration-api/events/touch-event-integ.h>
22
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( 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.push_back( MIN_BOUND + ( static_cast<float>(i) / ( NUM_MARKS - 1) ) * ( MAX_BOUND - MIN_BOUND ) );
137   }
138   slider.SetProperty( slider.GetPropertyIndex( Slider::MARKS_PROPERTY_NAME ), marks );
139   slider.SetProperty( slider.GetPropertyIndex( Slider::MARK_TOLERANCE_PROPERTY_NAME ), 0.1f );
140
141   slider.ValueChangedSignal().Connect( &OnSliderValueChanged );
142   slider.MarkSignal().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 }