2 * Copyright (c) 2022 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.
17 #include <dali/devel-api/adaptor-framework/style-monitor.h>
23 #include <dali-toolkit-test-suite-utils.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali/integration-api/events/touch-event-integ.h>
26 #include <dali-toolkit/devel-api/builder/builder.h>
27 #include <test-button.h>
28 #include <test-animation-data.h>
29 #include <toolkit-style-monitor.h>
30 #include <dummy-control.h>
31 #include <dali-toolkit/devel-api/controls/control-devel.h>
32 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
33 #include <dali-toolkit/devel-api/visual-factory/visual-base.h>
34 #include <dali-toolkit/devel-api/styling/style-manager-devel.h>
35 #include <dali/integration-api/events/key-event-integ.h>
37 // for Internal::StyleManager
38 #include <dali-toolkit/internal/styling/style-manager-impl.h>
41 using namespace Dali::Toolkit;
45 std::string defaultTheme;
47 } // anonymous namespace
52 void dali_style_manager_startup(void)
54 test_return_value = TET_UNDEF;
56 std::ifstream t("src/dali-toolkit-styling/default-theme.json");
57 defaultTheme = std::string((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
60 void dali_style_manager_cleanup(void)
62 test_return_value = TET_PASS;
66 Visual::Base CheckVisual( Impl::DummyControl& dummyImpl, Property::Index visualId, int type, const char* location )
68 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(visualId), true, location);
69 Visual::Base visual = dummyImpl.GetVisual(visualId);
70 DALI_TEST_EQUALS( (bool)visual, true, location );
72 visual.CreatePropertyMap( map );
73 Property::Value* value = map.Find( Toolkit::Visual::Property::TYPE );
74 DALI_TEST_EQUALS( value != NULL, true, location );
77 value->Get( visualType );
78 DALI_TEST_EQUALS( visualType, type, location );
83 Integration::Bitmap* CreateBitmap( unsigned int imageWidth, unsigned int imageHeight, unsigned int initialColor, Pixel::Format pixelFormat )
85 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
86 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
87 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
89 memset( pixbuffer, initialColor, imageHeight * imageWidth * bytesPerPixel );
94 Integration::ResourcePointer CustomizeNinePatch( ToolkitTestApplication& application,
95 unsigned int ninePatchImageWidth,
96 unsigned int ninePatchImageHeight)
98 TestPlatformAbstraction& platform = application.GetPlatform();
100 Pixel::Format pixelFormat = Pixel::RGBA8888;
102 tet_infoline("Create Bitmap");
103 platform.SetClosestImageSize(Vector2( ninePatchImageWidth, ninePatchImageHeight));
104 Integration::Bitmap* bitmap = CreateBitmap( ninePatchImageWidth, ninePatchImageHeight, 0xFF, pixelFormat );
106 tet_infoline("Getting resource");
107 Integration::ResourcePointer resourcePtr(bitmap);
108 platform.SetSynchronouslyLoadedResource( resourcePtr);
113 int UtcDaliStyleManagerConstructorP(void)
115 ToolkitTestApplication application;
117 tet_infoline(" UtcDaliStyleManagerConstructorP");
118 StyleManager styleManager;
119 DALI_TEST_CHECK( !styleManager);
123 int UtcDaliStyleManagerCopyConstructorP(void)
125 ToolkitTestApplication application;
127 StyleManager styleManager = StyleManager::Get();
128 StyleManager copyOfStyleManager( styleManager );
130 DALI_TEST_CHECK( copyOfStyleManager );
134 int UtcDaliStyleManagerAssignmentOperatorP(void)
136 ToolkitTestApplication application;
138 StyleManager styleManager = StyleManager::Get();
139 StyleManager copyOfStyleManager = styleManager;
141 DALI_TEST_CHECK( copyOfStyleManager );
142 DALI_TEST_CHECK( copyOfStyleManager == styleManager );
146 int UtcDaliStyleManagerGet(void)
148 ToolkitTestApplication application;
150 tet_infoline(" UtcDaliStyleManagerGet");
154 type = TypeRegistry::Get().GetTypeInfo( "StyleManager" );
155 DALI_TEST_CHECK( type );
156 BaseHandle handle = type.CreateInstance();
157 DALI_TEST_CHECK( handle );
159 StyleManager manager;
161 manager = StyleManager::Get();
162 DALI_TEST_CHECK(manager);
164 StyleManager newManager = StyleManager::Get();
165 DALI_TEST_CHECK(newManager);
167 // Check that focus manager is a singleton
168 DALI_TEST_CHECK(manager == newManager);
175 class StyleChangedSignalChecker : public ConnectionTracker
178 StyleChangedSignalChecker()
183 void OnStyleChanged(StyleManager styleManager, StyleChange::Type type)
197 } // anonymous namespace
199 int UtcDaliStyleManagerApplyTheme(void)
201 ToolkitTestApplication application;
203 tet_infoline( "Testing StyleManager ApplyTheme" );
209 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Verbose\"\n"
215 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
216 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
227 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
228 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
233 // Add 2 buttons to test how many times the signal is sent
234 Test::TestButton testButton = Test::TestButton::New();
235 Test::TestButton testButton2 = Test::TestButton::New();
236 application.GetScene().Add( testButton );
237 application.GetScene().Add( testButton2 );
238 StyleChangedSignalChecker styleChangedSignalHandler;
239 StyleChangedSignalChecker styleChangedSignalHandler2;
240 StyleManager styleManager = StyleManager::Get();
242 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
244 // To ensure we make VisualFactory
245 VisualFactory factory = VisualFactory::Get();
246 Property::Map propertyMap;
247 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
248 Visual::Base textVisual = factory.CreateVisual( propertyMap );
251 application.SendNotification();
252 application.Render();
254 tet_infoline("Apply the style");
256 std::string themeFile("ThemeOne");
257 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
258 StyleManager::Get().ApplyTheme(themeFile);
260 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
261 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
263 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
264 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
266 tet_infoline("Testing that the signal handler is called only once");
267 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
269 tet_infoline("Override the background property");
270 testButton.SetProperty( Test::TestButton::Property::BACKGROUND_COLOR, Color::GREEN );
271 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
272 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
273 DALI_TEST_EQUALS( bgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
274 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
277 application.SendNotification();
278 application.Render();
280 tet_infoline("Apply the style again");
282 styleChangedSignalHandler.signalCount = 0;
283 StyleManager::Get().ApplyTheme(themeFile);
285 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
286 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
288 tet_infoline("Check that the property is changed");
289 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
290 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
291 tet_infoline("Testing that the signal handler is called only once");
292 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
294 tet_infoline( "Load a different stylesheet");
296 tet_infoline("Apply the new style");
297 std::string themeFile2("ThemeTwo");
298 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
300 styleChangedSignalHandler.signalCount = 0;
301 StyleManager::Get().ApplyTheme(themeFile2);
303 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
304 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
306 tet_infoline("Check that the properties change, but the signal gets sent only once");
307 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
308 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
309 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
315 int UtcDaliStyleManagerApplyDefaultTheme(void)
317 tet_infoline( "Testing StyleManager ApplyTheme" );
319 const char* defaultTheme =
323 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Concise\"\n"
329 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
330 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
334 // Bg: Yellow, Fg: Blue
336 const char* appTheme =
342 " \"backgroundColor\":[1.0,0.0,1.0,1.0],\n"
343 " \"foregroundColor\":[0.0,1.0,0.0,1.0]\n"
347 // Bg::Magenta, Fg:Green
349 std::string filepath(TEST_RESOURCE_DIR "");
351 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
353 ToolkitTestApplication application;
355 Test::TestButton testButton = Test::TestButton::New();
356 application.GetScene().Add( testButton );
357 StyleChangedSignalChecker styleChangedSignalHandler;
358 StyleManager styleManager = StyleManager::Get();
360 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
363 application.SendNotification();
364 application.Render();
367 Property::Value defaultBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
368 Property::Value defaultFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
370 tet_infoline("Apply the style");
372 std::string themeFile("ThemeOne");
373 Test::StyleMonitor::SetThemeFileOutput(themeFile, appTheme);
374 StyleManager::Get().ApplyTheme(themeFile);
376 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
377 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
379 DALI_TEST_EQUALS( bgColor, Property::Value(Color::MAGENTA), 0.001, TEST_LOCATION );
380 DALI_TEST_EQUALS( fgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
382 tet_infoline("Testing that the signal handler is called only once");
383 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
384 tet_infoline("Revert the style");
386 styleChangedSignalHandler.signalCount = 0;
387 StyleManager::Get().ApplyDefaultTheme();
389 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
390 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
392 tet_infoline("Check that the property is reverted");
393 DALI_TEST_EQUALS( bgColor, defaultBgColor, 0.001, TEST_LOCATION );
394 DALI_TEST_EQUALS( fgColor, defaultFgColor, 0.001, TEST_LOCATION );
395 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
396 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
397 tet_infoline("Testing that the signal handler is called only once");
398 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
404 int UtcDaliStyleManagerSetStyleConstantP(void)
406 ToolkitTestApplication application;
408 tet_infoline( " UtcDaliStyleManagerSetStyleConstantP" );
410 StyleManager manager = StyleManager::Get();
412 std::string key( "key" );
413 Property::Value value( 100 );
415 manager.SetStyleConstant( key, value );
417 Property::Value returnedValue;
418 manager.GetStyleConstant( key, returnedValue );
420 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
425 int UtcDaliStyleManagerGetStyleConstantP(void)
427 ToolkitTestApplication application;
429 tet_infoline( " UtcDaliStyleManagerGetStyleConstantP" );
431 StyleManager manager = StyleManager::Get();
433 std::string key( "key" );
434 Property::Value value( 100 );
436 manager.SetStyleConstant( key, value );
438 Property::Value returnedValue;
439 manager.GetStyleConstant( key, returnedValue );
441 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
445 int UtcDaliStyleManagerGetStyleConstantN(void)
447 ToolkitTestApplication application;
449 tet_infoline( " UtcDaliStyleManagerGetStyleConstantN" );
451 StyleManager manager = StyleManager::Get();
453 std::string key2( "key2" );
454 Property::Value returnedValue2;
455 DALI_TEST_CHECK( !manager.GetStyleConstant( key2, returnedValue2 ) );
460 int UtcDaliStyleManagerApplyStyle(void)
462 ToolkitTestApplication application;
464 tet_infoline( "UtcDaliStyleManagerApplyStyle - test that a style can be applied to a single button" );
470 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"General\"\n"
476 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
477 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
488 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
489 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
495 Test::TestButton testButton = Test::TestButton::New();
496 Test::TestButton testButton2 = Test::TestButton::New();
497 application.GetScene().Add( testButton );
498 application.GetScene().Add( testButton2 );
499 StyleChangedSignalChecker styleChangedSignalHandler;
500 StyleManager styleManager = StyleManager::Get();
502 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
504 tet_infoline("Apply the style");
506 std::string themeFile("ThemeOne");
507 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
508 styleManager.ApplyTheme(themeFile);
511 application.SendNotification();
512 application.Render();
514 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
515 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
517 // Apply the style to the test button:
518 std::string themeFile2("ThemeTwo");
519 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
520 styleManager.ApplyStyle( testButton, themeFile2, "testbutton" );
522 tet_infoline("Check that the properties change for the first button");
523 Property::Value bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
524 Property::Value fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
525 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
526 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
528 DALI_TEST_NOT_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
529 DALI_TEST_NOT_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
531 tet_infoline("Check that the properties remain the same for the second button");
532 bgColor = testButton2.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
533 fgColor = testButton2.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
534 DALI_TEST_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
535 DALI_TEST_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
541 int UtcDaliStyleManagerIncludeStyleP(void)
543 ToolkitTestApplication application;
545 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works" );
551 " \"src/dali-toolkit-styling/theme2.json\"\n"
557 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
563 Test::TestButton testButton = Test::TestButton::New();
564 Test::TestButton testButton2 = Test::TestButton::New();
565 application.GetScene().Add( testButton );
566 application.GetScene().Add( testButton2 );
567 StyleChangedSignalChecker styleChangedSignalHandler;
568 StyleManager styleManager = StyleManager::Get();
570 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
572 tet_infoline("Apply the style");
574 std::string themeFile("ThemeOne");
575 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
577 styleManager.ApplyTheme(themeFile);
580 application.SendNotification();
581 application.Render();
583 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
584 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
586 DALI_TEST_EQUALS( themedBgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
587 DALI_TEST_EQUALS( themedFgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
593 int UtcDaliStyleManagerIncludeStyleN(void)
595 ToolkitTestApplication application;
597 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works, but included stylesheet is bad json" );
603 " \"src/dali-toolkit-styling/theme3.json\"\n"
609 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
615 Test::TestButton testButton = Test::TestButton::New();
616 Test::TestButton testButton2 = Test::TestButton::New();
617 application.GetScene().Add( testButton );
618 application.GetScene().Add( testButton2 );
619 StyleChangedSignalChecker styleChangedSignalHandler;
620 StyleManager styleManager = StyleManager::Get();
622 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
624 tet_infoline("Apply the style");
626 std::string themeFile("ThemeOne");
627 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
631 styleManager.ApplyTheme(themeFile);
633 catch( Dali::DaliException& e )
635 DALI_TEST_ASSERT( e, "!\"Cannot parse JSON\"", TEST_LOCATION );
642 int UtcDaliStyleManagerStyleChangedSignalFontFamily(void)
644 tet_infoline("Test that the StyleChange signal is fired when the font family is altered" );
645 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
648 ToolkitTestApplication application;
650 std::string labelStr("Label");
651 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
652 application.GetScene().Add( label );
654 Toolkit::TextField field = Toolkit::TextField::New();
655 application.GetScene().Add( field );
657 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
658 application.GetScene().Add( editor );
660 StyleChangedSignalChecker styleChangedSignalHandler;
661 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
662 StyleManager styleManager = StyleManager::Get();
664 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
666 Test::StyleMonitor::SetDefaultFontFamily("Times New Roman");
668 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_CHANGE);
670 tet_infoline("Test that the StyleChanged signal is received only once");
672 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
674 // Check that the label's font style has been altered
675 Property::Value family = label.GetProperty(TextLabel::Property::FONT_FAMILY);
676 std::string familyStr;
677 family.Get( familyStr );
679 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
681 // Check that the field's font style has been altered
682 family = field.GetProperty(TextField::Property::FONT_FAMILY);
683 family.Get( familyStr );
685 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
687 // Check that the editor's font style has been altered
688 family = editor.GetProperty(TextEditor::Property::FONT_FAMILY);
689 family.Get( familyStr );
691 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
696 int UtcDaliStyleManagerStyleChangedSignalFontSize(void)
698 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
700 const char* defaultTheme =
704 " \"textlabelFontSize0\":\n"
706 " \"pointSize\":10\n"
708 " \"textlabelFontSize1\":\n"
710 " \"pointSize\":10\n"
712 " \"textlabelFontSize2\":\n"
714 " \"pointSize\":12\n"
716 " \"textlabelFontSize3\":\n"
718 " \"pointSize\":14\n"
720 " \"textlabelFontSize4\":\n"
722 " \"pointSize\":16\n"
727 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
729 ToolkitTestApplication application;
731 std::string labelStr("Label");
732 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
733 application.GetScene().Add( label );
735 Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
736 application.GetScene().Add( label2 );
738 StyleChangedSignalChecker styleChangedSignalHandler;
739 StyleMonitor styleMonitor = StyleMonitor::Get();
740 StyleManager styleManager = StyleManager::Get();
742 label.SetProperty(TextLabel::Property::POINT_SIZE, 10.0f);
744 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
746 Test::StyleMonitor::SetDefaultFontSize(2);
747 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
749 tet_infoline("Test that the StyleChanged signal is received only once");
750 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
752 tet_infoline("Test that the label's font size has been altered\n");
753 Property::Value pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
755 pointSizeValue.Get( pointSize );
757 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
759 styleChangedSignalHandler.signalCount = 0;
761 Test::StyleMonitor::SetDefaultFontSize(4);
762 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
764 tet_infoline("Test that the StyleChanged signal is received only once");
765 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
767 // Check that the label's font style has been altered
768 pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
769 pointSizeValue.Get( pointSize );
771 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
778 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextField(void)
780 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
782 const char* defaultTheme =
786 " \"textfieldFontSize0\":\n"
790 " \"textfieldFontSize1\":\n"
792 " \"pointSize\":10\n"
794 " \"textfieldFontSize2\":\n"
796 " \"pointSize\":12\n"
798 " \"textfieldFontSize3\":\n"
800 " \"pointSize\":14\n"
802 " \"textfieldFontSize4\":\n"
804 " \"pointSize\":16\n"
809 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
811 ToolkitTestApplication application;
813 std::string fieldStr("Field");
814 Toolkit::TextField field = Toolkit::TextField::New();
815 field.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
816 application.GetScene().Add( field );
818 Toolkit::TextField field2 = Toolkit::TextField::New();
819 application.GetScene().Add( field2 );
820 field2.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
822 StyleChangedSignalChecker styleChangedSignalHandler;
823 StyleMonitor styleMonitor = StyleMonitor::Get();
824 StyleManager styleManager = StyleManager::Get();
826 field.SetProperty(TextField::Property::POINT_SIZE, 10.0f);
828 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
830 Test::StyleMonitor::SetDefaultFontSize(2);
831 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
833 tet_infoline("Test that the StyleChanged signal is received only once");
834 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
836 tet_infoline("Test that the field's font size has been altered\n");
837 Property::Value pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
839 pointSizeValue.Get( pointSize );
841 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
843 styleChangedSignalHandler.signalCount = 0;
845 Test::StyleMonitor::SetDefaultFontSize(4);
846 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
848 tet_infoline("Test that the StyleChanged signal is received only once");
849 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
851 // Check that the field's font style has been altered
852 pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
853 pointSizeValue.Get( pointSize );
855 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
861 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextEditor(void)
863 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
865 const char* defaultTheme =
869 " \"texteditorFontSize0\":\n"
871 " \"pointSize\":10\n"
873 " \"texteditorFontSize1\":\n"
875 " \"pointSize\":12\n"
877 " \"texteditorFontSize2\":\n"
879 " \"pointSize\":14\n"
881 " \"texteditorFontSize3\":\n"
883 " \"pointSize\":18\n"
885 " \"texteditorFontSize4\":\n"
887 " \"pointSize\":25\n"
892 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
894 ToolkitTestApplication application;
896 std::string editorStr("Editor");
897 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
898 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
899 application.GetScene().Add( editor );
901 Toolkit::TextEditor editor2 = Toolkit::TextEditor::New();
902 application.GetScene().Add( editor2 );
903 editor2.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
905 StyleChangedSignalChecker styleChangedSignalHandler;
906 StyleMonitor styleMonitor = StyleMonitor::Get();
907 StyleManager styleManager = StyleManager::Get();
909 editor.SetProperty(TextEditor::Property::POINT_SIZE, 10.0f);
911 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
913 Test::StyleMonitor::SetDefaultFontSize(2);
914 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
916 tet_infoline("Test that the StyleChanged signal is received only once");
917 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
919 tet_infoline("Test that the editor's font size has been altered\n");
920 Property::Value pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
922 pointSizeValue.Get( pointSize );
924 DALI_TEST_EQUALS( pointSize, 14.0f, 0.001, TEST_LOCATION );
926 styleChangedSignalHandler.signalCount = 0;
928 Test::StyleMonitor::SetDefaultFontSize(4);
929 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
931 tet_infoline("Test that the StyleChanged signal is received only once");
932 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
934 // Check that the editor's font style has been altered
935 pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
936 pointSizeValue.Get( pointSize );
938 DALI_TEST_EQUALS( pointSize, 25.0f, 0.001, TEST_LOCATION );
945 int UtcDaliStyleManagerSetState01(void)
947 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
948 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
951 ToolkitTestApplication application;
953 StyleChangedSignalChecker styleChangedSignalHandler;
954 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
955 StyleManager styleManager = StyleManager::Get();
957 DummyControl actor = DummyControl::New(true);
958 actor.SetStyleName("BasicControl");
959 application.GetScene().Add(actor);
961 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
962 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
964 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
965 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
966 Visual::Base labelVisual1 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
967 Property::Map labelMap;
968 labelVisual1.CreatePropertyMap( labelMap );
969 labelMap[TextVisual::Property::TEXT] = "New text";
970 VisualFactory factory = VisualFactory::Get();
971 labelVisual1 = factory.CreateVisual(labelMap);
972 dummyImpl.UnregisterVisual(DummyControl::Property::LABEL_VISUAL );
973 dummyImpl.RegisterVisual(DummyControl::Property::LABEL_VISUAL, labelVisual1 );
975 actor.SetProperty( DevelControl::Property::STATE, DevelControl::FOCUSED );
977 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
978 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
979 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::LABEL_VISUAL), true, TEST_LOCATION);
981 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
982 Visual::Base labelVisual2 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
983 DALI_TEST_CHECK( visual1 != visual2 );
984 DALI_TEST_CHECK( labelVisual1 != labelVisual2 );
986 labelVisual2.CreatePropertyMap( labelMap );
987 Property::Value* textValue = labelMap.Find( Toolkit::TextVisual::Property::TEXT, "text");
988 DALI_TEST_CHECK( textValue );
989 Property::Value* pointSizeValue = labelMap.Find( Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
990 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
991 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
992 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
995 actor.SetProperty( DevelControl::Property::STATE, DevelControl::DISABLED );
997 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
999 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1000 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1001 DALI_TEST_CHECK( !focusVisual );
1002 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
1004 DALI_TEST_CHECK( visual1 != visual3 );
1005 DALI_TEST_CHECK( visual2 != visual3 );
1007 Visual::Base labelVisual3 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1008 DALI_TEST_CHECK( labelVisual2 != labelVisual3 );
1010 labelVisual2.CreatePropertyMap( labelMap );
1011 textValue = labelMap.Find(Toolkit::TextVisual::Property::TEXT, "text");
1012 DALI_TEST_CHECK( textValue );
1013 pointSizeValue = labelMap.Find(Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
1014 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
1015 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
1016 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
1021 int UtcDaliStyleManagerSetState02(void)
1023 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1024 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1027 ToolkitTestApplication application;
1029 StyleChangedSignalChecker styleChangedSignalHandler;
1030 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1031 StyleManager styleManager = StyleManager::Get();
1033 DummyControl actor = DummyControl::New(true);
1034 actor.SetStyleName("BasicControl");
1035 application.GetScene().Add(actor);
1037 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1038 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1040 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1041 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1043 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1044 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1046 actor.SetProperty( DevelControl::Property::STATE,
1047 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1049 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1050 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1052 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1053 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
1055 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1056 DALI_TEST_CHECK( visual1 != visual2 );
1058 actor.SetProperty( DevelControl::Property::STATE,
1059 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1061 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1062 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1064 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1066 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1068 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1069 DALI_TEST_CHECK( !testVisual );
1070 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1071 DALI_TEST_CHECK( !testVisual );
1072 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL2);
1073 DALI_TEST_CHECK( !testVisual );
1074 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1075 DALI_TEST_CHECK( testVisual );
1078 DALI_TEST_CHECK( visual1 != visual3 );
1079 DALI_TEST_CHECK( visual2 != visual3 );
1081 actor.SetProperty( DevelControl::Property::STATE,
1082 Property::Map().Add( "state", "NORMAL" ).Add("withTransitions", false));
1084 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1085 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1087 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1089 visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1090 DALI_TEST_CHECK( visual1 );
1092 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1093 DALI_TEST_CHECK( !focusVisual );
1094 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
1101 int UtcDaliStyleManagerSetState03N(void)
1103 tet_infoline("Instantiate dummy control and test state transition without state style" );
1104 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1107 ToolkitTestApplication application;
1109 StyleChangedSignalChecker styleChangedSignalHandler;
1110 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1111 StyleManager styleManager = StyleManager::Get();
1113 DummyControl actor = DummyControl::New(true);
1114 actor.SetStyleName("NoStyles");
1115 application.GetScene().Add(actor);
1117 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1118 Property::Map propertyMap;
1119 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1120 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1121 VisualFactory factory = VisualFactory::Get();
1122 Visual::Base visual = factory.CreateVisual( propertyMap );
1123 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1125 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1126 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1128 actor.SetProperty( DevelControl::Property::STATE,
1129 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1131 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1132 DALI_TEST_CHECK( testVisual = visual );
1134 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1135 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1137 actor.SetProperty( DevelControl::Property::STATE,
1138 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1140 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1141 DALI_TEST_CHECK( testVisual = visual );
1143 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1144 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1150 int UtcDaliStyleManagerSetState04N(void)
1152 tet_infoline("Instantiate dummy control and test state transition with style without state" );
1153 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1156 ToolkitTestApplication application;
1158 StyleChangedSignalChecker styleChangedSignalHandler;
1159 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1160 StyleManager styleManager = StyleManager::Get();
1162 DummyControl actor = DummyControl::New(true);
1163 actor.SetStyleName("NoStateStyle");
1164 application.GetScene().Add(actor);
1166 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1167 Property::Map propertyMap;
1168 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1169 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1170 VisualFactory factory = VisualFactory::Get();
1171 Visual::Base visual = factory.CreateVisual( propertyMap );
1172 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1174 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1175 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1177 actor.SetProperty( DevelControl::Property::STATE,
1178 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1180 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1181 DALI_TEST_CHECK( testVisual = visual );
1183 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1184 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1186 actor.SetProperty( DevelControl::Property::STATE,
1187 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1189 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1190 DALI_TEST_CHECK( testVisual = visual );
1192 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1193 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1198 int UtcDaliStyleManagerSetSubState01(void)
1200 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1201 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1204 ToolkitTestApplication application;
1206 StyleChangedSignalChecker styleChangedSignalHandler;
1207 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1208 StyleManager styleManager = StyleManager::Get();
1210 DummyControl actor = DummyControl::New(true);
1211 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1212 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1213 actor.SetStyleName("ComplexControl");
1214 application.GetScene().Add(actor);
1216 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1218 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1220 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1221 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1222 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1224 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1226 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1227 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1228 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1230 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1232 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1233 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1234 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1240 int UtcDaliStyleManagerSetSubState02(void)
1242 tet_infoline("Instantiate complex control and test state/substate change" );
1243 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1246 ToolkitTestApplication application;
1248 StyleChangedSignalChecker styleChangedSignalHandler;
1249 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1250 StyleManager styleManager = StyleManager::Get();
1252 DummyControl actor = DummyControl::New(true);
1253 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1254 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1255 tet_infoline( "Setting state to NORMAL/SELECTED before re-styling\n");
1257 actor.SetStyleName("ComplexControl");
1258 application.GetScene().Add(actor);
1260 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1262 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1264 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1265 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1267 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1268 tet_infoline( "Changing substate to UNSELECTED - check visual changes\n");
1270 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1271 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1273 actor.SetProperty(DevelControl::Property::STATE, "FOCUSED");
1274 tet_infoline( "Changing state to FOCUSED - check visual changes\n");
1276 Visual::Base fgVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1277 Visual::Base focusVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::Visual::N_PATCH, TEST_LOCATION);
1279 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1280 tet_infoline( "Changing substate to SELECTED - Expect no change\n");
1282 Visual::Base fgVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1283 Visual::Base focusVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::Visual::N_PATCH, TEST_LOCATION);
1285 DALI_TEST_CHECK( fgVisual1 == fgVisual2 );
1286 DALI_TEST_CHECK( focusVisual1 == focusVisual2 );
1288 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1289 tet_infoline( "Changing state to NORMAL - Expect to change to NORMAL/SELECTED \n");
1291 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1292 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1294 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1295 DALI_TEST_CHECK( ! focusVisual );
1297 actor.SetProperty(DevelControl::Property::STATE, "DISABLED");
1298 tet_infoline( "Changing state to DISABLED - Expect to change to DISABLED/SELECTED \n");
1300 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::COLOR, TEST_LOCATION);
1301 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1303 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1304 DALI_TEST_CHECK( ! testVisual );
1305 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1306 DALI_TEST_CHECK( ! testVisual );
1312 int UtcDaliStyleManagerConfigSectionTest(void)
1314 tet_infoline("Test that the properties in config section are works" );
1316 const char* defaultTheme =
1320 " \"TEST\":\"broken\"\n"
1324 " \"brokenImageUrl\":\"{TEST}|{TEST}|{TEST|TEST.png\",\n"
1325 " \"alwaysShowFocus\":false,\n"
1326 " \"clearFocusOnEscape\":false\n"
1333 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
1335 ToolkitTestApplication application;
1337 Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
1339 Property::Map config = Toolkit::DevelStyleManager::GetConfigurations( styleManager );
1340 bool alwaysShowFocus = config["alwaysShowFocus"].Get<bool>();
1341 DALI_TEST_CHECK( !alwaysShowFocus );
1342 bool clearFocusOnEscape = config["clearFocusOnEscape"].Get<bool>();
1343 DALI_TEST_CHECK( !clearFocusOnEscape );
1344 std::string brokenImageUrl = config["brokenImageUrl"].Get<std::string>();
1345 DALI_TEST_CHECK( brokenImageUrl.compare( "broken|broken|{TEST|TEST.png" ) == 0 );
1348 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
1349 editor.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true );
1350 application.GetScene().Add( editor );
1352 Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( editor );
1354 application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
1355 application.SendNotification();
1356 application.Render();
1362 int UtcDaliStyleManagerNewWithAdditionalBehavior(void)
1364 ToolkitTestApplication application;
1366 Toolkit::StyleManager styleManager = StyleManager::Get();
1367 Toolkit::Internal::StyleManager& styleManagerImpl = GetImpl(styleManager);
1369 auto checkup = [&styleManagerImpl](int enableStyleChangeSignal, const Control& control){
1370 DALI_TEST_EQUALS( enableStyleChangeSignal, styleManagerImpl.ControlStyleChangeSignal().GetConnectionCount(), TEST_LOCATION );
1374 // Note: TextField and TextEditor have TextSelectionPopup
1375 tet_infoline( "Check whether ControlStyleChangeSignal connected in default New\n");
1376 checkup(1, Control::New());
1377 checkup(1, ImageView::New());
1378 checkup(1, ImageView::New("url"));
1379 checkup(1, ImageView::New("url", Dali::ImageDimensions(32u, 32u)));
1380 checkup(1, TextLabel::New());
1381 checkup(1, TextLabel::New("text"));
1382 checkup(2, TextField::New());
1383 checkup(2, TextEditor::New());
1385 // New with additional behaviour, but enable style change signals
1386 tet_infoline( "Check whether ControlStyleChangeSignal connected in non-disable style change signals\n");
1387 checkup(1, Control::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT));
1388 checkup(1, Control::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION));
1389 checkup(1, Control::New(Toolkit::Control::ControlBehaviour::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT));
1390 checkup(1, ImageView::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT));
1391 checkup(1, ImageView::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT, "url"));
1392 checkup(1, ImageView::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT, "url", Dali::ImageDimensions(32u, 32u)));
1393 checkup(1, ImageView::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION));
1394 checkup(1, ImageView::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION, "url"));
1395 checkup(1, ImageView::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION, "url", Dali::ImageDimensions(32u, 32u)));
1396 checkup(1, TextLabel::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT));
1397 checkup(1, TextLabel::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT, "text"));
1398 checkup(1, TextLabel::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION));
1399 checkup(1, TextLabel::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION, "text"));
1400 checkup(2, TextField::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT));
1401 checkup(2, TextField::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION));
1402 checkup(2, TextEditor::New(Toolkit::Control::ControlBehaviour::CONTROL_BEHAVIOUR_DEFAULT));
1403 checkup(2, TextEditor::New(Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION));
1405 // New with additional behaviour, so disable style change signals
1406 tet_infoline( "Check whether ControlStyleChangeSignal did not connected\n");
1407 checkup(0, Control::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS));
1408 checkup(0, Control::New(Toolkit::Control::ControlBehaviour(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS | Toolkit::Control::ControlBehaviour::DISABLE_SIZE_NEGOTIATION)));
1409 checkup(0, ImageView::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS));
1410 checkup(0, ImageView::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS, "url"));
1411 checkup(0, ImageView::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS, "url", Dali::ImageDimensions(32u, 32u)));
1412 checkup(0, TextLabel::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS));
1413 checkup(0, TextLabel::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS, "text"));
1414 checkup(1, TextField::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS));
1415 checkup(1, TextEditor::New(Toolkit::Control::ControlBehaviour::DISABLE_STYLE_CHANGE_SIGNALS));