2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
24 // Internal headers are allowed here
25 #include <dali-toolkit/internal/controls/text-view/text-view-processor-types.h>
28 using namespace Dali::Toolkit;
29 using namespace Dali::Toolkit::Internal;
31 void dali_text_view_processor_types_startup(void)
33 test_return_value = TET_UNDEF;
36 void dali_text_view_processor_types_cleanup(void)
38 test_return_value = TET_PASS;
44 // Data structures used to create an 'experiment' in TET cases
46 //////////////////////////////////////////////////////////////////
50 int UtcDaliTextViewDefaultConstructorDestructor_PT(void)
52 ToolkitTestApplication application;
54 tet_infoline("UtcDaliTextViewDefaultConstructorDestructor : ");
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 );
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_CHECK( characterLayoutInfo.mStyledText.mText.IsEmpty() );
71 DALI_TEST_EQUALS( characterLayoutInfo.mColorAlpha, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
72 DALI_TEST_CHECK( NULL == characterLayoutInfo.mGradientInfo );
73 DALI_TEST_CHECK( characterLayoutInfo.mIsVisible );
74 DALI_TEST_CHECK( characterLayoutInfo.mSetText );
75 DALI_TEST_CHECK( characterLayoutInfo.mSetStyle );
77 TextViewProcessor::WordLayoutInfo wordLayoutInfo;
78 DALI_TEST_EQUALS( wordLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
79 DALI_TEST_EQUALS( wordLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
80 DALI_TEST_EQUALS( wordLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
81 DALI_TEST_EQUALS( wordLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
83 TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo;
84 DALI_TEST_EQUALS( paragraphLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
85 DALI_TEST_EQUALS( paragraphLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
86 DALI_TEST_EQUALS( paragraphLayoutInfo.mLineHeightOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
87 DALI_TEST_EQUALS( paragraphLayoutInfo.mWordsLayoutInfo.size(), 0u, TEST_LOCATION );
88 DALI_TEST_EQUALS( paragraphLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
90 TextViewProcessor::TextLayoutInfo textLayoutInfo;
91 DALI_TEST_EQUALS( textLayoutInfo.mWholeTextSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
92 DALI_TEST_EQUALS( textLayoutInfo.mMaxWordWidth, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
93 DALI_TEST_EQUALS( textLayoutInfo.mParagraphsLayoutInfo.size(), 0u, TEST_LOCATION );
94 DALI_TEST_EQUALS( textLayoutInfo.mNumberOfCharacters, 0u, TEST_LOCATION );
95 DALI_TEST_EQUALS( textLayoutInfo.mMaxItalicsOffset, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
96 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mSize, Vector2::ZERO, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
97 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mAscender, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
98 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mType, TextViewProcessor::NoSeparator, TEST_LOCATION );
99 DALI_TEST_EQUALS( textLayoutInfo.mEllipsizeLayoutInfo.mCharactersLayoutInfo.size(), 0u, TEST_LOCATION );
103 int UtcDaliTextViewCopyConstructorOperator(void)
105 ToolkitTestApplication application;
107 tet_infoline("UtcDaliTextViewCopyConstructorOperator : ");
109 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo;
110 characterLayoutInfo.mSize = Vector2( 1.f, 1.f );
111 characterLayoutInfo.mBearing = 1.f;
112 characterLayoutInfo.mPosition = Vector3( 1.f, 1.f, 1.f );
113 characterLayoutInfo.mOffset = Vector2( 1.f, 1.f );
114 characterLayoutInfo.mAscender = 1.f;
115 characterLayoutInfo.mUnderlineThickness = 1.f;
116 characterLayoutInfo.mUnderlinePosition = 1.f;
118 characterLayoutInfo.mGlyphActor = TextActor::New( "Hello" );
119 characterLayoutInfo.mStyledText.mText = Text( "Hello" );
121 TextViewProcessor::GradientInfo* info = new TextViewProcessor::GradientInfo();
122 info->mGradientColor = Vector4( 1.f, 1.f, 1.f, 1.f );
123 info->mStartPoint = Vector2( 1.f, 1.f );
124 info->mEndPoint = Vector2( 1.f, 1.f );
126 characterLayoutInfo.mColorAlpha = 0.f;
127 characterLayoutInfo.mGradientInfo = info;
129 characterLayoutInfo.mIsVisible = false;
130 characterLayoutInfo.mSetText = false;
131 characterLayoutInfo.mSetStyle = false;
133 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo1;
134 characterLayoutInfo1 = characterLayoutInfo;
136 DALI_TEST_EQUALS( characterLayoutInfo1.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
137 DALI_TEST_EQUALS( characterLayoutInfo1.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
138 DALI_TEST_EQUALS( characterLayoutInfo1.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
139 DALI_TEST_EQUALS( characterLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
140 DALI_TEST_EQUALS( characterLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
141 DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
142 DALI_TEST_EQUALS( characterLayoutInfo1.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
143 DALI_TEST_CHECK( characterLayoutInfo1.mGlyphActor );
144 DALI_TEST_EQUALS( characterLayoutInfo1.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
145 DALI_TEST_EQUALS( characterLayoutInfo1.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
146 DALI_TEST_EQUALS( characterLayoutInfo1.mGradientInfo->mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
147 DALI_TEST_EQUALS( characterLayoutInfo1.mGradientInfo->mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
148 DALI_TEST_EQUALS( characterLayoutInfo1.mGradientInfo->mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
149 DALI_TEST_CHECK( !characterLayoutInfo1.mIsVisible );
150 DALI_TEST_CHECK( !characterLayoutInfo1.mSetText );
151 DALI_TEST_CHECK( !characterLayoutInfo1.mSetStyle );
153 TextViewProcessor::CharacterLayoutInfo characterLayoutInfo2( characterLayoutInfo );
154 DALI_TEST_EQUALS( characterLayoutInfo2.mBearing, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
155 DALI_TEST_EQUALS( characterLayoutInfo2.mPosition, Vector3( 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
156 DALI_TEST_EQUALS( characterLayoutInfo2.mOffset, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
157 DALI_TEST_EQUALS( characterLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
158 DALI_TEST_EQUALS( characterLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
159 DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlineThickness, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
160 DALI_TEST_EQUALS( characterLayoutInfo2.mUnderlinePosition, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
161 DALI_TEST_CHECK( characterLayoutInfo2.mGlyphActor );
162 DALI_TEST_EQUALS( characterLayoutInfo2.mStyledText.mText.GetLength(), 5u, TEST_LOCATION );
163 DALI_TEST_EQUALS( characterLayoutInfo2.mColorAlpha, 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
164 DALI_TEST_EQUALS( characterLayoutInfo2.mGradientInfo->mGradientColor, Vector4( 1.f, 1.f, 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
165 DALI_TEST_EQUALS( characterLayoutInfo2.mGradientInfo->mStartPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
166 DALI_TEST_EQUALS( characterLayoutInfo2.mGradientInfo->mEndPoint, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
167 DALI_TEST_CHECK( !characterLayoutInfo2.mIsVisible );
168 DALI_TEST_CHECK( !characterLayoutInfo2.mSetText );
169 DALI_TEST_CHECK( !characterLayoutInfo2.mSetStyle );
171 // Increases coverage.
172 characterLayoutInfo2.mGlyphActor.Reset();
173 characterLayoutInfo1 = characterLayoutInfo2;
174 DALI_TEST_CHECK( !characterLayoutInfo1.mGlyphActor );
176 TextViewProcessor::WordLayoutInfo wordLayoutInfo;
177 wordLayoutInfo.mSize = Vector2( 1.f, 1.f );
178 wordLayoutInfo.mAscender = 1.f;
179 wordLayoutInfo.mType = TextViewProcessor::ParagraphSeparator;
181 TextViewProcessor::WordLayoutInfo wordLayoutInfo1;
182 wordLayoutInfo1 = wordLayoutInfo;
184 DALI_TEST_EQUALS( wordLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
185 DALI_TEST_EQUALS( wordLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
186 DALI_TEST_EQUALS( wordLayoutInfo1.mType, TextViewProcessor::ParagraphSeparator, TEST_LOCATION );
188 TextViewProcessor::WordLayoutInfo wordLayoutInfo2( wordLayoutInfo );
190 DALI_TEST_EQUALS( wordLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
191 DALI_TEST_EQUALS( wordLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
192 DALI_TEST_EQUALS( wordLayoutInfo2.mType, TextViewProcessor::ParagraphSeparator, TEST_LOCATION );
194 TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo;
195 paragraphLayoutInfo.mSize = Vector2( 1.f, 1.f );
196 paragraphLayoutInfo.mAscender = 1.f;
197 paragraphLayoutInfo.mLineHeightOffset = 1.f;
198 paragraphLayoutInfo.mNumberOfCharacters = 1u;
200 TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo1;
201 paragraphLayoutInfo1 = paragraphLayoutInfo;
203 DALI_TEST_EQUALS( paragraphLayoutInfo1.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
204 DALI_TEST_EQUALS( paragraphLayoutInfo1.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
205 DALI_TEST_EQUALS( paragraphLayoutInfo1.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
206 DALI_TEST_EQUALS( paragraphLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
208 TextViewProcessor::ParagraphLayoutInfo paragraphLayoutInfo2( paragraphLayoutInfo );
210 DALI_TEST_EQUALS( paragraphLayoutInfo2.mSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
211 DALI_TEST_EQUALS( paragraphLayoutInfo2.mAscender, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
212 DALI_TEST_EQUALS( paragraphLayoutInfo2.mLineHeightOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
213 DALI_TEST_EQUALS( paragraphLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
215 TextViewProcessor::TextLayoutInfo textLayoutInfo;
216 textLayoutInfo.mWholeTextSize = Vector2( 1.f, 1.f );
217 textLayoutInfo.mMaxWordWidth = 1.f;
218 textLayoutInfo.mNumberOfCharacters = 1u;
219 textLayoutInfo.mMaxItalicsOffset = 1.f;
221 TextViewProcessor::TextLayoutInfo textLayoutInfo1;
222 textLayoutInfo1 = textLayoutInfo;
224 DALI_TEST_EQUALS( textLayoutInfo1.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
225 DALI_TEST_EQUALS( textLayoutInfo1.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
226 DALI_TEST_EQUALS( textLayoutInfo1.mNumberOfCharacters, 1u, TEST_LOCATION );
227 DALI_TEST_EQUALS( textLayoutInfo1.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
229 TextViewProcessor::TextLayoutInfo textLayoutInfo2( textLayoutInfo );
231 DALI_TEST_EQUALS( textLayoutInfo2.mWholeTextSize, Vector2( 1.f, 1.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
232 DALI_TEST_EQUALS( textLayoutInfo2.mMaxWordWidth, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
233 DALI_TEST_EQUALS( textLayoutInfo2.mNumberOfCharacters, 1u, TEST_LOCATION );
234 DALI_TEST_EQUALS( textLayoutInfo2.mMaxItalicsOffset, 1.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
238 int UtcDaliTextViewEqualityOperator(void)
240 ToolkitTestApplication application;
242 tet_infoline("UtcDaliTextViewEqualityOperator : ");
244 TextViewProcessor::TextInfoIndices indices;
245 TextViewProcessor::TextInfoIndices indices1( 1u, 1u, 1u );
247 DALI_TEST_CHECK( !( indices == indices1 ) );
251 DALI_TEST_CHECK( indices == indices1 );