Revert "License conversion from Flora to Apache 2.0"
[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 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
7 //
8 //     http://floralicense.org/license/
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 #include <iostream>
18 #include <stdlib.h>
19 #include <dali-toolkit-test-suite-utils.h>
20 #include <dali-toolkit/dali-toolkit.h>
21
22
23 // Internal headers are allowed here
24 #include <dali-toolkit/internal/controls/text-view/text-view-processor-types.h>
25
26 using namespace Dali;
27 using namespace Dali::Toolkit;
28 using namespace Dali::Toolkit::Internal;
29
30 void dali_text_view_processor_types_startup(void)
31 {
32   test_return_value = TET_UNDEF;
33 }
34
35 void dali_text_view_processor_types_cleanup(void)
36 {
37   test_return_value = TET_PASS;
38 }
39
40
41 namespace
42 {
43 // Data structures used to create an 'experiment' in TET cases
44
45 //////////////////////////////////////////////////////////////////
46 } // namespace
47
48
49 int UtcDaliTextViewDefaultConstructorDestructor_PT(void)
50 {
51   ToolkitTestApplication application;
52
53   tet_infoline("UtcDaliTextViewDefaultConstructorDestructor : ");
54
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 );
60
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 );
80
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 );
86
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 );
93
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 );
100
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 );
111   END_TEST;
112 }
113
114 int UtcDaliTextViewCopyConstructorOperator(void)
115 {
116   ToolkitTestApplication application;
117
118   tet_infoline("UtcDaliTextViewCopyConstructorOperator : ");
119
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;
130
131   characterLayoutInfo.mGlyphActor = TextActor::New( "Hello" );
132   characterLayoutInfo.mStyledText.mText = Text( "Hello" );
133
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;
141
142   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo1;
143   characterLayoutInfo1 = characterLayoutInfo;
144
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 );
163
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 );
183
184   // Increases coverage.
185   characterLayoutInfo2.mGlyphActor.Reset();
186   characterLayoutInfo1 = characterLayoutInfo2;
187   DALI_TEST_CHECK( !characterLayoutInfo1.mGlyphActor );
188
189   TextViewProcessor::WordLayoutInfo wordLayoutInfo;
190   wordLayoutInfo.mSize = Vector2( 1.f, 1.f );
191   wordLayoutInfo.mAscender = 1.f;
192   wordLayoutInfo.mType = TextViewProcessor::LineSeparator;
193
194   TextViewProcessor::WordLayoutInfo wordLayoutInfo1;
195   wordLayoutInfo1 = wordLayoutInfo;
196
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 );
200
201   TextViewProcessor::WordLayoutInfo wordLayoutInfo2( wordLayoutInfo );
202
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 );
206
207
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;
213
214   TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo1;
215   wordGroupLayoutInfo1 = wordGroupLayoutInfo;
216
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 );
221
222   TextViewProcessor::WordGroupLayoutInfo wordGroupLayoutInfo2( wordGroupLayoutInfo );
223
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 );
228
229
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;
235
236   TextViewProcessor::LineLayoutInfo lineLayoutInfo1;
237   lineLayoutInfo1 = lineLayoutInfo;
238
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 );
243
244   TextViewProcessor::LineLayoutInfo lineLayoutInfo2( lineLayoutInfo );
245
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 );
250
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;
256
257   TextViewProcessor::TextLayoutInfo textLayoutInfo1;
258   textLayoutInfo1 = textLayoutInfo;
259
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 );
264
265   TextViewProcessor::TextLayoutInfo textLayoutInfo2( textLayoutInfo );
266
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 );
271   END_TEST;
272 }
273
274 int UtcDaliTextViewEqualityOperator(void)
275 {
276   ToolkitTestApplication application;
277
278   tet_infoline("UtcDaliTextViewEqualityOperator : ");
279
280   TextViewProcessor::TextInfoIndices indices;
281   TextViewProcessor::TextInfoIndices indices1( 1u, 1u, 1u, 1u );
282
283   DALI_TEST_CHECK( !( indices == indices1 ) );
284
285   indices = indices1;
286
287   DALI_TEST_CHECK( indices == indices1 );
288   END_TEST;
289 }