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