Enabled test cases to install to target
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-TextView-Processor-Types.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
24 // Internal headers are allowed here
25 #include <dali-toolkit/internal/controls/text-view/text-view-processor-types.h>
26
27 using namespace Dali;
28 using namespace Dali::Toolkit;
29 using namespace Dali::Toolkit::Internal;
30
31 void dali_text_view_processor_types_startup(void)
32 {
33   test_return_value = TET_UNDEF;
34 }
35
36 void dali_text_view_processor_types_cleanup(void)
37 {
38   test_return_value = TET_PASS;
39 }
40
41
42 namespace
43 {
44 // Data structures used to create an 'experiment' in TET cases
45
46 //////////////////////////////////////////////////////////////////
47 } // namespace
48
49
50 int UtcDaliTextViewDefaultConstructorDestructor_PT(void)
51 {
52   ToolkitTestApplication application;
53
54   tet_infoline("UtcDaliTextViewDefaultConstructorDestructor : ");
55
56   TextViewProcessor::TextInfoIndices indices;
57   DALI_TEST_EQUALS( indices.mLineIndex, 0u, TEST_LOCATION );
58   DALI_TEST_EQUALS( indices.mGroupIndex, 0u, TEST_LOCATION );
59   DALI_TEST_EQUALS( indices.mWordIndex, 0u, TEST_LOCATION );
60   DALI_TEST_EQUALS( indices.mCharacterIndex, 0u, TEST_LOCATION );
61
62   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo;
63   DALI_TEST_EQUALS( characterLayoutInfo.mHeight, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
64   DALI_TEST_EQUALS( characterLayoutInfo.mAdvance, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
65   DALI_TEST_EQUALS( characterLayoutInfo.mBearing, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
66   DALI_TEST_EQUALS( characterLayoutInfo.mPosition, Vector3::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
67   DALI_TEST_EQUALS( characterLayoutInfo.mOffset, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
68   DALI_TEST_EQUALS( characterLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
69   DALI_TEST_EQUALS( characterLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
70   DALI_TEST_EQUALS( characterLayoutInfo.mUnderlineThickness, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
71   DALI_TEST_EQUALS( characterLayoutInfo.mUnderlinePosition, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
72   DALI_TEST_CHECK( !characterLayoutInfo.mGlyphActor );
73   DALI_TEST_CHECK( characterLayoutInfo.mStyledText.mText.IsEmpty() );
74   DALI_TEST_EQUALS( characterLayoutInfo.mColorAlpha, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
75   DALI_TEST_EQUALS( characterLayoutInfo.mGradientColor, Vector4::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
76   DALI_TEST_EQUALS( characterLayoutInfo.mStartPoint, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
77   DALI_TEST_EQUALS( characterLayoutInfo.mEndPoint, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
78   DALI_TEST_CHECK( characterLayoutInfo.mIsVisible );
79   DALI_TEST_CHECK( characterLayoutInfo.mSetText );
80   DALI_TEST_CHECK( characterLayoutInfo.mSetStyle );
81
82   TextViewProcessor::WordLayoutInfo wordLayoutInfo;
83   DALI_TEST_EQUALS( wordLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
84   DALI_TEST_EQUALS( wordLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
85   DALI_TEST_EQUALS( wordLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
86   DALI_TEST_EQUALS( wordLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
87
88   TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo;
89   DALI_TEST_EQUALS( wordGroupLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
90   DALI_TEST_EQUALS( wordGroupLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
91   DALI_TEST_EQUALS( wordGroupLayoutInfo.mDirection, TextViewProcessor::LTR, TEST_LOCATION );
92   DALI_TEST_EQUALS( wordGroupLayoutInfo.mWordsLayoutInfo.size(), 0u, TEST_LOCATION );
93   DALI_TEST_EQUALS( wordGroupLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
94
95   TextViewProcessor::LineLayoutInfo lineLayoutInfo;
96   DALI_TEST_EQUALS( lineLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
97   DALI_TEST_EQUALS( lineLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
98   DALI_TEST_EQUALS( lineLayoutInfo.mLineHeightOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
99   DALI_TEST_EQUALS( lineLayoutInfo.mWordGroupsLayoutInfo.size(), 0u, TEST_LOCATION );
100   DALI_TEST_EQUALS( lineLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
101
102   TextViewProcessor::TextLayoutInfo textLayoutInfo;
103   DALI_TEST_EQUALS( textLayoutInfo.mWholeTextSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
104   DALI_TEST_EQUALS( textLayoutInfo.mMaxWordWidth, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
105   DALI_TEST_EQUALS( textLayoutInfo.mLinesLayoutInfo.size(), 0u, TEST_LOCATION );
106   DALI_TEST_EQUALS( textLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
107   DALI_TEST_EQUALS( textLayoutInfo.mMaxItalicsOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
108   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
109   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
110   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
111   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
112   END_TEST;
113 }
114
115 int UtcDaliTextViewCopyConstructorOperator(void)
116 {
117   ToolkitTestApplication application;
118
119   tet_infoline("UtcDaliTextViewCopyConstructorOperator : ");
120
121   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo;
122   characterLayoutInfo.mHeight = 1.f;
123   characterLayoutInfo.mAdvance = 1.f;
124   characterLayoutInfo.mBearing = 1.f;
125   characterLayoutInfo.mPosition = Vector3( 1.f, 1.f, 1.f );
126   characterLayoutInfo.mOffset = Vector2( 1.f, 1.f );
127   characterLayoutInfo.mSize = Vector2( 1.f, 1.f );
128   characterLayoutInfo.mAscender = 1.f;
129   characterLayoutInfo.mUnderlineThickness = 1.f;
130   characterLayoutInfo.mUnderlinePosition = 1.f;
131
132   characterLayoutInfo.mGlyphActor = TextActor::New( "Hello" );
133   characterLayoutInfo.mStyledText.mText = Text( "Hello" );
134
135   characterLayoutInfo.mColorAlpha = 0.f;
136   characterLayoutInfo.mGradientColor = Vector4( 1.f, 1.f, 1.f, 1.f );
137   characterLayoutInfo.mStartPoint = Vector2( 1.f, 1.f );
138   characterLayoutInfo.mEndPoint = Vector2( 1.f, 1.f );
139   characterLayoutInfo.mIsVisible = false;
140   characterLayoutInfo.mSetText = false;
141   characterLayoutInfo.mSetStyle = false;
142
143   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo1;
144   characterLayoutInfo1 = characterLayoutInfo;
145
146   DALI_TEST_EQUALS( characterLayoutInfo1.mHeight, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
147   DALI_TEST_EQUALS( characterLayoutInfo1.mAdvance, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
148   DALI_TEST_EQUALS( characterLayoutInfo1.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
149   DALI_TEST_EQUALS( characterLayoutInfo1.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
150   DALI_TEST_EQUALS( characterLayoutInfo1.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
151   DALI_TEST_EQUALS( characterLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
152   DALI_TEST_EQUALS( characterLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
153   DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
154   DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
155   DALI_TEST_CHECK( characterLayoutInfo1.mGlyphActor );
156   DALI_TEST_EQUALS( characterLayoutInfo1.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
157   DALI_TEST_EQUALS( characterLayoutInfo1.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
158   DALI_TEST_EQUALS( characterLayoutInfo1.mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
159   DALI_TEST_EQUALS( characterLayoutInfo1.mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
160   DALI_TEST_EQUALS( characterLayoutInfo1.mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
161   DALI_TEST_CHECK( !characterLayoutInfo1.mIsVisible );
162   DALI_TEST_CHECK( !characterLayoutInfo1.mSetText );
163   DALI_TEST_CHECK( !characterLayoutInfo1.mSetStyle );
164
165   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo2( characterLayoutInfo );
166   DALI_TEST_EQUALS( characterLayoutInfo2.mHeight, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
167   DALI_TEST_EQUALS( characterLayoutInfo2.mAdvance, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
168   DALI_TEST_EQUALS( characterLayoutInfo2.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
169   DALI_TEST_EQUALS( characterLayoutInfo2.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
170   DALI_TEST_EQUALS( characterLayoutInfo2.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
171   DALI_TEST_EQUALS( characterLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
172   DALI_TEST_EQUALS( characterLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
173   DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
174   DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
175   DALI_TEST_CHECK( characterLayoutInfo2.mGlyphActor );
176   DALI_TEST_EQUALS( characterLayoutInfo2.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
177   DALI_TEST_EQUALS( characterLayoutInfo2.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
178   DALI_TEST_EQUALS( characterLayoutInfo2.mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
179   DALI_TEST_EQUALS( characterLayoutInfo2.mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
180   DALI_TEST_EQUALS( characterLayoutInfo2.mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
181   DALI_TEST_CHECK( !characterLayoutInfo2.mIsVisible );
182   DALI_TEST_CHECK( !characterLayoutInfo2.mSetText );
183   DALI_TEST_CHECK( !characterLayoutInfo2.mSetStyle );
184
185   // Increases coverage.
186   characterLayoutInfo2.mGlyphActor.Reset();
187   characterLayoutInfo1 = characterLayoutInfo2;
188   DALI_TEST_CHECK( !characterLayoutInfo1.mGlyphActor );
189
190   TextViewProcessor::WordLayoutInfo wordLayoutInfo;
191   wordLayoutInfo.mSize = Vector2( 1.f, 1.f );
192   wordLayoutInfo.mAscender = 1.f;
193   wordLayoutInfo.mType = TextViewProcessor::LineSeparator;
194
195   TextViewProcessor::WordLayoutInfo wordLayoutInfo1;
196   wordLayoutInfo1 = wordLayoutInfo;
197
198   DALI_TEST_EQUALS( wordLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
199   DALI_TEST_EQUALS( wordLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
200   DALI_TEST_EQUALS( wordLayoutInfo1.mType, TextViewProcessor::LineSeparator, TEST_LOCATION );
201
202   TextViewProcessor::WordLayoutInfo wordLayoutInfo2( wordLayoutInfo );
203
204   DALI_TEST_EQUALS( wordLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
205   DALI_TEST_EQUALS( wordLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
206   DALI_TEST_EQUALS( wordLayoutInfo2.mType, TextViewProcessor::LineSeparator, TEST_LOCATION );
207
208
209   TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo;
210   wordGroupLayoutInfo.mSize = Vector2( 1.f, 1.f );
211   wordGroupLayoutInfo.mAscender = 1.f;
212   wordGroupLayoutInfo.mDirection = TextViewProcessor::RTL;
213   wordGroupLayoutInfo.mNumberOfCharacters = 1u;
214
215   TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo1;
216   wordGroupLayoutInfo1 = wordGroupLayoutInfo;
217
218   DALI_TEST_EQUALS( wordGroupLayoutInfo.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
219   DALI_TEST_EQUALS( wordGroupLayoutInfo.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
220   DALI_TEST_EQUALS( wordGroupLayoutInfo.mDirection, TextViewProcessor::RTL, TEST_LOCATION );
221   DALI_TEST_EQUALS( wordGroupLayoutInfo.mNumberOfCharacters, 1u, TEST_LOCATION );
222
223   TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo2( wordGroupLayoutInfo );
224
225   DALI_TEST_EQUALS( wordGroupLayoutInfo.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
226   DALI_TEST_EQUALS( wordGroupLayoutInfo.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
227   DALI_TEST_EQUALS( wordGroupLayoutInfo.mDirection, TextViewProcessor::RTL, TEST_LOCATION );
228   DALI_TEST_EQUALS( wordGroupLayoutInfo.mNumberOfCharacters, 1u, TEST_LOCATION );
229
230
231   TextViewProcessor::LineLayoutInfo lineLayoutInfo;
232   lineLayoutInfo.mSize = Vector2( 1.f, 1.f );
233   lineLayoutInfo.mAscender = 1.f;
234   lineLayoutInfo.mLineHeightOffset = 1.f;
235   lineLayoutInfo.mNumberOfCharacters = 1u;
236
237   TextViewProcessor::LineLayoutInfo lineLayoutInfo1;
238   lineLayoutInfo1 = lineLayoutInfo;
239
240   DALI_TEST_EQUALS( lineLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
241   DALI_TEST_EQUALS( lineLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
242   DALI_TEST_EQUALS( lineLayoutInfo1.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
243   DALI_TEST_EQUALS( lineLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
244
245   TextViewProcessor::LineLayoutInfo lineLayoutInfo2( lineLayoutInfo );
246
247   DALI_TEST_EQUALS( lineLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
248   DALI_TEST_EQUALS( lineLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
249   DALI_TEST_EQUALS( lineLayoutInfo2.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
250   DALI_TEST_EQUALS( lineLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
251
252   TextViewProcessor::TextLayoutInfo textLayoutInfo;
253   textLayoutInfo.mWholeTextSize = Vector2( 1.f, 1.f );
254   textLayoutInfo.mMaxWordWidth = 1.f;
255   textLayoutInfo.mNumberOfCharacters = 1u;
256   textLayoutInfo.mMaxItalicsOffset = 1.f;
257
258   TextViewProcessor::TextLayoutInfo textLayoutInfo1;
259   textLayoutInfo1 = textLayoutInfo;
260
261   DALI_TEST_EQUALS( textLayoutInfo1.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
262   DALI_TEST_EQUALS( textLayoutInfo1.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
263   DALI_TEST_EQUALS( textLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
264   DALI_TEST_EQUALS( textLayoutInfo1.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
265
266   TextViewProcessor::TextLayoutInfo textLayoutInfo2( textLayoutInfo );
267
268   DALI_TEST_EQUALS( textLayoutInfo2.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
269   DALI_TEST_EQUALS( textLayoutInfo2.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
270   DALI_TEST_EQUALS( textLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
271   DALI_TEST_EQUALS( textLayoutInfo2.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
272   END_TEST;
273 }
274
275 int UtcDaliTextViewEqualityOperator(void)
276 {
277   ToolkitTestApplication application;
278
279   tet_infoline("UtcDaliTextViewEqualityOperator : ");
280
281   TextViewProcessor::TextInfoIndices indices;
282   TextViewProcessor::TextInfoIndices indices1( 1u, 1u, 1u, 1u );
283
284   DALI_TEST_CHECK( !( indices == indices1 ) );
285
286   indices = indices1;
287
288   DALI_TEST_CHECK( indices == indices1 );
289   END_TEST;
290 }