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.
19 #include <dali-toolkit-test-suite-utils.h>
20 #include <dali-toolkit/dali-toolkit.h>
23 // Internal headers are allowed here
24 #include <dali-toolkit/internal/controls/text-view/text-view-processor-types.h>
27 using namespace Dali::Toolkit;
28 using namespace Dali::Toolkit::Internal;
30 void dali_text_view_processor_types_startup(void)
32 test_return_value = TET_UNDEF;
35 void dali_text_view_processor_types_cleanup(void)
37 test_return_value = TET_PASS;
43 // Data structures used to create an 'experiment' in TET cases
45 //////////////////////////////////////////////////////////////////
49 int UtcDaliTextViewDefaultConstructorDestructor_PT(void)
51 ToolkitTestApplication application;
53 tet_infoline("UtcDaliTextViewDefaultConstructorDestructor : ");
55 TextViewProcessor::TextInfoIndices indices;
56 DALI_TEST_EQUALS( indices.mLineIndex, 0u, TEST_LOCATION );
57 DALI_TEST_EQUALS( indices.mGroupIndex, 0u, TEST_LOCATION );
58 DALI_TEST_EQUALS( indices.mWordIndex, 0u, TEST_LOCATION );
59 DALI_TEST_EQUALS( indices.mCharacterIndex, 0u, TEST_LOCATION );
61 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo;
62 DALI_TEST_EQUALS( characterLayoutInfo.mHeight, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
63 DALI_TEST_EQUALS( characterLayoutInfo.mAdvance, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
64 DALI_TEST_EQUALS( characterLayoutInfo.mBearing, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
65 DALI_TEST_EQUALS( characterLayoutInfo.mPosition, Vector3::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
66 DALI_TEST_EQUALS( characterLayoutInfo.mOffset, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
67 DALI_TEST_EQUALS( characterLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
68 DALI_TEST_EQUALS( characterLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
69 DALI_TEST_EQUALS( characterLayoutInfo.mUnderlineThickness, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
70 DALI_TEST_EQUALS( characterLayoutInfo.mUnderlinePosition, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
71 DALI_TEST_CHECK( !characterLayoutInfo.mGlyphActor );
72 DALI_TEST_CHECK( characterLayoutInfo.mStyledText.mText.IsEmpty() );
73 DALI_TEST_EQUALS( characterLayoutInfo.mColorAlpha, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
74 DALI_TEST_EQUALS( characterLayoutInfo.mGradientColor, Vector4::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
75 DALI_TEST_EQUALS( characterLayoutInfo.mStartPoint, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
76 DALI_TEST_EQUALS( characterLayoutInfo.mEndPoint, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
77 DALI_TEST_CHECK( characterLayoutInfo.mIsVisible );
78 DALI_TEST_CHECK( characterLayoutInfo.mSetText );
79 DALI_TEST_CHECK( characterLayoutInfo.mSetStyle );
81 TextViewProcessor::WordLayoutInfo wordLayoutInfo;
82 DALI_TEST_EQUALS( wordLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
83 DALI_TEST_EQUALS( wordLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
84 DALI_TEST_EQUALS( wordLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
85 DALI_TEST_EQUALS( wordLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
87 TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo;
88 DALI_TEST_EQUALS( wordGroupLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
89 DALI_TEST_EQUALS( wordGroupLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
90 DALI_TEST_EQUALS( wordGroupLayoutInfo.mDirection, TextViewProcessor::LTR, TEST_LOCATION );
91 DALI_TEST_EQUALS( wordGroupLayoutInfo.mWordsLayoutInfo.size(), 0u, TEST_LOCATION );
92 DALI_TEST_EQUALS( wordGroupLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
94 TextViewProcessor::LineLayoutInfo lineLayoutInfo;
95 DALI_TEST_EQUALS( lineLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
96 DALI_TEST_EQUALS( lineLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
97 DALI_TEST_EQUALS( lineLayoutInfo.mLineHeightOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
98 DALI_TEST_EQUALS( lineLayoutInfo.mWordGroupsLayoutInfo.size(), 0u, TEST_LOCATION );
99 DALI_TEST_EQUALS( lineLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
101 TextViewProcessor::TextLayoutInfo textLayoutInfo;
102 DALI_TEST_EQUALS( textLayoutInfo.mWholeTextSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
103 DALI_TEST_EQUALS( textLayoutInfo.mMaxWordWidth, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
104 DALI_TEST_EQUALS( textLayoutInfo.mLinesLayoutInfo.size(), 0u, TEST_LOCATION );
105 DALI_TEST_EQUALS( textLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
106 DALI_TEST_EQUALS( textLayoutInfo.mMaxItalicsOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
107 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
108 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
109 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
110 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
114 int UtcDaliTextViewCopyConstructorOperator(void)
116 ToolkitTestApplication application;
118 tet_infoline("UtcDaliTextViewCopyConstructorOperator : ");
120 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo;
121 characterLayoutInfo.mHeight = 1.f;
122 characterLayoutInfo.mAdvance = 1.f;
123 characterLayoutInfo.mBearing = 1.f;
124 characterLayoutInfo.mPosition = Vector3( 1.f, 1.f, 1.f );
125 characterLayoutInfo.mOffset = Vector2( 1.f, 1.f );
126 characterLayoutInfo.mSize = Vector2( 1.f, 1.f );
127 characterLayoutInfo.mAscender = 1.f;
128 characterLayoutInfo.mUnderlineThickness = 1.f;
129 characterLayoutInfo.mUnderlinePosition = 1.f;
131 characterLayoutInfo.mGlyphActor = TextActor::New( "Hello" );
132 characterLayoutInfo.mStyledText.mText = Text( "Hello" );
134 characterLayoutInfo.mColorAlpha = 0.f;
135 characterLayoutInfo.mGradientColor = Vector4( 1.f, 1.f, 1.f, 1.f );
136 characterLayoutInfo.mStartPoint = Vector2( 1.f, 1.f );
137 characterLayoutInfo.mEndPoint = Vector2( 1.f, 1.f );
138 characterLayoutInfo.mIsVisible = false;
139 characterLayoutInfo.mSetText = false;
140 characterLayoutInfo.mSetStyle = false;
142 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo1;
143 characterLayoutInfo1 = characterLayoutInfo;
145 DALI_TEST_EQUALS( characterLayoutInfo1.mHeight, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
146 DALI_TEST_EQUALS( characterLayoutInfo1.mAdvance, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
147 DALI_TEST_EQUALS( characterLayoutInfo1.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
148 DALI_TEST_EQUALS( characterLayoutInfo1.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
149 DALI_TEST_EQUALS( characterLayoutInfo1.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
150 DALI_TEST_EQUALS( characterLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
151 DALI_TEST_EQUALS( characterLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
152 DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
153 DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
154 DALI_TEST_CHECK( characterLayoutInfo1.mGlyphActor );
155 DALI_TEST_EQUALS( characterLayoutInfo1.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
156 DALI_TEST_EQUALS( characterLayoutInfo1.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
157 DALI_TEST_EQUALS( characterLayoutInfo1.mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
158 DALI_TEST_EQUALS( characterLayoutInfo1.mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
159 DALI_TEST_EQUALS( characterLayoutInfo1.mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
160 DALI_TEST_CHECK( !characterLayoutInfo1.mIsVisible );
161 DALI_TEST_CHECK( !characterLayoutInfo1.mSetText );
162 DALI_TEST_CHECK( !characterLayoutInfo1.mSetStyle );
164 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo2( characterLayoutInfo );
165 DALI_TEST_EQUALS( characterLayoutInfo2.mHeight, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
166 DALI_TEST_EQUALS( characterLayoutInfo2.mAdvance, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
167 DALI_TEST_EQUALS( characterLayoutInfo2.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
168 DALI_TEST_EQUALS( characterLayoutInfo2.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
169 DALI_TEST_EQUALS( characterLayoutInfo2.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
170 DALI_TEST_EQUALS( characterLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
171 DALI_TEST_EQUALS( characterLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
172 DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
173 DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
174 DALI_TEST_CHECK( characterLayoutInfo2.mGlyphActor );
175 DALI_TEST_EQUALS( characterLayoutInfo2.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
176 DALI_TEST_EQUALS( characterLayoutInfo2.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
177 DALI_TEST_EQUALS( characterLayoutInfo2.mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
178 DALI_TEST_EQUALS( characterLayoutInfo2.mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
179 DALI_TEST_EQUALS( characterLayoutInfo2.mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
180 DALI_TEST_CHECK( !characterLayoutInfo2.mIsVisible );
181 DALI_TEST_CHECK( !characterLayoutInfo2.mSetText );
182 DALI_TEST_CHECK( !characterLayoutInfo2.mSetStyle );
184 // Increases coverage.
185 characterLayoutInfo2.mGlyphActor.Reset();
186 characterLayoutInfo1 = characterLayoutInfo2;
187 DALI_TEST_CHECK( !characterLayoutInfo1.mGlyphActor );
189 TextViewProcessor::WordLayoutInfo wordLayoutInfo;
190 wordLayoutInfo.mSize = Vector2( 1.f, 1.f );
191 wordLayoutInfo.mAscender = 1.f;
192 wordLayoutInfo.mType = TextViewProcessor::LineSeparator;
194 TextViewProcessor::WordLayoutInfo wordLayoutInfo1;
195 wordLayoutInfo1 = wordLayoutInfo;
197 DALI_TEST_EQUALS( wordLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
198 DALI_TEST_EQUALS( wordLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
199 DALI_TEST_EQUALS( wordLayoutInfo1.mType, TextViewProcessor::LineSeparator, TEST_LOCATION );
201 TextViewProcessor::WordLayoutInfo wordLayoutInfo2( wordLayoutInfo );
203 DALI_TEST_EQUALS( wordLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
204 DALI_TEST_EQUALS( wordLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
205 DALI_TEST_EQUALS( wordLayoutInfo2.mType, TextViewProcessor::LineSeparator, TEST_LOCATION );
208 TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo;
209 wordGroupLayoutInfo.mSize = Vector2( 1.f, 1.f );
210 wordGroupLayoutInfo.mAscender = 1.f;
211 wordGroupLayoutInfo.mDirection = TextViewProcessor::RTL;
212 wordGroupLayoutInfo.mNumberOfCharacters = 1u;
214 TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo1;
215 wordGroupLayoutInfo1 = wordGroupLayoutInfo;
217 DALI_TEST_EQUALS( wordGroupLayoutInfo.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
218 DALI_TEST_EQUALS( wordGroupLayoutInfo.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
219 DALI_TEST_EQUALS( wordGroupLayoutInfo.mDirection, TextViewProcessor::RTL, TEST_LOCATION );
220 DALI_TEST_EQUALS( wordGroupLayoutInfo.mNumberOfCharacters, 1u, TEST_LOCATION );
222 TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo2( wordGroupLayoutInfo );
224 DALI_TEST_EQUALS( wordGroupLayoutInfo.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
225 DALI_TEST_EQUALS( wordGroupLayoutInfo.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
226 DALI_TEST_EQUALS( wordGroupLayoutInfo.mDirection, TextViewProcessor::RTL, TEST_LOCATION );
227 DALI_TEST_EQUALS( wordGroupLayoutInfo.mNumberOfCharacters, 1u, TEST_LOCATION );
230 TextViewProcessor::LineLayoutInfo lineLayoutInfo;
231 lineLayoutInfo.mSize = Vector2( 1.f, 1.f );
232 lineLayoutInfo.mAscender = 1.f;
233 lineLayoutInfo.mLineHeightOffset = 1.f;
234 lineLayoutInfo.mNumberOfCharacters = 1u;
236 TextViewProcessor::LineLayoutInfo lineLayoutInfo1;
237 lineLayoutInfo1 = lineLayoutInfo;
239 DALI_TEST_EQUALS( lineLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
240 DALI_TEST_EQUALS( lineLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
241 DALI_TEST_EQUALS( lineLayoutInfo1.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
242 DALI_TEST_EQUALS( lineLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
244 TextViewProcessor::LineLayoutInfo lineLayoutInfo2( lineLayoutInfo );
246 DALI_TEST_EQUALS( lineLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
247 DALI_TEST_EQUALS( lineLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
248 DALI_TEST_EQUALS( lineLayoutInfo2.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
249 DALI_TEST_EQUALS( lineLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
251 TextViewProcessor::TextLayoutInfo textLayoutInfo;
252 textLayoutInfo.mWholeTextSize = Vector2( 1.f, 1.f );
253 textLayoutInfo.mMaxWordWidth = 1.f;
254 textLayoutInfo.mNumberOfCharacters = 1u;
255 textLayoutInfo.mMaxItalicsOffset = 1.f;
257 TextViewProcessor::TextLayoutInfo textLayoutInfo1;
258 textLayoutInfo1 = textLayoutInfo;
260 DALI_TEST_EQUALS( textLayoutInfo1.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
261 DALI_TEST_EQUALS( textLayoutInfo1.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
262 DALI_TEST_EQUALS( textLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
263 DALI_TEST_EQUALS( textLayoutInfo1.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
265 TextViewProcessor::TextLayoutInfo textLayoutInfo2( textLayoutInfo );
267 DALI_TEST_EQUALS( textLayoutInfo2.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
268 DALI_TEST_EQUALS( textLayoutInfo2.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
269 DALI_TEST_EQUALS( textLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
270 DALI_TEST_EQUALS( textLayoutInfo2.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
274 int UtcDaliTextViewEqualityOperator(void)
276 ToolkitTestApplication application;
278 tet_infoline("UtcDaliTextViewEqualityOperator : ");
280 TextViewProcessor::TextInfoIndices indices;
281 TextViewProcessor::TextInfoIndices indices1( 1u, 1u, 1u, 1u );
283 DALI_TEST_CHECK( !( indices == indices1 ) );
287 DALI_TEST_CHECK( indices == indices1 );