2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 // http://floralicense.org/license/
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.
22 #include <dali/public-api/dali-core.h>
24 #include <dali-test-suite-utils.h>
28 static void Startup();
29 static void Cleanup();
32 void (*tet_startup)() = Startup;
33 void (*tet_cleanup)() = Cleanup;
37 POSITIVE_TC_IDX = 0x01,
41 #define MAX_NUMBER_OF_TESTS 10000
43 struct tet_testlist tet_testlist[MAX_NUMBER_OF_TESTS];
46 TEST_FUNCTION( UtcDaliTextStyleDefaultConstructor, POSITIVE_TC_IDX );
47 TEST_FUNCTION( UtcDaliTextStyleCopyConstructor, POSITIVE_TC_IDX );
48 TEST_FUNCTION( UtcDaliTextStyleComparisonOperator, POSITIVE_TC_IDX );
49 TEST_FUNCTION( UtcDaliTextStyleCopy, POSITIVE_TC_IDX );
50 TEST_FUNCTION( UtcDaliTextStyleSetGetFontName, POSITIVE_TC_IDX );
51 TEST_FUNCTION( UtcDaliTextStyleSetGetFontStyle, POSITIVE_TC_IDX );
52 TEST_FUNCTION( UtcDaliTextStyleSetGetFontPointSize, POSITIVE_TC_IDX );
53 TEST_FUNCTION( UtcDaliTextStyleSetGetWeight, POSITIVE_TC_IDX );
54 TEST_FUNCTION( UtcDaliTextStyleSetGetTextColor, POSITIVE_TC_IDX );
55 TEST_FUNCTION( UtcDaliTextStyleSetGetItalics, POSITIVE_TC_IDX );
56 TEST_FUNCTION( UtcDaliTextStyleSetGetItalicsAngle, POSITIVE_TC_IDX );
57 TEST_FUNCTION( UtcDaliTextStyleSetGetUnderline, POSITIVE_TC_IDX );
58 TEST_FUNCTION( UtcDaliTextStyleSetGetShadow, POSITIVE_TC_IDX );
59 TEST_FUNCTION( UtcDaliTextStyleSetGetGlow, POSITIVE_TC_IDX );
60 TEST_FUNCTION( UtcDaliTextStyleSetGetOutline, POSITIVE_TC_IDX );
61 TEST_FUNCTION( UtcDaliTextStyleSetGetSmoothEdge, POSITIVE_TC_IDX );
64 static const std::string FONT_FAMILY="Arial";
65 static const std::string FONT_STYLE="Bold";
66 static const PointSize FONT_POINT=PointSize(12.f);
67 static const TextStyle::Weight FONT_TEXT_STYLE_WEIGHT = TextStyle::EXTRALIGHT;
69 static const Vector4 FONT_TEXT_COLOR = Color::RED;
70 static const Degree FONT_ITALICS_ANGLE(10.f);
71 static const bool FONT_ITALICS = true;
72 static const bool FONT_UNDERLINE = true;
73 static const bool FONT_SHADOW = true;
74 static const bool FONT_GLOW = true;
75 static const bool FONT_OUTLINE = true;
76 static const float FONT_UNDERLINE_THICKNESS = 5.0f;
77 static const float FONT_UNDERLINE_POSITION = 60.0f;
78 static const Vector4 FONT_SHADOW_COLOR = Color::BLUE;
79 static const Vector2 FONT_SHADOW_OFFSET(2.f, 2.f );
80 static const float FONT_SHADOW_SIZE = 55.f;
81 static const Vector4 FONT_TEXT_GLOW_COLOR = Color::BLACK;
82 static const float FONT_GLOW_INTENSITY = 10.0f;
83 static const float FONT_SMOOTH_EDGE = 5.0f;
84 static const Vector4 FONT_OUTLINE_COLOR = Color::MAGENTA;
85 static const Vector2 FONT_OUTLINE_THICKNESS(15.f, 14.f );
88 // Called only once before first test is run.
93 // Called only once after last test is run
98 static void UtcDaliTextStyleDefaultConstructor()
100 tet_infoline(" UtcDaliTextStyleDefaultConstructor ");
102 TestApplication application;
104 TextStyle defaultStyle;
106 DALI_TEST_CHECK( defaultStyle.GetFontName().empty() );
107 DALI_TEST_CHECK( PointSize( 0.f ) == defaultStyle.GetFontPointSize() );
108 DALI_TEST_CHECK( TextStyle::REGULAR == defaultStyle.GetWeight() );
109 DALI_TEST_CHECK( Color::WHITE == defaultStyle.GetTextColor() );
110 DALI_TEST_CHECK( !defaultStyle.GetItalics() );
112 DALI_TEST_CHECK( !defaultStyle.GetUnderline() );
113 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_UNDERLINE_THICKNESS - defaultStyle.GetUnderlineThickness() ) < GetRangedEpsilon( TextStyle::DEFAULT_UNDERLINE_THICKNESS, defaultStyle.GetUnderlineThickness() ) );
114 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_UNDERLINE_POSITION - defaultStyle.GetUnderlinePosition() ) < GetRangedEpsilon( TextStyle::DEFAULT_UNDERLINE_POSITION, defaultStyle.GetUnderlinePosition() ) );
116 DALI_TEST_CHECK( TextStyle::DEFAULT_ITALICS_ANGLE == defaultStyle.GetItalicsAngle() );
117 DALI_TEST_CHECK( TextStyle::DEFAULT_SHADOW_COLOR == defaultStyle.GetShadowColor() );
118 DALI_TEST_CHECK( TextStyle::DEFAULT_GLOW_COLOR == defaultStyle.GetGlowColor() );
119 DALI_TEST_CHECK( TextStyle::DEFAULT_OUTLINE_COLOR == defaultStyle.GetOutlineColor() );
121 DALI_TEST_CHECK( TextStyle::DEFAULT_SHADOW_OFFSET == defaultStyle.GetShadowOffset() );
122 DALI_TEST_CHECK( TextStyle::DEFAULT_OUTLINE_THICKNESS == defaultStyle.GetOutlineThickness() );
123 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_GLOW_INTENSITY - defaultStyle.GetGlowIntensity() ) < GetRangedEpsilon( TextStyle::DEFAULT_GLOW_INTENSITY, defaultStyle.GetGlowIntensity() ) );
124 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_SMOOTH_EDGE_DISTANCE_FIELD - defaultStyle.GetSmoothEdge() ) < GetRangedEpsilon( TextStyle::DEFAULT_SMOOTH_EDGE_DISTANCE_FIELD, defaultStyle.GetSmoothEdge() ) );
127 static void UtcDaliTextStyleCopyConstructor()
129 tet_infoline(" UtcDaliTextStyleCopyConstructor ");
131 TestApplication application;
133 const std::string fontName( "Arial" );
134 const std::string fontStyle( "Book" );
137 style.SetFontName( fontName );
138 style.SetFontStyle( fontStyle );
139 style.SetFontPointSize( PointSize( 16.f ) );
140 style.SetWeight( TextStyle::EXTRABLACK );
141 style.SetTextColor( Color::BLUE );
142 style.SetItalics( true );
143 style.SetUnderline( true );
144 style.SetItalicsAngle( Degree( 15.f ) );
145 style.SetUnderlineThickness( 3.5f );
146 style.SetUnderlinePosition( 12.f );
147 style.SetShadow( true, Color::RED, Vector2( 0.5f, 0.5f ), TextStyle::DEFAULT_SHADOW_SIZE );
148 style.SetGlow( true, Color::GREEN, 0.75f );
149 style.SetSmoothEdge( 0.8f );
150 style.SetOutline( true, Color::BLUE, Vector2( 0.9f, 0.9f ) );
152 TextStyle style1( style );
153 TextStyle style2 = style;
155 DALI_TEST_CHECK( fontName == style1.GetFontName() );
156 DALI_TEST_CHECK( fontStyle == style.GetFontStyle() );
157 DALI_TEST_CHECK( PointSize( 16.f ) == style1.GetFontPointSize() );
158 DALI_TEST_CHECK( TextStyle::EXTRABLACK == style1.GetWeight() );
159 DALI_TEST_CHECK( Vector4( 0.f, 0.f, 1.f, 1.f ) == style1.GetTextColor() );
160 DALI_TEST_CHECK( style1.GetItalics() );
161 DALI_TEST_CHECK( style1.GetUnderline() );
163 DALI_TEST_CHECK( Degree( 15.f ) == style1.GetItalicsAngle() );
164 DALI_TEST_CHECK( Color::RED == style1.GetShadowColor() );
165 DALI_TEST_CHECK( Color::GREEN == style1.GetGlowColor() );
166 DALI_TEST_CHECK( Color::BLUE == style1.GetOutlineColor() );
168 DALI_TEST_CHECK( Vector2( 0.5f, 0.5f ) == style1.GetShadowOffset() );
169 DALI_TEST_CHECK( Vector2( 0.9f, 0.9f ) == style1.GetOutlineThickness() );
170 DALI_TEST_CHECK( fabs( 0.75f - style1.GetGlowIntensity() ) < GetRangedEpsilon( 0.75f, style1.GetGlowIntensity() ) );
171 DALI_TEST_CHECK( fabs( 0.8f - style1.GetSmoothEdge() ) < GetRangedEpsilon( 0.8f, style1.GetSmoothEdge() ) );
173 DALI_TEST_CHECK( fontName == style2.GetFontName() );
174 DALI_TEST_CHECK( PointSize( 16.f ) == style2.GetFontPointSize() );
175 DALI_TEST_CHECK( TextStyle::EXTRABLACK == style2.GetWeight() );
176 DALI_TEST_CHECK( Vector4( 0.f, 0.f, 1.f, 1.f ) == style2.GetTextColor() );
177 DALI_TEST_CHECK( style2.GetItalics() );
179 DALI_TEST_CHECK( style2.GetUnderline() );
180 DALI_TEST_CHECK( fabs( 3.5f - style2.GetUnderlineThickness() ) < GetRangedEpsilon( 3.5f, style2.GetUnderlineThickness() ) );
181 DALI_TEST_CHECK( fabs( 12.f - style2.GetUnderlinePosition() ) < GetRangedEpsilon( 12.f, style2.GetUnderlinePosition() ) );
183 DALI_TEST_CHECK( Color::RED == style2.GetShadowColor() );
184 DALI_TEST_CHECK( Color::GREEN == style2.GetGlowColor() );
185 DALI_TEST_CHECK( Color::BLUE == style2.GetOutlineColor() );
187 DALI_TEST_CHECK( Vector2( 0.5f, 0.5f ) == style2.GetShadowOffset() );
188 DALI_TEST_CHECK( Vector2( 0.9f, 0.9f ) == style2.GetOutlineThickness() );
189 DALI_TEST_CHECK( fabs( 0.75f - style2.GetGlowIntensity() ) < GetRangedEpsilon( 0.75f, style2.GetGlowIntensity() ) );
190 DALI_TEST_CHECK( fabs( 0.8f - style2.GetSmoothEdge() ) < GetRangedEpsilon( 0.8f, style2.GetSmoothEdge() ) );
193 static void UtcDaliTextStyleComparisonOperator()
195 tet_infoline(" UtcDaliTextStyleComparisonOperator ");
197 TestApplication application;
202 const std::string fontName( "Arial" );
204 style1.SetFontName( fontName );
205 DALI_TEST_CHECK( style1 != style2 );
207 style2.SetFontName( fontName );
208 DALI_TEST_CHECK( style1 == style2 );
211 static void UtcDaliTextStyleCopy()
213 tet_infoline(" UtcDaliTextStyleCopy ");
215 TestApplication application;
219 // Set a style different than default.
221 style2.SetFontName( "Arial" );
222 style2.SetFontStyle( "Bold" );
223 style2.SetFontPointSize( PointSize( 24.f ) );
224 style2.SetWeight( TextStyle::BOLD );
225 style2.SetTextColor( Color::RED );
226 style2.SetItalics( true );
227 style2.SetUnderline( true );
228 style2.SetItalicsAngle( Degree( 15.f ) );
229 style2.SetUnderlineThickness( 3.5f );
230 style2.SetUnderlinePosition( 12.f );
231 style2.SetShadow( true, Color::GREEN, Vector2( 0.5f, 0.5f ), 0.5f );
232 style2.SetGlow( true, Color::BLUE, 0.5f );
233 style2.SetSmoothEdge( 0.5f );
234 style2.SetOutline( true, Color::WHITE, Vector2( 0.05f, 0.5f ) );
238 // All values are copied.
239 style.Copy( style2 );
241 DALI_TEST_CHECK( style == style2 );
246 style.Copy( style2, TextStyle::FONT );
248 DALI_TEST_CHECK( style.GetFontName() != "" );
253 style.Copy( style2, TextStyle::STYLE );
255 DALI_TEST_CHECK( style.GetFontStyle() != "" );
260 style.Copy( style2, TextStyle::SIZE );
262 DALI_TEST_CHECK( style.GetFontPointSize() > 0.f );
267 style.Copy( style2, TextStyle::WEIGHT );
269 DALI_TEST_CHECK( style.GetWeight() != TextStyle::REGULAR );
270 DALI_TEST_CHECK( fabsf( style.GetSmoothEdge() - TextStyle::DEFAULT_SMOOTH_EDGE_DISTANCE_FIELD ) > Math::MACHINE_EPSILON_1000 );
275 style.Copy( style2, TextStyle::COLOR );
277 DALI_TEST_CHECK( style.GetTextColor() != TextStyle::DEFAULT_TEXT_COLOR );
282 style.Copy( style2, TextStyle::ITALICS );
284 DALI_TEST_CHECK( style.GetItalics() );
285 DALI_TEST_CHECK( Degree( 15.f ) == style.GetItalicsAngle() );
290 style.Copy( style2, TextStyle::UNDERLINE );
292 DALI_TEST_CHECK( style.GetUnderline() );
293 DALI_TEST_CHECK( fabs( 3.5f - style.GetUnderlineThickness() ) < GetRangedEpsilon( 3.5f, style.GetUnderlineThickness() ) );
294 DALI_TEST_CHECK( fabs( 12.f - style.GetUnderlinePosition() ) < GetRangedEpsilon( 12.f, style.GetUnderlinePosition() ) );
299 style.Copy( style2, TextStyle::SHADOW );
301 DALI_TEST_CHECK( style.GetShadow() );
302 DALI_TEST_CHECK( style.GetShadowColor() != TextStyle::DEFAULT_SHADOW_COLOR );
303 DALI_TEST_CHECK( style.GetShadowOffset() != TextStyle::DEFAULT_SHADOW_OFFSET );
304 DALI_TEST_CHECK( fabsf( style.GetShadowSize() - TextStyle::DEFAULT_SHADOW_SIZE ) > Math::MACHINE_EPSILON_1000 );
309 style.Copy( style2, TextStyle::GLOW );
311 DALI_TEST_CHECK( style.GetGlow() );
312 DALI_TEST_CHECK( style.GetGlowColor() != TextStyle::DEFAULT_GLOW_COLOR );
313 DALI_TEST_CHECK( fabsf( style.GetGlowIntensity() - TextStyle::DEFAULT_GLOW_INTENSITY ) > Math::MACHINE_EPSILON_1000 );
318 style.Copy( style2, TextStyle::OUTLINE );
320 DALI_TEST_CHECK( style.GetOutline() );
321 DALI_TEST_CHECK( style.GetOutlineColor() != TextStyle::DEFAULT_OUTLINE_COLOR );
322 DALI_TEST_CHECK( style.GetOutlineThickness() != TextStyle::DEFAULT_OUTLINE_THICKNESS );
325 static void UtcDaliTextStyleSetGetFontName()
327 tet_infoline(" UtcDaliTextStyleSetGetFontName ");
329 TestApplication application;
333 const std::string fontName( "Arial" );
334 style.SetFontName( fontName );
336 DALI_TEST_CHECK( fontName == style.GetFontName() );
339 static void UtcDaliTextStyleSetGetFontStyle()
341 tet_infoline(" UtcDaliTextStyleSetGetFontStyle ");
343 TestApplication application;
347 const std::string fontStyle( "Book" );
348 style.SetFontStyle( fontStyle );
350 DALI_TEST_CHECK( fontStyle == style.GetFontStyle() );
353 static void UtcDaliTextStyleSetGetFontPointSize()
355 tet_infoline(" UtcDaliTextStyleSetGetFontPointSize ");
357 TestApplication application;
361 style.SetFontPointSize( PointSize( 16.f ) );
363 DALI_TEST_CHECK( PointSize( 16.f ) == style.GetFontPointSize() );
366 static void UtcDaliTextStyleSetGetWeight()
368 tet_infoline(" UtcDaliTextStyleSetGetWeight ");
370 TestApplication application;
374 style.SetWeight( TextStyle::EXTRABLACK );
376 DALI_TEST_CHECK( TextStyle::EXTRABLACK == style.GetWeight() );
379 static void UtcDaliTextStyleSetGetTextColor()
381 tet_infoline(" UtcDaliTextStyleSetGetTextColor ");
383 TestApplication application;
387 style.SetTextColor( Color::GREEN );
389 DALI_TEST_CHECK( Vector4( 0.f, 1.f, 0.f, 1.f ) == style.GetTextColor() );
392 static void UtcDaliTextStyleSetGetItalics()
394 tet_infoline(" UtcDaliTextStyleSetGetItalics ");
396 TestApplication application;
400 style.SetItalics( true );
402 DALI_TEST_CHECK( style.GetItalics() );
404 style.SetItalics( false );
406 DALI_TEST_CHECK( !style.GetItalics() );
409 static void UtcDaliTextStyleSetGetItalicsAngle()
411 tet_infoline(" UtcDaliTextStyleSetGetItalicsAngle ");
413 TestApplication application;
417 DALI_TEST_CHECK( TextStyle::DEFAULT_ITALICS_ANGLE == style.GetItalicsAngle() );
419 style.SetItalicsAngle( Degree( 15.f ) );
421 DALI_TEST_CHECK( Degree( 15.f ) == style.GetItalicsAngle() );
424 static void UtcDaliTextStyleSetGetUnderline()
426 tet_infoline(" UtcDaliTextStyleSetGetUnderline ");
428 TestApplication application;
432 style.SetUnderline( true );
434 DALI_TEST_CHECK( style.GetUnderline() );
436 style.SetUnderline( false );
438 DALI_TEST_CHECK( !style.GetUnderline() );
440 style.SetUnderlineThickness( 3.5f );
441 style.SetUnderlinePosition( 12.f );
443 DALI_TEST_CHECK( fabs( 3.5f - style.GetUnderlineThickness() ) < GetRangedEpsilon( 3.5f, style.GetUnderlineThickness() ) );
444 DALI_TEST_CHECK( fabs( 12.f - style.GetUnderlinePosition() ) < GetRangedEpsilon( 12.f, style.GetUnderlinePosition() ) );
447 static void UtcDaliTextStyleSetGetShadow()
449 tet_infoline(" UtcDaliTextStyleSetGetShadow ");
451 TestApplication application;
455 DALI_TEST_CHECK( !style.GetShadow() );
457 style.SetShadow( true );
459 DALI_TEST_CHECK( style.GetShadow() );
461 style.SetShadow( true, Color::RED, Vector2( 0.5f, 0.5f ) );
463 DALI_TEST_EQUALS( style.GetShadowColor(), Color::RED, TEST_LOCATION );
464 DALI_TEST_CHECK( Vector2( 0.5f, 0.5f ) == style.GetShadowOffset() );
466 style.SetShadow( false );
468 DALI_TEST_CHECK( !style.GetShadow() );
471 static void UtcDaliTextStyleSetGetGlow()
473 tet_infoline(" UtcDaliTextStyleSetGetGlow ");
475 TestApplication application;
479 DALI_TEST_CHECK( !style.GetGlow() );
481 style.SetGlow( true );
483 DALI_TEST_CHECK( style.GetGlow() );
485 style.SetGlow( true, Color::RED, 0.75f );
487 DALI_TEST_EQUALS( style.GetGlowColor(), Color::RED, TEST_LOCATION );
488 DALI_TEST_CHECK( fabs( 0.75f - style.GetGlowIntensity() ) < GetRangedEpsilon( 0.75f, style.GetGlowIntensity() ) );
490 style.SetGlow( false );
492 DALI_TEST_CHECK( !style.GetGlow() );
495 static void UtcDaliTextStyleSetGetOutline()
497 tet_infoline(" UtcDaliTextStyleSetGetGlow ");
499 TestApplication application;
503 DALI_TEST_CHECK( !style.GetOutline() );
505 style.SetOutline( true );
507 DALI_TEST_CHECK( style.GetOutline() );
509 style.SetOutline( true, Color::RED, Vector2( 0.9f, 0.9f ) );
511 DALI_TEST_EQUALS( style.GetOutlineColor(), Color::RED, TEST_LOCATION );
512 DALI_TEST_CHECK( Vector2( 0.9f, 0.9f ) == style.GetOutlineThickness() );
514 style.SetOutline( false );
516 DALI_TEST_CHECK( !style.GetOutline() );
519 static void UtcDaliTextStyleSetGetSmoothEdge()
521 tet_infoline(" UtcDaliTextStyleSetGetGlow ");
523 TestApplication application;
527 style.SetSmoothEdge( 0.5f );
529 DALI_TEST_CHECK( fabs( 0.5f - style.GetSmoothEdge() ) < GetRangedEpsilon( 0.5f, style.GetSmoothEdge() ) );