f4b49488ef41ff2834ee411e6509c75e513e1a62
[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.mParagraphIndex, 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::ParagraphLayoutInfo paragraphLayoutInfo;
88   DALI_TEST_EQUALS( paragraphLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
89   DALI_TEST_EQUALS( paragraphLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
90   DALI_TEST_EQUALS( paragraphLayoutInfo.mLineHeightOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
91   DALI_TEST_EQUALS( paragraphLayoutInfo.mWordsLayoutInfo.size(), 0u, TEST_LOCATION );
92   DALI_TEST_EQUALS( paragraphLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
93
94   TextViewProcessor::TextLayoutInfo textLayoutInfo;
95   DALI_TEST_EQUALS( textLayoutInfo.mWholeTextSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
96   DALI_TEST_EQUALS( textLayoutInfo.mMaxWordWidth, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
97   DALI_TEST_EQUALS( textLayoutInfo.mParagraphsLayoutInfo.size(), 0u, TEST_LOCATION );
98   DALI_TEST_EQUALS( textLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
99   DALI_TEST_EQUALS( textLayoutInfo.mMaxItalicsOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
100   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
101   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
102   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
103   DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
104   END_TEST;
105 }
106
107 int UtcDaliTextViewCopyConstructorOperator(void)
108 {
109   ToolkitTestApplication application;
110
111   tet_infoline("UtcDaliTextViewCopyConstructorOperator : ");
112
113   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo;
114   characterLayoutInfo.mHeight = 1.f;
115   characterLayoutInfo.mAdvance = 1.f;
116   characterLayoutInfo.mBearing = 1.f;
117   characterLayoutInfo.mPosition = Vector3( 1.f, 1.f, 1.f );
118   characterLayoutInfo.mOffset = Vector2( 1.f, 1.f );
119   characterLayoutInfo.mSize = Vector2( 1.f, 1.f );
120   characterLayoutInfo.mAscender = 1.f;
121   characterLayoutInfo.mUnderlineThickness = 1.f;
122   characterLayoutInfo.mUnderlinePosition = 1.f;
123
124   characterLayoutInfo.mGlyphActor = TextActor::New( "Hello" );
125   characterLayoutInfo.mStyledText.mText = Text( "Hello" );
126
127   characterLayoutInfo.mColorAlpha = 0.f;
128   characterLayoutInfo.mGradientColor = Vector4( 1.f, 1.f, 1.f, 1.f );
129   characterLayoutInfo.mStartPoint = Vector2( 1.f, 1.f );
130   characterLayoutInfo.mEndPoint = Vector2( 1.f, 1.f );
131   characterLayoutInfo.mIsVisible = false;
132   characterLayoutInfo.mSetText = false;
133   characterLayoutInfo.mSetStyle = false;
134
135   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo1;
136   characterLayoutInfo1 = characterLayoutInfo;
137
138   DALI_TEST_EQUALS( characterLayoutInfo1.mHeight, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
139   DALI_TEST_EQUALS( characterLayoutInfo1.mAdvance, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
140   DALI_TEST_EQUALS( characterLayoutInfo1.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
141   DALI_TEST_EQUALS( characterLayoutInfo1.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
142   DALI_TEST_EQUALS( characterLayoutInfo1.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
143   DALI_TEST_EQUALS( characterLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
144   DALI_TEST_EQUALS( characterLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
145   DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
146   DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
147   DALI_TEST_CHECK( characterLayoutInfo1.mGlyphActor );
148   DALI_TEST_EQUALS( characterLayoutInfo1.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
149   DALI_TEST_EQUALS( characterLayoutInfo1.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
150   DALI_TEST_EQUALS( characterLayoutInfo1.mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
151   DALI_TEST_EQUALS( characterLayoutInfo1.mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
152   DALI_TEST_EQUALS( characterLayoutInfo1.mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
153   DALI_TEST_CHECK( !characterLayoutInfo1.mIsVisible );
154   DALI_TEST_CHECK( !characterLayoutInfo1.mSetText );
155   DALI_TEST_CHECK( !characterLayoutInfo1.mSetStyle );
156
157   TextViewProcessor::CharacterLayoutInfo characterLayoutInfo2( characterLayoutInfo );
158   DALI_TEST_EQUALS( characterLayoutInfo2.mHeight, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
159   DALI_TEST_EQUALS( characterLayoutInfo2.mAdvance, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
160   DALI_TEST_EQUALS( characterLayoutInfo2.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
161   DALI_TEST_EQUALS( characterLayoutInfo2.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
162   DALI_TEST_EQUALS( characterLayoutInfo2.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
163   DALI_TEST_EQUALS( characterLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
164   DALI_TEST_EQUALS( characterLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
165   DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
166   DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
167   DALI_TEST_CHECK( characterLayoutInfo2.mGlyphActor );
168   DALI_TEST_EQUALS( characterLayoutInfo2.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
169   DALI_TEST_EQUALS( characterLayoutInfo2.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
170   DALI_TEST_EQUALS( characterLayoutInfo2.mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
171   DALI_TEST_EQUALS( characterLayoutInfo2.mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
172   DALI_TEST_EQUALS( characterLayoutInfo2.mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
173   DALI_TEST_CHECK( !characterLayoutInfo2.mIsVisible );
174   DALI_TEST_CHECK( !characterLayoutInfo2.mSetText );
175   DALI_TEST_CHECK( !characterLayoutInfo2.mSetStyle );
176
177   // Increases coverage.
178   characterLayoutInfo2.mGlyphActor.Reset();
179   characterLayoutInfo1 = characterLayoutInfo2;
180   DALI_TEST_CHECK( !characterLayoutInfo1.mGlyphActor );
181
182   TextViewProcessor::WordLayoutInfo wordLayoutInfo;
183   wordLayoutInfo.mSize = Vector2( 1.f, 1.f );
184   wordLayoutInfo.mAscender = 1.f;
185   wordLayoutInfo.mType = TextViewProcessor::ParagraphSeparator;
186
187   TextViewProcessor::WordLayoutInfo wordLayoutInfo1;
188   wordLayoutInfo1 = wordLayoutInfo;
189
190   DALI_TEST_EQUALS( wordLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
191   DALI_TEST_EQUALS( wordLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
192   DALI_TEST_EQUALS( wordLayoutInfo1.mType, TextViewProcessor::ParagraphSeparator, TEST_LOCATION );
193
194   TextViewProcessor::WordLayoutInfo wordLayoutInfo2( wordLayoutInfo );
195
196   DALI_TEST_EQUALS( wordLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
197   DALI_TEST_EQUALS( wordLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
198   DALI_TEST_EQUALS( wordLayoutInfo2.mType, TextViewProcessor::ParagraphSeparator, TEST_LOCATION );
199
200   TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo;
201   paragraphLayoutInfo.mSize = Vector2( 1.f, 1.f );
202   paragraphLayoutInfo.mAscender = 1.f;
203   paragraphLayoutInfo.mLineHeightOffset = 1.f;
204   paragraphLayoutInfo.mNumberOfCharacters = 1u;
205
206   TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo1;
207   paragraphLayoutInfo1 = paragraphLayoutInfo;
208
209   DALI_TEST_EQUALS( paragraphLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
210   DALI_TEST_EQUALS( paragraphLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
211   DALI_TEST_EQUALS( paragraphLayoutInfo1.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
212   DALI_TEST_EQUALS( paragraphLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
213
214   TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo2( paragraphLayoutInfo );
215
216   DALI_TEST_EQUALS( paragraphLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
217   DALI_TEST_EQUALS( paragraphLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
218   DALI_TEST_EQUALS( paragraphLayoutInfo2.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
219   DALI_TEST_EQUALS( paragraphLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
220
221   TextViewProcessor::TextLayoutInfo textLayoutInfo;
222   textLayoutInfo.mWholeTextSize = Vector2( 1.f, 1.f );
223   textLayoutInfo.mMaxWordWidth = 1.f;
224   textLayoutInfo.mNumberOfCharacters = 1u;
225   textLayoutInfo.mMaxItalicsOffset = 1.f;
226
227   TextViewProcessor::TextLayoutInfo textLayoutInfo1;
228   textLayoutInfo1 = textLayoutInfo;
229
230   DALI_TEST_EQUALS( textLayoutInfo1.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
231   DALI_TEST_EQUALS( textLayoutInfo1.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
232   DALI_TEST_EQUALS( textLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
233   DALI_TEST_EQUALS( textLayoutInfo1.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
234
235   TextViewProcessor::TextLayoutInfo textLayoutInfo2( textLayoutInfo );
236
237   DALI_TEST_EQUALS( textLayoutInfo2.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
238   DALI_TEST_EQUALS( textLayoutInfo2.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
239   DALI_TEST_EQUALS( textLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
240   DALI_TEST_EQUALS( textLayoutInfo2.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
241   END_TEST;
242 }
243
244 int UtcDaliTextViewEqualityOperator(void)
245 {
246   ToolkitTestApplication application;
247
248   tet_infoline("UtcDaliTextViewEqualityOperator : ");
249
250   TextViewProcessor::TextInfoIndices indices;
251   TextViewProcessor::TextInfoIndices indices1( 1u, 1u, 1u );
252
253   DALI_TEST_CHECK( !( indices == indices1 ) );
254
255   indices = indices1;
256
257   DALI_TEST_CHECK( indices == indices1 );
258   END_TEST;
259 }