Revert to tizen branch.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-TextField.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 using namespace Dali;
24 using namespace Toolkit;
25
26 void dali_textfield_startup(void)
27 {
28   test_return_value = TET_UNDEF;
29 }
30
31 void dali_textfield_cleanup(void)
32 {
33   test_return_value = TET_PASS;
34 }
35
36 namespace
37 {
38
39 const char* const PROPERTY_NAME_RENDERING_BACKEND = "rendering-backend";
40 const char* const PROPERTY_NAME_PLACEHOLDER_TEXT = "placeholder-text";
41 const char* const PROPERTY_NAME_FONT_FAMILY = "font-family";
42 const char* const PROPERTY_NAME_FONT_STYLE = "font-style";
43 const char* const PROPERTY_NAME_POINT_SIZE = "point-size";
44 const char* const PROPERTY_NAME_EXCEED_POLICY = "exceed-policy";
45 const char* const PROPERTY_NAME_PRIMARY_CURSOR_COLOR = "primary-cursor-color";
46 const char* const PROPERTY_NAME_SECONDARY_CURSOR_COLOR = "secondary-cursor-color";
47 const char* const PROPERTY_NAME_ENABLE_CURSOR_BLINK = "enable-cursor-blink";
48 const char* const PROPERTY_NAME_CURSOR_BLINK_INTERVAL = "cursor-blink-interval";
49 const char* const PROPERTY_NAME_CURSOR_BLINK_DURATION = "cursor-blink-duration";
50 const char* const PROPERTY_NAME_GRAB_HANDLE_IMAGE = "grab-handle-image";
51 const char* const PROPERTY_NAME_DECORATION_BOUNDING_BOX = "decoration-bounding-box";
52 const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontal-alignment";
53 const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "vertical-alignment";
54
55 static bool gObjectCreatedCallBackCalled;
56
57 static void TestCallback(BaseHandle handle)
58 {
59   gObjectCreatedCallBackCalled = true;
60 }
61
62 } // namespace
63
64 int UtcDaliTextFieldNew(void)
65 {
66   ToolkitTestApplication application;
67   TextField field = TextField::New();
68   DALI_TEST_CHECK( field );
69
70   //Additional check to ensure object is created by checking if it's registered
71   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
72   DALI_TEST_CHECK( registry );
73
74   gObjectCreatedCallBackCalled = false;
75   registry.ObjectCreatedSignal().Connect(&TestCallback);
76   {
77     TextField field = TextField::New();
78   }
79   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
80   END_TEST;
81 }
82
83 int UtcDaliTextFieldGetSetProperty(void)
84 {
85   ToolkitTestApplication application;
86   TextField field = TextField::New();
87   DALI_TEST_CHECK( field );
88
89   // Check Property Indices are correct
90   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextField::Property::RENDERING_BACKEND );
91   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT ) == TextField::Property::PLACEHOLDER_TEXT );
92   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextField::Property::FONT_FAMILY );
93   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextField::Property::FONT_STYLE );
94   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextField::Property::POINT_SIZE );
95   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_EXCEED_POLICY ) == TextField::Property::EXCEED_POLICY );
96   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PRIMARY_CURSOR_COLOR ) == TextField::Property::PRIMARY_CURSOR_COLOR );
97   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SECONDARY_CURSOR_COLOR ) == TextField::Property::SECONDARY_CURSOR_COLOR );
98   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_ENABLE_CURSOR_BLINK ) == TextField::Property::ENABLE_CURSOR_BLINK );
99   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_INTERVAL ) == TextField::Property::CURSOR_BLINK_INTERVAL );
100   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_DURATION ) == TextField::Property::CURSOR_BLINK_DURATION );
101   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_GRAB_HANDLE_IMAGE ) == TextField::Property::GRAB_HANDLE_IMAGE );
102   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_DECORATION_BOUNDING_BOX ) == TextField::Property::DECORATION_BOUNDING_BOX );
103   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextField::Property::HORIZONTAL_ALIGNMENT );
104   DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextField::Property::VERTICAL_ALIGNMENT );
105
106   // Check exceed policy
107   field.SetProperty( TextField::Property::EXCEED_POLICY, TextField::EXCEED_POLICY_CLIP );
108   DALI_TEST_EQUALS( field.GetProperty<int>( TextField::Property::EXCEED_POLICY ), TextField::EXCEED_POLICY_CLIP, TEST_LOCATION );
109
110   // Check cursor properties
111   field.SetProperty( TextField::Property::ENABLE_CURSOR_BLINK, true );
112   DALI_TEST_EQUALS( field.GetProperty<bool>( TextField::Property::ENABLE_CURSOR_BLINK ), true, TEST_LOCATION );
113   field.SetProperty( TextField::Property::PRIMARY_CURSOR_COLOR, Color::RED );
114   DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::PRIMARY_CURSOR_COLOR ), Color::RED, TEST_LOCATION );
115   field.SetProperty( TextField::Property::SECONDARY_CURSOR_COLOR, Color::BLUE );
116   DALI_TEST_EQUALS( field.GetProperty<Vector4>( TextField::Property::SECONDARY_CURSOR_COLOR ), Color::BLUE, TEST_LOCATION );
117   field.SetProperty( TextField::Property::CURSOR_BLINK_DURATION, 10.0f );
118   DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_DURATION ), 10.0f, TEST_LOCATION );
119
120   // Blink interval gets converted to milliseconds....
121   field.SetProperty( TextField::Property::CURSOR_BLINK_INTERVAL, 1.0f );
122   DALI_TEST_EQUALS( field.GetProperty<float>( TextField::Property::CURSOR_BLINK_INTERVAL ), 1000.0f, TEST_LOCATION );
123
124   // Decoration bounding box
125   field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( 0, 0, 1, 1 ) );
126   DALI_TEST_EQUALS( field.GetProperty<Rect <int > >( TextField::Property::DECORATION_BOUNDING_BOX ), Rect<int>( 0, 0, 1, 1 ), TEST_LOCATION );
127
128   // Check that the Alignment properties can be correctly set
129   field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
130   DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::HORIZONTAL_ALIGNMENT ), "BEGIN", TEST_LOCATION );
131   field.SetProperty( TextField::Property::VERTICAL_ALIGNMENT, "TOP" );
132   DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::VERTICAL_ALIGNMENT ), "TOP", TEST_LOCATION );
133   END_TEST;
134 }
135
136 int utcDaliTextFieldBasicRender(void)
137 {
138   ToolkitTestApplication application;
139   TextField field = TextField::New();
140   DALI_TEST_CHECK( field );
141
142   field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" );
143
144   try
145   {
146     // Render some text with the basic backend
147     field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_BASIC );
148     application.SendNotification();
149     application.Render();
150   }
151   catch( ... )
152   {
153     tet_result(TET_FAIL);
154   }
155   END_TEST;
156 }
157
158 int utcDaliTextFieldAtlasRender(void)
159 {
160   ToolkitTestApplication application;
161   TextField field = TextField::New();
162   DALI_TEST_CHECK( field );
163
164   field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
165   try
166   {
167     // Render some text with the shared atlas backend
168     field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS );
169     application.SendNotification();
170     application.Render();
171   }
172   catch( ... )
173   {
174     tet_result(TET_FAIL);
175   }
176   END_TEST;
177 }
178