2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <dali/dali.h>
22 #include <dali-test-suite-utils.h>
26 void utc_dali_text_style_startup(void)
28 test_return_value = TET_UNDEF;
31 void utc_dali_text_style_cleanup(void)
33 test_return_value = TET_PASS;
39 static const std::string FONT_FAMILY="Arial";
40 static const std::string FONT_STYLE="Bold";
41 static const PointSize FONT_POINT=PointSize(12.f);
42 static const TextStyle::Weight FONT_TEXT_STYLE_WEIGHT = TextStyle::EXTRALIGHT;
44 static const Vector4 FONT_TEXT_COLOR = Color::RED;
45 static const Degree FONT_ITALICS_ANGLE(10.f);
46 static const bool FONT_ITALICS = true;
47 static const bool FONT_UNDERLINE = true;
48 static const bool FONT_SHADOW = true;
49 static const bool FONT_GLOW = true;
50 static const bool FONT_OUTLINE = true;
51 static const float FONT_UNDERLINE_THICKNESS = 5.0f;
52 static const float FONT_UNDERLINE_POSITION = 60.0f;
53 static const Vector4 FONT_SHADOW_COLOR = Color::BLUE;
54 static const Vector2 FONT_SHADOW_OFFSET(2.f, 2.f );
55 static const float FONT_SHADOW_SIZE = 55.f;
56 static const Vector4 FONT_TEXT_GLOW_COLOR = Color::BLACK;
57 static const float FONT_GLOW_INTENSITY = 10.0f;
58 static const float FONT_SMOOTH_EDGE = 5.0f;
59 static const Vector4 FONT_OUTLINE_COLOR = Color::MAGENTA;
60 static const Vector2 FONT_OUTLINE_THICKNESS(15.f, 14.f );
64 int UtcDaliTextStyleDefaultConstructor(void)
66 tet_infoline(" UtcDaliTextStyleDefaultConstructor ");
68 TestApplication application;
70 TextStyle defaultStyle;
72 DALI_TEST_CHECK( defaultStyle.GetFontName().empty() );
73 DALI_TEST_CHECK( PointSize( 0.f ) == defaultStyle.GetFontPointSize() );
74 DALI_TEST_CHECK( TextStyle::REGULAR == defaultStyle.GetWeight() );
75 DALI_TEST_CHECK( Color::WHITE == defaultStyle.GetTextColor() );
76 DALI_TEST_CHECK( !defaultStyle.GetItalics() );
78 DALI_TEST_CHECK( !defaultStyle.GetUnderline() );
79 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_UNDERLINE_THICKNESS - defaultStyle.GetUnderlineThickness() ) < GetRangedEpsilon( TextStyle::DEFAULT_UNDERLINE_THICKNESS, defaultStyle.GetUnderlineThickness() ) );
80 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_UNDERLINE_POSITION - defaultStyle.GetUnderlinePosition() ) < GetRangedEpsilon( TextStyle::DEFAULT_UNDERLINE_POSITION, defaultStyle.GetUnderlinePosition() ) );
82 DALI_TEST_CHECK( TextStyle::DEFAULT_ITALICS_ANGLE == defaultStyle.GetItalicsAngle() );
83 DALI_TEST_CHECK( TextStyle::DEFAULT_SHADOW_COLOR == defaultStyle.GetShadowColor() );
84 DALI_TEST_CHECK( TextStyle::DEFAULT_GLOW_COLOR == defaultStyle.GetGlowColor() );
85 DALI_TEST_CHECK( TextStyle::DEFAULT_OUTLINE_COLOR == defaultStyle.GetOutlineColor() );
87 DALI_TEST_CHECK( TextStyle::DEFAULT_SHADOW_OFFSET == defaultStyle.GetShadowOffset() );
88 DALI_TEST_CHECK( TextStyle::DEFAULT_OUTLINE_THICKNESS == defaultStyle.GetOutlineThickness() );
89 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_GLOW_INTENSITY - defaultStyle.GetGlowIntensity() ) < GetRangedEpsilon( TextStyle::DEFAULT_GLOW_INTENSITY, defaultStyle.GetGlowIntensity() ) );
90 DALI_TEST_CHECK( fabs( TextStyle::DEFAULT_SMOOTH_EDGE_DISTANCE_FIELD - defaultStyle.GetSmoothEdge() ) < GetRangedEpsilon( TextStyle::DEFAULT_SMOOTH_EDGE_DISTANCE_FIELD, defaultStyle.GetSmoothEdge() ) );
94 int UtcDaliTextStyleCopyConstructor(void)
96 tet_infoline(" UtcDaliTextStyleCopyConstructor ");
98 TestApplication application;
100 const std::string fontName( "Arial" );
101 const std::string fontStyle( "Book" );
104 style.SetFontName( fontName );
105 style.SetFontStyle( fontStyle );
106 style.SetFontPointSize( PointSize( 16.f ) );
107 style.SetWeight( TextStyle::EXTRABLACK );
108 style.SetTextColor( Color::BLUE );
109 style.SetItalics( true );
110 style.SetUnderline( true );
111 style.SetItalicsAngle( Degree( 15.f ) );
112 style.SetUnderlineThickness( 3.5f );
113 style.SetUnderlinePosition( 12.f );
114 style.SetShadow( true, Color::RED, Vector2( 0.5f, 0.5f ), TextStyle::DEFAULT_SHADOW_SIZE );
115 style.SetGlow( true, Color::GREEN, 0.75f );
116 style.SetSmoothEdge( 0.8f );
117 style.SetOutline( true, Color::BLUE, Vector2( 0.9f, 0.9f ) );
119 TextStyle style1( style );
120 TextStyle style2 = style;
122 DALI_TEST_CHECK( fontName == style1.GetFontName() );
123 DALI_TEST_CHECK( fontStyle == style.GetFontStyle() );
124 DALI_TEST_CHECK( PointSize( 16.f ) == style1.GetFontPointSize() );
125 DALI_TEST_CHECK( TextStyle::EXTRABLACK == style1.GetWeight() );
126 DALI_TEST_CHECK( Vector4( 0.f, 0.f, 1.f, 1.f ) == style1.GetTextColor() );
127 DALI_TEST_CHECK( style1.GetItalics() );
128 DALI_TEST_CHECK( style1.GetUnderline() );
130 DALI_TEST_CHECK( Degree( 15.f ) == style1.GetItalicsAngle() );
131 DALI_TEST_CHECK( Color::RED == style1.GetShadowColor() );
132 DALI_TEST_CHECK( Color::GREEN == style1.GetGlowColor() );
133 DALI_TEST_CHECK( Color::BLUE == style1.GetOutlineColor() );
135 DALI_TEST_CHECK( Vector2( 0.5f, 0.5f ) == style1.GetShadowOffset() );
136 DALI_TEST_CHECK( Vector2( 0.9f, 0.9f ) == style1.GetOutlineThickness() );
137 DALI_TEST_CHECK( fabs( 0.75f - style1.GetGlowIntensity() ) < GetRangedEpsilon( 0.75f, style1.GetGlowIntensity() ) );
138 DALI_TEST_CHECK( fabs( 0.8f - style1.GetSmoothEdge() ) < GetRangedEpsilon( 0.8f, style1.GetSmoothEdge() ) );
140 DALI_TEST_CHECK( fontName == style2.GetFontName() );
141 DALI_TEST_CHECK( PointSize( 16.f ) == style2.GetFontPointSize() );
142 DALI_TEST_CHECK( TextStyle::EXTRABLACK == style2.GetWeight() );
143 DALI_TEST_CHECK( Vector4( 0.f, 0.f, 1.f, 1.f ) == style2.GetTextColor() );
144 DALI_TEST_CHECK( style2.GetItalics() );
146 DALI_TEST_CHECK( style2.GetUnderline() );
147 DALI_TEST_CHECK( fabs( 3.5f - style2.GetUnderlineThickness() ) < GetRangedEpsilon( 3.5f, style2.GetUnderlineThickness() ) );
148 DALI_TEST_CHECK( fabs( 12.f - style2.GetUnderlinePosition() ) < GetRangedEpsilon( 12.f, style2.GetUnderlinePosition() ) );
150 DALI_TEST_CHECK( Color::RED == style2.GetShadowColor() );
151 DALI_TEST_CHECK( Color::GREEN == style2.GetGlowColor() );
152 DALI_TEST_CHECK( Color::BLUE == style2.GetOutlineColor() );
154 DALI_TEST_CHECK( Vector2( 0.5f, 0.5f ) == style2.GetShadowOffset() );
155 DALI_TEST_CHECK( Vector2( 0.9f, 0.9f ) == style2.GetOutlineThickness() );
156 DALI_TEST_CHECK( fabs( 0.75f - style2.GetGlowIntensity() ) < GetRangedEpsilon( 0.75f, style2.GetGlowIntensity() ) );
157 DALI_TEST_CHECK( fabs( 0.8f - style2.GetSmoothEdge() ) < GetRangedEpsilon( 0.8f, style2.GetSmoothEdge() ) );
161 int UtcDaliTextStyleComparisonOperator(void)
163 tet_infoline(" UtcDaliTextStyleComparisonOperator ");
165 TestApplication application;
170 const std::string fontName( "Arial" );
172 style1.SetFontName( fontName );
173 DALI_TEST_CHECK( style1 != style2 );
175 style2.SetFontName( fontName );
176 DALI_TEST_CHECK( style1 == style2 );
180 int UtcDaliTextStyleCopy(void)
182 tet_infoline(" UtcDaliTextStyleCopy ");
184 TestApplication application;
188 // Set a style different than default.
190 style2.SetFontName( "Arial" );
191 style2.SetFontStyle( "Bold" );
192 style2.SetFontPointSize( PointSize( 24.f ) );
193 style2.SetWeight( TextStyle::BOLD );
194 style2.SetTextColor( Color::RED );
195 style2.SetItalics( true );
196 style2.SetUnderline( true );
197 style2.SetItalicsAngle( Degree( 15.f ) );
198 style2.SetUnderlineThickness( 3.5f );
199 style2.SetUnderlinePosition( 12.f );
200 style2.SetShadow( true, Color::GREEN, Vector2( 0.5f, 0.5f ), 0.5f );
201 style2.SetGlow( true, Color::BLUE, 0.5f );
202 style2.SetSmoothEdge( 0.5f );
203 style2.SetOutline( true, Color::WHITE, Vector2( 0.05f, 0.5f ) );
207 // All values are copied.
208 style.Copy( style2 );
210 DALI_TEST_CHECK( style == style2 );
215 style.Copy( style2, TextStyle::FONT );
217 DALI_TEST_CHECK( style.GetFontName() != "" );
222 style.Copy( style2, TextStyle::STYLE );
224 DALI_TEST_CHECK( style.GetFontStyle() != "" );
229 style.Copy( style2, TextStyle::SIZE );
231 DALI_TEST_CHECK( style.GetFontPointSize() > 0.f );
236 style.Copy( style2, TextStyle::WEIGHT );
238 DALI_TEST_CHECK( style.GetWeight() != TextStyle::REGULAR );
239 DALI_TEST_CHECK( fabsf( style.GetSmoothEdge() - TextStyle::DEFAULT_SMOOTH_EDGE_DISTANCE_FIELD ) > Math::MACHINE_EPSILON_1000 );
244 style.Copy( style2, TextStyle::COLOR );
246 DALI_TEST_CHECK( style.GetTextColor() != TextStyle::DEFAULT_TEXT_COLOR );
251 style.Copy( style2, TextStyle::ITALICS );
253 DALI_TEST_CHECK( style.GetItalics() );
254 DALI_TEST_CHECK( Degree( 15.f ) == style.GetItalicsAngle() );
259 style.Copy( style2, TextStyle::UNDERLINE );
261 DALI_TEST_CHECK( style.GetUnderline() );
262 DALI_TEST_CHECK( fabs( 3.5f - style.GetUnderlineThickness() ) < GetRangedEpsilon( 3.5f, style.GetUnderlineThickness() ) );
263 DALI_TEST_CHECK( fabs( 12.f - style.GetUnderlinePosition() ) < GetRangedEpsilon( 12.f, style.GetUnderlinePosition() ) );
268 style.Copy( style2, TextStyle::SHADOW );
270 DALI_TEST_CHECK( style.GetShadow() );
271 DALI_TEST_CHECK( style.GetShadowColor() != TextStyle::DEFAULT_SHADOW_COLOR );
272 DALI_TEST_CHECK( style.GetShadowOffset() != TextStyle::DEFAULT_SHADOW_OFFSET );
273 DALI_TEST_CHECK( fabsf( style.GetShadowSize() - TextStyle::DEFAULT_SHADOW_SIZE ) > Math::MACHINE_EPSILON_1000 );
278 style.Copy( style2, TextStyle::GLOW );
280 DALI_TEST_CHECK( style.GetGlow() );
281 DALI_TEST_CHECK( style.GetGlowColor() != TextStyle::DEFAULT_GLOW_COLOR );
282 DALI_TEST_CHECK( fabsf( style.GetGlowIntensity() - TextStyle::DEFAULT_GLOW_INTENSITY ) > Math::MACHINE_EPSILON_1000 );
287 style.Copy( style2, TextStyle::OUTLINE );
289 DALI_TEST_CHECK( style.GetOutline() );
290 DALI_TEST_CHECK( style.GetOutlineColor() != TextStyle::DEFAULT_OUTLINE_COLOR );
291 DALI_TEST_CHECK( style.GetOutlineThickness() != TextStyle::DEFAULT_OUTLINE_THICKNESS );
295 int UtcDaliTextStyleSetGetFontName(void)
297 tet_infoline(" UtcDaliTextStyleSetGetFontName ");
299 TestApplication application;
303 const std::string fontName( "Arial" );
304 style.SetFontName( fontName );
306 DALI_TEST_CHECK( fontName == style.GetFontName() );
310 int UtcDaliTextStyleSetGetFontStyle(void)
312 tet_infoline(" UtcDaliTextStyleSetGetFontStyle ");
314 TestApplication application;
318 const std::string fontStyle( "Book" );
319 style.SetFontStyle( fontStyle );
321 DALI_TEST_CHECK( fontStyle == style.GetFontStyle() );
325 int UtcDaliTextStyleSetGetFontPointSize(void)
327 tet_infoline(" UtcDaliTextStyleSetGetFontPointSize ");
329 TestApplication application;
333 style.SetFontPointSize( PointSize( 16.f ) );
335 DALI_TEST_CHECK( PointSize( 16.f ) == style.GetFontPointSize() );
339 int UtcDaliTextStyleSetGetWeight(void)
341 tet_infoline(" UtcDaliTextStyleSetGetWeight ");
343 TestApplication application;
347 style.SetWeight( TextStyle::EXTRABLACK );
349 DALI_TEST_CHECK( TextStyle::EXTRABLACK == style.GetWeight() );
353 int UtcDaliTextStyleSetGetTextColor(void)
355 tet_infoline(" UtcDaliTextStyleSetGetTextColor ");
357 TestApplication application;
361 style.SetTextColor( Color::GREEN );
363 DALI_TEST_CHECK( Vector4( 0.f, 1.f, 0.f, 1.f ) == style.GetTextColor() );
367 int UtcDaliTextStyleSetGetItalics(void)
369 tet_infoline(" UtcDaliTextStyleSetGetItalics ");
371 TestApplication application;
375 style.SetItalics( true );
377 DALI_TEST_CHECK( style.GetItalics() );
379 style.SetItalics( false );
381 DALI_TEST_CHECK( !style.GetItalics() );
385 int UtcDaliTextStyleSetGetItalicsAngle(void)
387 tet_infoline(" UtcDaliTextStyleSetGetItalicsAngle ");
389 TestApplication application;
393 DALI_TEST_CHECK( TextStyle::DEFAULT_ITALICS_ANGLE == style.GetItalicsAngle() );
395 style.SetItalicsAngle( Degree( 15.f ) );
397 DALI_TEST_CHECK( Degree( 15.f ) == style.GetItalicsAngle() );
401 int UtcDaliTextStyleSetGetUnderline(void)
403 tet_infoline(" UtcDaliTextStyleSetGetUnderline ");
405 TestApplication application;
409 style.SetUnderline( true );
411 DALI_TEST_CHECK( style.GetUnderline() );
413 style.SetUnderline( false );
415 DALI_TEST_CHECK( !style.GetUnderline() );
417 style.SetUnderlineThickness( 3.5f );
418 style.SetUnderlinePosition( 12.f );
420 DALI_TEST_CHECK( fabs( 3.5f - style.GetUnderlineThickness() ) < GetRangedEpsilon( 3.5f, style.GetUnderlineThickness() ) );
421 DALI_TEST_CHECK( fabs( 12.f - style.GetUnderlinePosition() ) < GetRangedEpsilon( 12.f, style.GetUnderlinePosition() ) );
425 int UtcDaliTextStyleSetGetShadow(void)
427 tet_infoline(" UtcDaliTextStyleSetGetShadow ");
429 TestApplication application;
433 DALI_TEST_CHECK( !style.GetShadow() );
435 style.SetShadow( true );
437 DALI_TEST_CHECK( style.GetShadow() );
439 style.SetShadow( true, Color::RED, Vector2( 0.5f, 0.5f ) );
441 DALI_TEST_EQUALS( style.GetShadowColor(), Color::RED, TEST_LOCATION );
442 DALI_TEST_CHECK( Vector2( 0.5f, 0.5f ) == style.GetShadowOffset() );
444 style.SetShadow( false );
446 DALI_TEST_CHECK( !style.GetShadow() );
450 int UtcDaliTextStyleSetGetGlow(void)
452 tet_infoline(" UtcDaliTextStyleSetGetGlow ");
454 TestApplication application;
458 DALI_TEST_CHECK( !style.GetGlow() );
460 style.SetGlow( true );
462 DALI_TEST_CHECK( style.GetGlow() );
464 style.SetGlow( true, Color::RED, 0.75f );
466 DALI_TEST_EQUALS( style.GetGlowColor(), Color::RED, TEST_LOCATION );
467 DALI_TEST_CHECK( fabs( 0.75f - style.GetGlowIntensity() ) < GetRangedEpsilon( 0.75f, style.GetGlowIntensity() ) );
469 style.SetGlow( false );
471 DALI_TEST_CHECK( !style.GetGlow() );
475 int UtcDaliTextStyleSetGetOutline(void)
477 tet_infoline(" UtcDaliTextStyleSetGetGlow ");
479 TestApplication application;
483 DALI_TEST_CHECK( !style.GetOutline() );
485 style.SetOutline( true );
487 DALI_TEST_CHECK( style.GetOutline() );
489 style.SetOutline( true, Color::RED, Vector2( 0.9f, 0.9f ) );
491 DALI_TEST_EQUALS( style.GetOutlineColor(), Color::RED, TEST_LOCATION );
492 DALI_TEST_CHECK( Vector2( 0.9f, 0.9f ) == style.GetOutlineThickness() );
494 style.SetOutline( false );
496 DALI_TEST_CHECK( !style.GetOutline() );
500 int UtcDaliTextStyleSetGetSmoothEdge(void)
502 tet_infoline(" UtcDaliTextStyleSetGetGlow ");
504 TestApplication application;
508 style.SetSmoothEdge( 0.5f );
510 DALI_TEST_CHECK( fabs( 0.5f - style.GetSmoothEdge() ) < GetRangedEpsilon( 0.5f, style.GetSmoothEdge() ) );