2 * Copyright (c) 2020 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>
38 using namespace Dali::Toolkit;
42 std::string defaultTheme;
44 } // anonymous namespace
49 void dali_style_manager_startup(void)
51 test_return_value = TET_UNDEF;
53 std::ifstream t("src/dali-toolkit-styling/default-theme.json");
54 defaultTheme = std::string((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
57 void dali_style_manager_cleanup(void)
59 test_return_value = TET_PASS;
63 Visual::Base CheckVisual( Impl::DummyControl& dummyImpl, Property::Index visualId, int type, const char* location )
65 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(visualId), true, location);
66 Visual::Base visual = dummyImpl.GetVisual(visualId);
67 DALI_TEST_EQUALS( (bool)visual, true, location );
69 visual.CreatePropertyMap( map );
70 Property::Value* value = map.Find( Toolkit::Visual::Property::TYPE );
71 DALI_TEST_EQUALS( value != NULL, true, location );
74 value->Get( visualType );
75 DALI_TEST_EQUALS( visualType, type, location );
80 Integration::Bitmap* CreateBitmap( unsigned int imageWidth, unsigned int imageHeight, unsigned int initialColor, Pixel::Format pixelFormat )
82 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
83 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
84 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
86 memset( pixbuffer, initialColor, imageHeight * imageWidth * bytesPerPixel );
91 Integration::ResourcePointer CustomizeNinePatch( ToolkitTestApplication& application,
92 unsigned int ninePatchImageWidth,
93 unsigned int ninePatchImageHeight)
95 TestPlatformAbstraction& platform = application.GetPlatform();
97 Pixel::Format pixelFormat = Pixel::RGBA8888;
99 tet_infoline("Create Bitmap");
100 platform.SetClosestImageSize(Vector2( ninePatchImageWidth, ninePatchImageHeight));
101 Integration::Bitmap* bitmap = CreateBitmap( ninePatchImageWidth, ninePatchImageHeight, 0xFF, pixelFormat );
103 tet_infoline("Getting resource");
104 Integration::ResourcePointer resourcePtr(bitmap);
105 platform.SetSynchronouslyLoadedResource( resourcePtr);
110 int UtcDaliStyleManagerConstructorP(void)
112 ToolkitTestApplication application;
114 tet_infoline(" UtcDaliStyleManagerConstructorP");
115 StyleManager styleManager;
116 DALI_TEST_CHECK( !styleManager);
120 int UtcDaliStyleManagerCopyConstructorP(void)
122 ToolkitTestApplication application;
124 StyleManager styleManager = StyleManager::Get();
125 StyleManager copyOfStyleManager( styleManager );
127 DALI_TEST_CHECK( copyOfStyleManager );
131 int UtcDaliStyleManagerAssignmentOperatorP(void)
133 ToolkitTestApplication application;
135 StyleManager styleManager = StyleManager::Get();
136 StyleManager copyOfStyleManager = styleManager;
138 DALI_TEST_CHECK( copyOfStyleManager );
139 DALI_TEST_CHECK( copyOfStyleManager == styleManager );
143 int UtcDaliStyleManagerGet(void)
145 ToolkitTestApplication application;
147 tet_infoline(" UtcDaliStyleManagerGet");
151 type = TypeRegistry::Get().GetTypeInfo( "StyleManager" );
152 DALI_TEST_CHECK( type );
153 BaseHandle handle = type.CreateInstance();
154 DALI_TEST_CHECK( handle );
156 StyleManager manager;
158 manager = StyleManager::Get();
159 DALI_TEST_CHECK(manager);
161 StyleManager newManager = StyleManager::Get();
162 DALI_TEST_CHECK(newManager);
164 // Check that focus manager is a singleton
165 DALI_TEST_CHECK(manager == newManager);
172 class StyleChangedSignalChecker : public ConnectionTracker
175 StyleChangedSignalChecker()
180 void OnStyleChanged(StyleManager styleManager, StyleChange::Type type)
194 } // anonymous namespace
196 int UtcDaliStyleManagerApplyTheme(void)
198 ToolkitTestApplication application;
200 tet_infoline( "Testing StyleManager ApplyTheme" );
206 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Verbose\"\n"
212 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
213 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
224 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
225 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
230 // Add 2 buttons to test how many times the signal is sent
231 Test::TestButton testButton = Test::TestButton::New();
232 Test::TestButton testButton2 = Test::TestButton::New();
233 application.GetScene().Add( testButton );
234 application.GetScene().Add( testButton2 );
235 StyleChangedSignalChecker styleChangedSignalHandler;
236 StyleChangedSignalChecker styleChangedSignalHandler2;
237 StyleManager styleManager = StyleManager::Get();
239 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
241 // To ensure we make VisualFactory
242 VisualFactory factory = VisualFactory::Get();
243 Property::Map propertyMap;
244 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT );
245 Visual::Base textVisual = factory.CreateVisual( propertyMap );
248 application.SendNotification();
249 application.Render();
251 tet_infoline("Apply the style");
253 std::string themeFile("ThemeOne");
254 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
255 StyleManager::Get().ApplyTheme(themeFile);
257 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
258 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
260 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
261 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
263 tet_infoline("Testing that the signal handler is called only once");
264 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
266 tet_infoline("Override the background property");
267 testButton.SetProperty( Test::TestButton::Property::BACKGROUND_COLOR, Color::GREEN );
268 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
269 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
270 DALI_TEST_EQUALS( bgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
271 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
274 application.SendNotification();
275 application.Render();
277 tet_infoline("Apply the style again");
279 styleChangedSignalHandler.signalCount = 0;
280 StyleManager::Get().ApplyTheme(themeFile);
282 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
283 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
285 tet_infoline("Check that the property is changed");
286 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
287 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
288 tet_infoline("Testing that the signal handler is called only once");
289 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
291 tet_infoline( "Load a different stylesheet");
293 tet_infoline("Apply the new style");
294 std::string themeFile2("ThemeTwo");
295 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
297 styleChangedSignalHandler.signalCount = 0;
298 StyleManager::Get().ApplyTheme(themeFile2);
300 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
301 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
303 tet_infoline("Check that the properties change, but the signal gets sent only once");
304 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
305 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
306 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
312 int UtcDaliStyleManagerApplyDefaultTheme(void)
314 tet_infoline( "Testing StyleManager ApplyTheme" );
316 const char* defaultTheme =
320 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Concise\"\n"
326 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
327 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
331 // Bg: Yellow, Fg: Blue
333 const char* appTheme =
339 " \"backgroundColor\":[1.0,0.0,1.0,1.0],\n"
340 " \"foregroundColor\":[0.0,1.0,0.0,1.0]\n"
344 // Bg::Magenta, Fg:Green
346 std::string filepath(TEST_RESOURCE_DIR "");
348 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
350 ToolkitTestApplication application;
352 Test::TestButton testButton = Test::TestButton::New();
353 application.GetScene().Add( testButton );
354 StyleChangedSignalChecker styleChangedSignalHandler;
355 StyleManager styleManager = StyleManager::Get();
357 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
360 application.SendNotification();
361 application.Render();
364 Property::Value defaultBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
365 Property::Value defaultFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
367 tet_infoline("Apply the style");
369 std::string themeFile("ThemeOne");
370 Test::StyleMonitor::SetThemeFileOutput(themeFile, appTheme);
371 StyleManager::Get().ApplyTheme(themeFile);
373 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
374 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
376 DALI_TEST_EQUALS( bgColor, Property::Value(Color::MAGENTA), 0.001, TEST_LOCATION );
377 DALI_TEST_EQUALS( fgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
379 tet_infoline("Testing that the signal handler is called only once");
380 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
381 tet_infoline("Revert the style");
383 styleChangedSignalHandler.signalCount = 0;
384 StyleManager::Get().ApplyDefaultTheme();
386 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
387 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
389 tet_infoline("Check that the property is reverted");
390 DALI_TEST_EQUALS( bgColor, defaultBgColor, 0.001, TEST_LOCATION );
391 DALI_TEST_EQUALS( fgColor, defaultFgColor, 0.001, TEST_LOCATION );
392 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
393 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
394 tet_infoline("Testing that the signal handler is called only once");
395 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
401 int UtcDaliStyleManagerSetStyleConstantP(void)
403 ToolkitTestApplication application;
405 tet_infoline( " UtcDaliStyleManagerSetStyleConstantP" );
407 StyleManager manager = StyleManager::Get();
409 std::string key( "key" );
410 Property::Value value( 100 );
412 manager.SetStyleConstant( key, value );
414 Property::Value returnedValue;
415 manager.GetStyleConstant( key, returnedValue );
417 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
422 int UtcDaliStyleManagerGetStyleConstantP(void)
424 ToolkitTestApplication application;
426 tet_infoline( " UtcDaliStyleManagerGetStyleConstantP" );
428 StyleManager manager = StyleManager::Get();
430 std::string key( "key" );
431 Property::Value value( 100 );
433 manager.SetStyleConstant( key, value );
435 Property::Value returnedValue;
436 manager.GetStyleConstant( key, returnedValue );
438 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
442 int UtcDaliStyleManagerGetStyleConstantN(void)
444 ToolkitTestApplication application;
446 tet_infoline( " UtcDaliStyleManagerGetStyleConstantN" );
448 StyleManager manager = StyleManager::Get();
450 std::string key2( "key2" );
451 Property::Value returnedValue2;
452 DALI_TEST_CHECK( !manager.GetStyleConstant( key2, returnedValue2 ) );
457 int UtcDaliStyleManagerApplyStyle(void)
459 ToolkitTestApplication application;
461 tet_infoline( "UtcDaliStyleManagerApplyStyle - test that a style can be applied to a single button" );
467 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"General\"\n"
473 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
474 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
485 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
486 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
492 Test::TestButton testButton = Test::TestButton::New();
493 Test::TestButton testButton2 = Test::TestButton::New();
494 application.GetScene().Add( testButton );
495 application.GetScene().Add( testButton2 );
496 StyleChangedSignalChecker styleChangedSignalHandler;
497 StyleManager styleManager = StyleManager::Get();
499 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
501 tet_infoline("Apply the style");
503 std::string themeFile("ThemeOne");
504 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
505 styleManager.ApplyTheme(themeFile);
508 application.SendNotification();
509 application.Render();
511 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
512 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
514 // Apply the style to the test button:
515 std::string themeFile2("ThemeTwo");
516 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
517 styleManager.ApplyStyle( testButton, themeFile2, "testbutton" );
519 tet_infoline("Check that the properties change for the first button");
520 Property::Value bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
521 Property::Value fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
522 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
523 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
525 DALI_TEST_NOT_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
526 DALI_TEST_NOT_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
528 tet_infoline("Check that the properties remain the same for the second button");
529 bgColor = testButton2.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
530 fgColor = testButton2.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
531 DALI_TEST_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
532 DALI_TEST_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
538 int UtcDaliStyleManagerIncludeStyleP(void)
540 ToolkitTestApplication application;
542 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works" );
548 " \"src/dali-toolkit-styling/theme2.json\"\n"
554 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
560 Test::TestButton testButton = Test::TestButton::New();
561 Test::TestButton testButton2 = Test::TestButton::New();
562 application.GetScene().Add( testButton );
563 application.GetScene().Add( testButton2 );
564 StyleChangedSignalChecker styleChangedSignalHandler;
565 StyleManager styleManager = StyleManager::Get();
567 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
569 tet_infoline("Apply the style");
571 std::string themeFile("ThemeOne");
572 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
574 styleManager.ApplyTheme(themeFile);
577 application.SendNotification();
578 application.Render();
580 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
581 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
583 DALI_TEST_EQUALS( themedBgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
584 DALI_TEST_EQUALS( themedFgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
590 int UtcDaliStyleManagerIncludeStyleN(void)
592 ToolkitTestApplication application;
594 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works, but included stylesheet is bad json" );
600 " \"src/dali-toolkit-styling/theme3.json\"\n"
606 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
612 Test::TestButton testButton = Test::TestButton::New();
613 Test::TestButton testButton2 = Test::TestButton::New();
614 application.GetScene().Add( testButton );
615 application.GetScene().Add( testButton2 );
616 StyleChangedSignalChecker styleChangedSignalHandler;
617 StyleManager styleManager = StyleManager::Get();
619 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
621 tet_infoline("Apply the style");
623 std::string themeFile("ThemeOne");
624 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
628 styleManager.ApplyTheme(themeFile);
630 catch( Dali::DaliException& e )
632 DALI_TEST_ASSERT( e, "!\"Cannot parse JSON\"", TEST_LOCATION );
639 int UtcDaliStyleManagerStyleChangedSignalFontFamily(void)
641 tet_infoline("Test that the StyleChange signal is fired when the font family is altered" );
642 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
645 ToolkitTestApplication application;
647 std::string labelStr("Label");
648 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
649 application.GetScene().Add( label );
651 Toolkit::TextField field = Toolkit::TextField::New();
652 application.GetScene().Add( field );
654 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
655 application.GetScene().Add( editor );
657 StyleChangedSignalChecker styleChangedSignalHandler;
658 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
659 StyleManager styleManager = StyleManager::Get();
661 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
663 Test::StyleMonitor::SetDefaultFontFamily("Times New Roman");
665 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_CHANGE);
667 tet_infoline("Test that the StyleChanged signal is received only once");
669 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
671 // Check that the label's font style has been altered
672 Property::Value family = label.GetProperty(TextLabel::Property::FONT_FAMILY);
673 std::string familyStr;
674 family.Get( familyStr );
676 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
678 // Check that the field's font style has been altered
679 family = field.GetProperty(TextField::Property::FONT_FAMILY);
680 family.Get( familyStr );
682 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
684 // Check that the editor's font style has been altered
685 family = editor.GetProperty(TextEditor::Property::FONT_FAMILY);
686 family.Get( familyStr );
688 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
693 int UtcDaliStyleManagerStyleChangedSignalFontSize(void)
695 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
697 const char* defaultTheme =
701 " \"textlabelFontSize0\":\n"
703 " \"pointSize\":10\n"
705 " \"textlabelFontSize1\":\n"
707 " \"pointSize\":10\n"
709 " \"textlabelFontSize2\":\n"
711 " \"pointSize\":12\n"
713 " \"textlabelFontSize3\":\n"
715 " \"pointSize\":14\n"
717 " \"textlabelFontSize4\":\n"
719 " \"pointSize\":16\n"
724 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
726 ToolkitTestApplication application;
728 std::string labelStr("Label");
729 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
730 application.GetScene().Add( label );
732 Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
733 application.GetScene().Add( label2 );
735 StyleChangedSignalChecker styleChangedSignalHandler;
736 StyleMonitor styleMonitor = StyleMonitor::Get();
737 StyleManager styleManager = StyleManager::Get();
739 label.SetProperty(TextLabel::Property::POINT_SIZE, 10.0f);
741 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
743 Test::StyleMonitor::SetDefaultFontSize(2);
744 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
746 tet_infoline("Test that the StyleChanged signal is received only once");
747 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
749 tet_infoline("Test that the label's font size has been altered\n");
750 Property::Value pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
752 pointSizeValue.Get( pointSize );
754 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
756 styleChangedSignalHandler.signalCount = 0;
758 Test::StyleMonitor::SetDefaultFontSize(4);
759 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
761 tet_infoline("Test that the StyleChanged signal is received only once");
762 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
764 // Check that the label's font style has been altered
765 pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
766 pointSizeValue.Get( pointSize );
768 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
775 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextField(void)
777 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
779 const char* defaultTheme =
783 " \"textfieldFontSize0\":\n"
787 " \"textfieldFontSize1\":\n"
789 " \"pointSize\":10\n"
791 " \"textfieldFontSize2\":\n"
793 " \"pointSize\":12\n"
795 " \"textfieldFontSize3\":\n"
797 " \"pointSize\":14\n"
799 " \"textfieldFontSize4\":\n"
801 " \"pointSize\":16\n"
806 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
808 ToolkitTestApplication application;
810 std::string fieldStr("Field");
811 Toolkit::TextField field = Toolkit::TextField::New();
812 field.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
813 application.GetScene().Add( field );
815 Toolkit::TextField field2 = Toolkit::TextField::New();
816 application.GetScene().Add( field2 );
817 field2.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
819 StyleChangedSignalChecker styleChangedSignalHandler;
820 StyleMonitor styleMonitor = StyleMonitor::Get();
821 StyleManager styleManager = StyleManager::Get();
823 field.SetProperty(TextField::Property::POINT_SIZE, 10.0f);
825 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
827 Test::StyleMonitor::SetDefaultFontSize(2);
828 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
830 tet_infoline("Test that the StyleChanged signal is received only once");
831 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
833 tet_infoline("Test that the field's font size has been altered\n");
834 Property::Value pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
836 pointSizeValue.Get( pointSize );
838 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
840 styleChangedSignalHandler.signalCount = 0;
842 Test::StyleMonitor::SetDefaultFontSize(4);
843 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
845 tet_infoline("Test that the StyleChanged signal is received only once");
846 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
848 // Check that the field's font style has been altered
849 pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
850 pointSizeValue.Get( pointSize );
852 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
858 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextEditor(void)
860 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
862 const char* defaultTheme =
866 " \"texteditorFontSize0\":\n"
868 " \"pointSize\":10\n"
870 " \"texteditorFontSize1\":\n"
872 " \"pointSize\":12\n"
874 " \"texteditorFontSize2\":\n"
876 " \"pointSize\":14\n"
878 " \"texteditorFontSize3\":\n"
880 " \"pointSize\":18\n"
882 " \"texteditorFontSize4\":\n"
884 " \"pointSize\":25\n"
889 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
891 ToolkitTestApplication application;
893 std::string editorStr("Editor");
894 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
895 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
896 application.GetScene().Add( editor );
898 Toolkit::TextEditor editor2 = Toolkit::TextEditor::New();
899 application.GetScene().Add( editor2 );
900 editor2.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
902 StyleChangedSignalChecker styleChangedSignalHandler;
903 StyleMonitor styleMonitor = StyleMonitor::Get();
904 StyleManager styleManager = StyleManager::Get();
906 editor.SetProperty(TextEditor::Property::POINT_SIZE, 10.0f);
908 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
910 Test::StyleMonitor::SetDefaultFontSize(2);
911 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
913 tet_infoline("Test that the StyleChanged signal is received only once");
914 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
916 tet_infoline("Test that the editor's font size has been altered\n");
917 Property::Value pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
919 pointSizeValue.Get( pointSize );
921 DALI_TEST_EQUALS( pointSize, 14.0f, 0.001, TEST_LOCATION );
923 styleChangedSignalHandler.signalCount = 0;
925 Test::StyleMonitor::SetDefaultFontSize(4);
926 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
928 tet_infoline("Test that the StyleChanged signal is received only once");
929 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
931 // Check that the editor's font style has been altered
932 pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
933 pointSizeValue.Get( pointSize );
935 DALI_TEST_EQUALS( pointSize, 25.0f, 0.001, TEST_LOCATION );
942 int UtcDaliStyleManagerSetState01(void)
944 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
945 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
948 ToolkitTestApplication application;
950 StyleChangedSignalChecker styleChangedSignalHandler;
951 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
952 StyleManager styleManager = StyleManager::Get();
954 DummyControl actor = DummyControl::New(true);
955 actor.SetStyleName("BasicControl");
956 application.GetScene().Add(actor);
958 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
959 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
961 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
962 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
963 Visual::Base labelVisual1 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
964 Property::Map labelMap;
965 labelVisual1.CreatePropertyMap( labelMap );
966 labelMap[TextVisual::Property::TEXT] = "New text";
967 VisualFactory factory = VisualFactory::Get();
968 labelVisual1 = factory.CreateVisual(labelMap);
969 dummyImpl.UnregisterVisual(DummyControl::Property::LABEL_VISUAL );
970 dummyImpl.RegisterVisual(DummyControl::Property::LABEL_VISUAL, labelVisual1 );
972 actor.SetProperty( DevelControl::Property::STATE, DevelControl::FOCUSED );
974 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
975 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
976 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::LABEL_VISUAL), true, TEST_LOCATION);
978 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
979 Visual::Base labelVisual2 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
980 DALI_TEST_CHECK( visual1 != visual2 );
981 DALI_TEST_CHECK( labelVisual1 != labelVisual2 );
983 labelVisual2.CreatePropertyMap( labelMap );
984 Property::Value* textValue = labelMap.Find( Toolkit::TextVisual::Property::TEXT, "text");
985 DALI_TEST_CHECK( textValue );
986 Property::Value* pointSizeValue = labelMap.Find( Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
987 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
988 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
989 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
992 actor.SetProperty( DevelControl::Property::STATE, DevelControl::DISABLED );
994 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
996 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
997 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
998 DALI_TEST_CHECK( !focusVisual );
999 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
1001 DALI_TEST_CHECK( visual1 != visual3 );
1002 DALI_TEST_CHECK( visual2 != visual3 );
1004 Visual::Base labelVisual3 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1005 DALI_TEST_CHECK( labelVisual2 != labelVisual3 );
1007 labelVisual2.CreatePropertyMap( labelMap );
1008 textValue = labelMap.Find(Toolkit::TextVisual::Property::TEXT, "text");
1009 DALI_TEST_CHECK( textValue );
1010 pointSizeValue = labelMap.Find(Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
1011 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
1012 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
1013 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
1018 int UtcDaliStyleManagerSetState02(void)
1020 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1021 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1024 ToolkitTestApplication application;
1026 StyleChangedSignalChecker styleChangedSignalHandler;
1027 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1028 StyleManager styleManager = StyleManager::Get();
1030 DummyControl actor = DummyControl::New(true);
1031 actor.SetStyleName("BasicControl");
1032 application.GetScene().Add(actor);
1034 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1035 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1037 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1038 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1040 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1041 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1043 actor.SetProperty( DevelControl::Property::STATE,
1044 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1046 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1047 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1049 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1050 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
1052 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1053 DALI_TEST_CHECK( visual1 != visual2 );
1055 actor.SetProperty( DevelControl::Property::STATE,
1056 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1058 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1059 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1061 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1063 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1065 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1066 DALI_TEST_CHECK( !testVisual );
1067 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1068 DALI_TEST_CHECK( !testVisual );
1069 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL2);
1070 DALI_TEST_CHECK( !testVisual );
1071 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1072 DALI_TEST_CHECK( testVisual );
1075 DALI_TEST_CHECK( visual1 != visual3 );
1076 DALI_TEST_CHECK( visual2 != visual3 );
1078 actor.SetProperty( DevelControl::Property::STATE,
1079 Property::Map().Add( "state", "NORMAL" ).Add("withTransitions", false));
1081 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1082 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1084 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1086 visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1087 DALI_TEST_CHECK( visual1 );
1089 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1090 DALI_TEST_CHECK( !focusVisual );
1091 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
1098 int UtcDaliStyleManagerSetState03N(void)
1100 tet_infoline("Instantiate dummy control and test state transition without state style" );
1101 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1104 ToolkitTestApplication application;
1106 StyleChangedSignalChecker styleChangedSignalHandler;
1107 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1108 StyleManager styleManager = StyleManager::Get();
1110 DummyControl actor = DummyControl::New(true);
1111 actor.SetStyleName("NoStyles");
1112 application.GetScene().Add(actor);
1114 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1115 Property::Map propertyMap;
1116 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1117 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1118 VisualFactory factory = VisualFactory::Get();
1119 Visual::Base visual = factory.CreateVisual( propertyMap );
1120 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1122 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1123 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1125 actor.SetProperty( DevelControl::Property::STATE,
1126 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1128 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1129 DALI_TEST_CHECK( testVisual = visual );
1131 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1132 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1134 actor.SetProperty( DevelControl::Property::STATE,
1135 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1137 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1138 DALI_TEST_CHECK( testVisual = visual );
1140 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1141 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1147 int UtcDaliStyleManagerSetState04N(void)
1149 tet_infoline("Instantiate dummy control and test state transition with style without state" );
1150 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1153 ToolkitTestApplication application;
1155 StyleChangedSignalChecker styleChangedSignalHandler;
1156 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1157 StyleManager styleManager = StyleManager::Get();
1159 DummyControl actor = DummyControl::New(true);
1160 actor.SetStyleName("NoStateStyle");
1161 application.GetScene().Add(actor);
1163 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1164 Property::Map propertyMap;
1165 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1166 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1167 VisualFactory factory = VisualFactory::Get();
1168 Visual::Base visual = factory.CreateVisual( propertyMap );
1169 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1171 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1172 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1174 actor.SetProperty( DevelControl::Property::STATE,
1175 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1177 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1178 DALI_TEST_CHECK( testVisual = visual );
1180 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1181 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1183 actor.SetProperty( DevelControl::Property::STATE,
1184 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1186 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1187 DALI_TEST_CHECK( testVisual = visual );
1189 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1190 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1195 int UtcDaliStyleManagerSetSubState01(void)
1197 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1198 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1201 ToolkitTestApplication application;
1203 StyleChangedSignalChecker styleChangedSignalHandler;
1204 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1205 StyleManager styleManager = StyleManager::Get();
1207 DummyControl actor = DummyControl::New(true);
1208 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1209 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1210 actor.SetStyleName("ComplexControl");
1211 application.GetScene().Add(actor);
1213 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1215 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1217 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1218 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1219 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1221 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1223 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1224 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1225 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1227 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1229 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1230 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1231 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1237 int UtcDaliStyleManagerSetSubState02(void)
1239 tet_infoline("Instantiate complex control and test state/substate change" );
1240 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1243 ToolkitTestApplication application;
1245 StyleChangedSignalChecker styleChangedSignalHandler;
1246 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1247 StyleManager styleManager = StyleManager::Get();
1249 DummyControl actor = DummyControl::New(true);
1250 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1251 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1252 tet_infoline( "Setting state to NORMAL/SELECTED before re-styling\n");
1254 actor.SetStyleName("ComplexControl");
1255 application.GetScene().Add(actor);
1257 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1259 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1261 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1262 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1264 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1265 tet_infoline( "Changing substate to UNSELECTED - check visual changes\n");
1267 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1268 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1270 actor.SetProperty(DevelControl::Property::STATE, "FOCUSED");
1271 tet_infoline( "Changing state to FOCUSED - check visual changes\n");
1273 Visual::Base fgVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1274 Visual::Base focusVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::Visual::N_PATCH, TEST_LOCATION);
1276 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1277 tet_infoline( "Changing substate to SELECTED - Expect no change\n");
1279 Visual::Base fgVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1280 Visual::Base focusVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::Visual::N_PATCH, TEST_LOCATION);
1282 DALI_TEST_CHECK( fgVisual1 == fgVisual2 );
1283 DALI_TEST_CHECK( focusVisual1 == focusVisual2 );
1285 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1286 tet_infoline( "Changing state to NORMAL - Expect to change to NORMAL/SELECTED \n");
1288 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1289 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1291 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1292 DALI_TEST_CHECK( ! focusVisual );
1294 actor.SetProperty(DevelControl::Property::STATE, "DISABLED");
1295 tet_infoline( "Changing state to DISABLED - Expect to change to DISABLED/SELECTED \n");
1297 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::COLOR, TEST_LOCATION);
1298 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1300 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1301 DALI_TEST_CHECK( ! testVisual );
1302 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1303 DALI_TEST_CHECK( ! testVisual );
1309 int UtcDaliStyleManagerConfigSectionTest(void)
1311 tet_infoline("Test that the properties in config section are works" );
1313 const char* defaultTheme =
1317 " \"TEST\":\"broken\"\n"
1321 " \"brokenImageUrl\":\"{TEST}|{TEST}|{TEST|TEST.png\",\n"
1322 " \"alwaysShowFocus\":false,\n"
1323 " \"clearFocusOnEscape\":false\n"
1330 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
1332 ToolkitTestApplication application;
1334 Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
1336 Property::Map config = Toolkit::DevelStyleManager::GetConfigurations( styleManager );
1337 bool alwaysShowFocus = config["alwaysShowFocus"].Get<bool>();
1338 DALI_TEST_CHECK( !alwaysShowFocus );
1339 bool clearFocusOnEscape = config["clearFocusOnEscape"].Get<bool>();
1340 DALI_TEST_CHECK( !clearFocusOnEscape );
1341 std::string brokenImageUrl = config["brokenImageUrl"].Get<std::string>();
1342 DALI_TEST_CHECK( brokenImageUrl.compare( "broken|broken|{TEST|TEST.png" ) == 0 );
1345 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
1346 editor.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true );
1347 application.GetScene().Add( editor );
1349 Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( editor );
1351 application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
1352 application.SendNotification();
1353 application.Render();