8f59dd7d7c7fd5e062660bf0932d361817db8e0e
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-TextLabel.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
23 using namespace Dali;
24 using namespace Toolkit;
25
26 void dali_textlabel_startup(void)
27 {
28   test_return_value = TET_UNDEF;
29 }
30
31 void dali_textlabel_cleanup(void)
32 {
33   test_return_value = TET_PASS;
34 }
35
36 namespace
37 {
38
39 const char* const PROPERTY_NAME_RENDERING_BACKEND = "rendering-backend";
40 const char* const PROPERTY_NAME_TEXT = "text";
41 const char* const PROPERTY_NAME_FONT_FAMILY = "font-family";
42 const char* const PROPERTY_NAME_FONT_STYLE = "font-style";
43 const char* const PROPERTY_NAME_POINT_SIZE = "point-size";
44 const char* const PROPERTY_NAME_MULTI_LINE =  "multi-line";
45 const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontal-alignment";
46 const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "vertical-alignment";
47 const char* const PROPERTY_NAME_TEXT_COLOR = "text-color";
48 const char* const PROPERTY_NAME_SHADOW_OFFSET = "shadow-offset";
49 const char* const PROPERTY_NAME_SHADOW_COLOR = "shadow-color";
50 const char* const PROPERTY_NAME_UNDERLINE_ENABLED = "underline-enabled";
51 const char* const PROPERTY_NAME_UNDERLINE_COLOR = "underline-color";
52 const char* const PROPERTY_NAME_UNDERLINE_HEIGHT = "underline-height";
53
54 } // namespace
55
56 int UtcDaliToolkitTextLabelConstructorP(void)
57 {
58   ToolkitTestApplication application;
59   tet_infoline(" UtcDaliToolkitTextLabelConstructorP");
60   TextLabel textLabel;
61   DALI_TEST_CHECK( !textLabel );
62   END_TEST;
63 }
64
65 int UtcDaliToolkitTextLabelNewP(void)
66 {
67   ToolkitTestApplication application;
68   tet_infoline(" UtcDaliToolkitTextLabelNewP");
69   TextLabel textLabel = TextLabel::New( "Test Text" );
70   DALI_TEST_CHECK( textLabel );
71   END_TEST;
72 }
73
74 int UtcDaliToolkitTextLabelDownCastP(void)
75 {
76   ToolkitTestApplication application;
77   tet_infoline(" UtcDaliToolkitTextLabelDownCastP");
78   TextLabel textLabel1 = TextLabel::New();
79   BaseHandle object( textLabel1 );
80
81   TextLabel textLabel2 = TextLabel::DownCast( object );
82   DALI_TEST_CHECK( textLabel2 );
83
84   TextLabel textLabel3 = DownCast< TextLabel >( object );
85   DALI_TEST_CHECK( textLabel3 );
86   END_TEST;
87 }
88
89 int UtcDaliToolkitTextLabelDownCastN(void)
90 {
91   ToolkitTestApplication application;
92   tet_infoline(" UtcDaliToolkitTextLabelDownCastN");
93   BaseHandle uninitializedObject;
94   TextLabel textLabel1 = TextLabel::DownCast( uninitializedObject );
95   DALI_TEST_CHECK( !textLabel1 );
96
97   TextLabel textLabel2 = DownCast< TextLabel >( uninitializedObject );
98   DALI_TEST_CHECK( !textLabel2 );
99   END_TEST;
100 }
101
102 int UtcDaliToolkitTextLabelCopyConstructorP(void)
103 {
104   ToolkitTestApplication application;
105   tet_infoline(" UtcDaliToolkitTextLabelCopyConstructorP");
106   TextLabel textLabel = TextLabel::New();
107   textLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
108
109   TextLabel copy( textLabel );
110   DALI_TEST_CHECK( copy );
111   DALI_TEST_CHECK( copy.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) == textLabel.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) );
112   END_TEST;
113 }
114
115 int UtcDaliToolkitTextLabelAssignmentOperatorP(void)
116 {
117   ToolkitTestApplication application;
118   tet_infoline(" UtcDaliToolkitTextLabelAssingmentOperatorP");
119   TextLabel textLabel = TextLabel::New();
120   textLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED );
121
122   TextLabel copy = textLabel;
123   DALI_TEST_CHECK( copy );
124   DALI_TEST_CHECK( copy.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) == textLabel.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ) );
125   END_TEST;
126 }
127
128 // Positive test case for a method
129 int UtcDaliToolkitTextLabelGetPropertyP(void)
130 {
131   ToolkitTestApplication application;
132   tet_infoline(" UtcDaliToolkitTextLabelGetPropertyP");
133   TextLabel label = TextLabel::New("Test Text");
134   DALI_TEST_CHECK( label );
135
136   // Check Property Indices are correct
137   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextLabel::Property::RENDERING_BACKEND );
138   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT ) == TextLabel::Property::TEXT );
139   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextLabel::Property::FONT_FAMILY );
140   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextLabel::Property::FONT_STYLE );
141   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextLabel::Property::POINT_SIZE );
142   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_MULTI_LINE ) == TextLabel::Property::MULTI_LINE );
143   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextLabel::Property::HORIZONTAL_ALIGNMENT );
144   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextLabel::Property::VERTICAL_ALIGNMENT );
145   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT_COLOR ) == TextLabel::Property::TEXT_COLOR );
146   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW_OFFSET ) == TextLabel::Property::SHADOW_OFFSET );
147   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW_COLOR ) == TextLabel::Property::SHADOW_COLOR );
148   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_ENABLED ) == TextLabel::Property::UNDERLINE_ENABLED );
149   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_COLOR ) == TextLabel::Property::UNDERLINE_COLOR );
150   DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_HEIGHT) == TextLabel::Property::UNDERLINE_HEIGHT );
151
152   // Check label defaults are correct
153   DALI_TEST_EQUALS( label.GetProperty<int>( TextLabel::Property::RENDERING_BACKEND ), Text::RENDERING_SHARED_ATLAS, TEST_LOCATION );
154   DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ), Color::BLACK, TEST_LOCATION );
155   DALI_TEST_EQUALS( label.GetProperty<Vector2>( TextLabel::Property::SHADOW_OFFSET ), Vector2::ZERO, TEST_LOCATION );
156   DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::SHADOW_COLOR ), Color::BLACK, TEST_LOCATION );
157   DALI_TEST_EQUALS( label.GetProperty<bool>( TextLabel::Property::UNDERLINE_ENABLED ), false, TEST_LOCATION );
158   DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::UNDERLINE_HEIGHT ), 0.0f, TEST_LOCATION );
159   END_TEST;
160 }
161
162 int UtcDaliToolkitTextLabelSetPropertyP(void)
163 {
164   ToolkitTestApplication application;
165   tet_infoline(" UtcDaliToolkitTextLabelSetPropertyP");
166   TextLabel label = TextLabel::New("Test Text");
167   DALI_TEST_CHECK( label );
168
169   // Check that text can be correctly reset
170   label.SetProperty( TextLabel::Property::TEXT, "Setting Text" );
171   DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::TEXT ), "Setting Text", TEST_LOCATION );
172
173   // Check that the Alignment properties can be correctly set
174   label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
175   DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::HORIZONTAL_ALIGNMENT ), "BEGIN", TEST_LOCATION );
176   label.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "TOP" );
177   DALI_TEST_EQUALS( label.GetProperty<std::string>( TextLabel::Property::VERTICAL_ALIGNMENT ), "TOP", TEST_LOCATION );
178
179   // Check that shadow parameters can be correctly set
180   label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 3.0f, 3.0f ) );
181   DALI_TEST_EQUALS( label.GetProperty<Vector2>( TextLabel::Property::SHADOW_OFFSET ), Vector2( 3.0f, 3.0f ), TEST_LOCATION );
182   label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLUE );
183   DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::SHADOW_COLOR ), Color::BLUE, TEST_LOCATION );
184
185   // Check that underline parameters can be correctly set
186   label.SetProperty( TextLabel::Property::UNDERLINE_ENABLED, true );
187   DALI_TEST_EQUALS( label.GetProperty<bool>( TextLabel::Property::UNDERLINE_ENABLED ), true, TEST_LOCATION );
188   label.SetProperty( TextLabel::Property::UNDERLINE_COLOR, Color::RED );
189   DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::UNDERLINE_COLOR ), Color::RED, TEST_LOCATION );
190   label.SetProperty( TextLabel::Property::UNDERLINE_HEIGHT, 1.0f );
191   DALI_TEST_EQUALS( label.GetProperty<float>( TextLabel::Property::UNDERLINE_HEIGHT ), 1.0f, TEST_LOCATION );
192
193   // Check that text color can be properly set
194   label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLUE );
195   DALI_TEST_EQUALS( label.GetProperty<Vector4>( TextLabel::Property::TEXT_COLOR ), Color::BLUE, TEST_LOCATION );
196
197   // Toggle multi-line
198   label.SetProperty( TextLabel::Property::MULTI_LINE, true );
199   DALI_TEST_EQUALS( label.GetProperty<bool>( TextLabel::Property::MULTI_LINE ), true, TEST_LOCATION );
200   END_TEST;
201 }
202
203 int UtcDaliToolkitTextlabelBasicRenderP(void)
204 {
205   ToolkitTestApplication application;
206   tet_infoline(" UtcDaliToolkitTextLabelBasicRenderP");
207   TextLabel label = TextLabel::New("Test Text");
208   DALI_TEST_CHECK( label );
209
210   label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
211   label.SetProperty( TextLabel::Property::MULTI_LINE, true );
212
213   try
214   {
215     // Render some text with the basic backend
216     label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_BASIC );
217     application.SendNotification();
218     application.Render();
219   }
220   catch( ... )
221   {
222     tet_result(TET_FAIL);
223   }
224   END_TEST;
225 }
226
227 int UtcDaliToolkitTextlabelAtlasRenderP(void)
228 {
229   ToolkitTestApplication application;
230   tet_infoline(" UtcDaliToolkitTextLabelAtlasRenderP");
231   TextLabel label = TextLabel::New("Test Text");
232   DALI_TEST_CHECK( label );
233
234   // Turn on all the effects
235   label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
236   label.SetProperty( TextLabel::Property::MULTI_LINE, true );
237   label.SetProperty( TextLabel::Property::UNDERLINE_ENABLED, true );
238   label.SetProperty( TextLabel::Property::UNDERLINE_COLOR, Color::RED );
239   label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 1.0f, 1.0f ) );
240   label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLUE );
241   try
242   {
243     // Render some text with the shared atlas backend
244     label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS );
245     application.SendNotification();
246     application.Render();
247   }
248   catch( ... )
249   {
250     tet_result(TET_FAIL);
251   }
252   END_TEST;
253 }
254