From d68f82fcef54dc3099b63f401e95e49abf0483f6 Mon Sep 17 00:00:00 2001 From: Richard Underhill Date: Mon, 13 Apr 2015 16:08:45 +0100 Subject: [PATCH] Added TextLabel and TextField tests Change-Id: I8ac0c4479f87cf6ac4ee20a7e50f7d091b60c2d0 Signed-off-by: Richard Underhill --- automated-tests/src/dali-toolkit/CMakeLists.txt | 2 + .../src/dali-toolkit/utc-Dali-TextField.cpp | 178 ++++++++++++++++++++ .../src/dali-toolkit/utc-Dali-TextLabel.cpp | 186 +++++++++++++++++++++ 3 files changed, 366 insertions(+) create mode 100644 automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp create mode 100644 automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp diff --git a/automated-tests/src/dali-toolkit/CMakeLists.txt b/automated-tests/src/dali-toolkit/CMakeLists.txt index 5c19f09..62d0174 100644 --- a/automated-tests/src/dali-toolkit/CMakeLists.txt +++ b/automated-tests/src/dali-toolkit/CMakeLists.txt @@ -37,6 +37,8 @@ SET(TC_SOURCES utc-Dali-SpotEffect.cpp utc-Dali-SquareDissolveEffect.cpp utc-Dali-TableView.cpp + utc-Dali-TextField.cpp + utc-Dali-TextLabel.cpp utc-Dali-ToolBar.cpp utc-Dali-View.cpp utc-Dali-WaterEffect.cpp diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp new file mode 100644 index 0000000..9069525 --- /dev/null +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp @@ -0,0 +1,178 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include + +using namespace Dali; +using namespace Toolkit; + +void dali_textfield_startup(void) +{ + test_return_value = TET_UNDEF; +} + +void dali_textfield_cleanup(void) +{ + test_return_value = TET_PASS; +} + +namespace +{ + +const char* const PROPERTY_NAME_RENDERING_BACKEND = "rendering-backend"; +const char* const PROPERTY_NAME_PLACEHOLDER_TEXT = "placeholder-text"; +const char* const PROPERTY_NAME_FONT_FAMILY = "font-family"; +const char* const PROPERTY_NAME_FONT_STYLE = "font-style"; +const char* const PROPERTY_NAME_POINT_SIZE = "point-size"; +const char* const PROPERTY_NAME_EXCEED_POLICY = "exceed-policy"; +const char* const PROPERTY_NAME_PRIMARY_CURSOR_COLOR = "primary-cursor-color"; +const char* const PROPERTY_NAME_SECONDARY_CURSOR_COLOR = "secondary-cursor-color"; +const char* const PROPERTY_NAME_ENABLE_CURSOR_BLINK = "enable-cursor-blink"; +const char* const PROPERTY_NAME_CURSOR_BLINK_INTERVAL = "cursor-blink-interval"; +const char* const PROPERTY_NAME_CURSOR_BLINK_DURATION = "cursor-blink-duration"; +const char* const PROPERTY_NAME_GRAB_HANDLE_IMAGE = "grab-handle-image"; +const char* const PROPERTY_NAME_DECORATION_BOUNDING_BOX = "decoration-bounding-box"; +const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontal-alignment"; +const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "vertical-alignment"; + +static bool gObjectCreatedCallBackCalled; + +static void TestCallback(BaseHandle handle) +{ + gObjectCreatedCallBackCalled = true; +} + +} // namespace + +int UtcDaliTextFieldNew(void) +{ + ToolkitTestApplication application; + TextField field = TextField::New(); + DALI_TEST_CHECK( field ); + + //Additional check to ensure object is created by checking if it's registered + ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); + DALI_TEST_CHECK( registry ); + + gObjectCreatedCallBackCalled = false; + registry.ObjectCreatedSignal().Connect(&TestCallback); + { + TextField field = TextField::New(); + } + DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + END_TEST; +} + +int UtcDaliTextFieldGetSetProperty(void) +{ + ToolkitTestApplication application; + TextField field = TextField::New(); + DALI_TEST_CHECK( field ); + + // Check Property Indices are correct + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextField::Property::RENDERING_BACKEND ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PLACEHOLDER_TEXT ) == TextField::Property::PLACEHOLDER_TEXT ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextField::Property::FONT_FAMILY ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextField::Property::FONT_STYLE ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextField::Property::POINT_SIZE ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_EXCEED_POLICY ) == TextField::Property::EXCEED_POLICY ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_PRIMARY_CURSOR_COLOR ) == TextField::Property::PRIMARY_CURSOR_COLOR ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_SECONDARY_CURSOR_COLOR ) == TextField::Property::SECONDARY_CURSOR_COLOR ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_ENABLE_CURSOR_BLINK ) == TextField::Property::ENABLE_CURSOR_BLINK ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_INTERVAL ) == TextField::Property::CURSOR_BLINK_INTERVAL ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_CURSOR_BLINK_DURATION ) == TextField::Property::CURSOR_BLINK_DURATION ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_GRAB_HANDLE_IMAGE ) == TextField::Property::GRAB_HANDLE_IMAGE ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_DECORATION_BOUNDING_BOX ) == TextField::Property::DECORATION_BOUNDING_BOX ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextField::Property::HORIZONTAL_ALIGNMENT ); + DALI_TEST_CHECK( field.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextField::Property::VERTICAL_ALIGNMENT ); + + // Check exceed policy + field.SetProperty( TextField::Property::EXCEED_POLICY, TextField::EXCEED_POLICY_CLIP ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::EXCEED_POLICY ), TextField::EXCEED_POLICY_CLIP, TEST_LOCATION ); + + // Check cursor properties + field.SetProperty( TextField::Property::ENABLE_CURSOR_BLINK, true ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::ENABLE_CURSOR_BLINK ), true, TEST_LOCATION ); + field.SetProperty( TextField::Property::PRIMARY_CURSOR_COLOR, Color::RED ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::PRIMARY_CURSOR_COLOR ), Color::RED, TEST_LOCATION ); + field.SetProperty( TextField::Property::SECONDARY_CURSOR_COLOR, Color::BLUE ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::SECONDARY_CURSOR_COLOR ), Color::BLUE, TEST_LOCATION ); + field.SetProperty( TextField::Property::CURSOR_BLINK_DURATION, 10.0f ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::CURSOR_BLINK_DURATION ), 10.0f, TEST_LOCATION ); + + // Blink interval gets converted to milliseconds.... + field.SetProperty( TextField::Property::CURSOR_BLINK_INTERVAL, 1.0f ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::CURSOR_BLINK_INTERVAL ), 1000.0f, TEST_LOCATION ); + + // Decoration bounding box + field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect( 0, 0, 1, 1 ) ); + DALI_TEST_EQUALS( field.GetProperty >( TextField::Property::DECORATION_BOUNDING_BOX ), Rect( 0, 0, 1, 1 ), TEST_LOCATION ); + + // Check that the Alignment properties can be correctly set + field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::HORIZONTAL_ALIGNMENT ), "BEGIN", TEST_LOCATION ); + field.SetProperty( TextField::Property::VERTICAL_ALIGNMENT, "TOP" ); + DALI_TEST_EQUALS( field.GetProperty( TextField::Property::VERTICAL_ALIGNMENT ), "TOP", TEST_LOCATION ); + END_TEST; +} + +int utcDaliTextFieldBasicRender(void) +{ + ToolkitTestApplication application; + TextField field = TextField::New(); + DALI_TEST_CHECK( field ); + + field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" ); + + try + { + // Render some text with the basic backend + field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_BASIC ); + application.SendNotification(); + application.Render(); + } + catch( ... ) + { + tet_result(TET_FAIL); + } + END_TEST; +} + +int utcDaliTextFieldAtlasRender(void) +{ + ToolkitTestApplication application; + TextField field = TextField::New(); + DALI_TEST_CHECK( field ); + + field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + try + { + // Render some text with the shared atlas backend + field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS ); + application.SendNotification(); + application.Render(); + } + catch( ... ) + { + tet_result(TET_FAIL); + } + END_TEST; +} + diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp new file mode 100644 index 0000000..3365605 --- /dev/null +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include + +using namespace Dali; +using namespace Toolkit; + +void dali_textlabel_startup(void) +{ + test_return_value = TET_UNDEF; +} + +void dali_textlabel_cleanup(void) +{ + test_return_value = TET_PASS; +} + +namespace +{ + +const char* const PROPERTY_NAME_RENDERING_BACKEND = "rendering-backend"; +const char* const PROPERTY_NAME_TEXT = "text"; +const char* const PROPERTY_NAME_FONT_FAMILY = "font-family"; +const char* const PROPERTY_NAME_FONT_STYLE = "font-style"; +const char* const PROPERTY_NAME_POINT_SIZE = "point-size"; +const char* const PROPERTY_NAME_MULTI_LINE = "multi-line"; +const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT = "horizontal-alignment"; +const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT = "vertical-alignment"; +const char* const PROPERTY_NAME_TEXT_COLOR = "text-color"; +const char* const PROPERTY_NAME_SHADOW_OFFSET = "shadow-offset"; +const char* const PROPERTY_NAME_SHADOW_COLOR = "shadow-color"; +const char* const PROPERTY_NAME_UNDERLINE_ENABLED = "underline-enabled"; +const char* const PROPERTY_NAME_UNDERLINE_COLOR = "underline-color"; + +static bool gObjectCreatedCallBackCalled; + +static void TestCallback(BaseHandle handle) +{ + gObjectCreatedCallBackCalled = true; +} + +} // namespace + +int UtcDaliTextLabelNew(void) +{ + ToolkitTestApplication application; + TextLabel label = TextLabel::New("Test Text"); + DALI_TEST_CHECK( label ); + + //Additional check to ensure object is created by checking if it's registered + ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); + DALI_TEST_CHECK( registry ); + + gObjectCreatedCallBackCalled = false; + registry.ObjectCreatedSignal().Connect(&TestCallback); + { + TextLabel label = TextLabel::New("Test Text"); + } + DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + END_TEST; +} + +int UtcDaliTextLabelGetSetProperty(void) +{ + ToolkitTestApplication application; + TextLabel label = TextLabel::New("Test Text"); + DALI_TEST_CHECK( label ); + + // Check Property Indices are correct + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_RENDERING_BACKEND ) == TextLabel::Property::RENDERING_BACKEND ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT ) == TextLabel::Property::TEXT ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_FAMILY ) == TextLabel::Property::FONT_FAMILY ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_FONT_STYLE ) == TextLabel::Property::FONT_STYLE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_POINT_SIZE ) == TextLabel::Property::POINT_SIZE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_MULTI_LINE ) == TextLabel::Property::MULTI_LINE ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_HORIZONTAL_ALIGNMENT ) == TextLabel::Property::HORIZONTAL_ALIGNMENT ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_VERTICAL_ALIGNMENT ) == TextLabel::Property::VERTICAL_ALIGNMENT ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_TEXT_COLOR ) == TextLabel::Property::TEXT_COLOR ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW_OFFSET ) == TextLabel::Property::SHADOW_OFFSET ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_SHADOW_COLOR ) == TextLabel::Property::SHADOW_COLOR ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_ENABLED ) == TextLabel::Property::UNDERLINE_ENABLED ); + DALI_TEST_CHECK( label.GetPropertyIndex( PROPERTY_NAME_UNDERLINE_COLOR ) == TextLabel::Property::UNDERLINE_COLOR ); + + // Check label defaults are correct + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::RENDERING_BACKEND ), Text::RENDERING_SHARED_ATLAS, TEST_LOCATION ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::TEXT_COLOR ), Color::WHITE, TEST_LOCATION ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::SHADOW_OFFSET ), Vector2::ZERO, TEST_LOCATION ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::SHADOW_COLOR ), Vector4::ZERO, TEST_LOCATION ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE_ENABLED ), false, TEST_LOCATION ); + + // Check that text can be correctly reset + label.SetProperty( TextLabel::Property::TEXT, "Setting Text" ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::TEXT ), "Setting Text", TEST_LOCATION ); + + // Check that the Alignment properties can be correctly set + label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "BEGIN" ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT ), "BEGIN", TEST_LOCATION ); + label.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "TOP" ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::VERTICAL_ALIGNMENT ), "TOP", TEST_LOCATION ); + + // Check that shadow parameters can be correctly set + label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 3.0f, 3.0f ) ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::SHADOW_OFFSET ), Vector2( 3.0f, 3.0f ), TEST_LOCATION ); + label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLUE ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::SHADOW_COLOR ), Color::BLUE, TEST_LOCATION ); + + // Check that underline parameters can be correctly set + label.SetProperty( TextLabel::Property::UNDERLINE_ENABLED, true ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE_ENABLED ), true, TEST_LOCATION ); + label.SetProperty( TextLabel::Property::UNDERLINE_COLOR, Color::RED ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::UNDERLINE_COLOR ), Color::RED, TEST_LOCATION ); + + // Toggle multi-line + label.SetProperty( TextLabel::Property::MULTI_LINE, true ); + DALI_TEST_EQUALS( label.GetProperty( TextLabel::Property::MULTI_LINE ), true, TEST_LOCATION ); + END_TEST; +} + +int utcDaliTextlabelBasicRender(void) +{ + ToolkitTestApplication application; + TextLabel label = TextLabel::New("Test Text"); + DALI_TEST_CHECK( label ); + + label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "BEGIN" ); + label.SetProperty( TextLabel::Property::MULTI_LINE, true ); + + try + { + // Render some text with the basic backend + label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_BASIC ); + application.SendNotification(); + application.Render(); + } + catch( ... ) + { + tet_result(TET_FAIL); + } + END_TEST; +} + +int utcDaliTextlabelAtlasRender(void) +{ + ToolkitTestApplication application; + TextLabel label = TextLabel::New("Test Text"); + DALI_TEST_CHECK( label ); + + // Turn on all the effects + label.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); + label.SetProperty( TextLabel::Property::MULTI_LINE, true ); + label.SetProperty( TextLabel::Property::UNDERLINE_ENABLED, true ); + label.SetProperty( TextLabel::Property::UNDERLINE_COLOR, Color::RED ); + label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 1.0f, 1.0f ) ); + label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLUE ); + try + { + // Render some text with the shared atlas backend + label.SetProperty( TextLabel::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS ); + application.SendNotification(); + application.Render(); + } + catch( ... ) + { + tet_result(TET_FAIL); + } + END_TEST; +} + -- 2.7.4