2 * Copyright (c) 2017 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/visuals/text-visual-properties.h>
33 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
34 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
35 #include <dali-toolkit/devel-api/visual-factory/visual-base.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( 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( TestApplication& 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 TestApplication application;
124 StyleManager styleManager = StyleManager::Get();
125 StyleManager copyOfStyleManager( styleManager );
127 DALI_TEST_CHECK( copyOfStyleManager );
131 int UtcDaliStyleManagerAssignmentOperatorP(void)
133 TestApplication 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 Stage::GetCurrent().Add( testButton );
234 Stage::GetCurrent().Add( testButton2 );
235 StyleChangedSignalChecker styleChangedSignalHandler;
236 StyleChangedSignalChecker styleChangedSignalHandler2;
237 StyleManager styleManager = StyleManager::Get();
239 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
242 application.SendNotification();
243 application.Render();
245 tet_infoline("Apply the style");
247 std::string themeFile("ThemeOne");
248 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
249 StyleManager::Get().ApplyTheme(themeFile);
251 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
252 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
254 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
255 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
257 tet_infoline("Testing that the signal handler is called only once");
258 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
260 tet_infoline("Override the background property");
261 testButton.SetProperty( Test::TestButton::Property::BACKGROUND_COLOR, Color::GREEN );
262 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
263 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
264 DALI_TEST_EQUALS( bgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
265 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
268 application.SendNotification();
269 application.Render();
271 tet_infoline("Apply the style again");
273 styleChangedSignalHandler.signalCount = 0;
274 StyleManager::Get().ApplyTheme(themeFile);
276 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
277 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
279 tet_infoline("Check that the property is changed");
280 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
281 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
282 tet_infoline("Testing that the signal handler is called only once");
283 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
285 tet_infoline( "Load a different stylesheet");
287 tet_infoline("Apply the new style");
288 std::string themeFile2("ThemeTwo");
289 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
291 styleChangedSignalHandler.signalCount = 0;
292 StyleManager::Get().ApplyTheme(themeFile2);
294 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
295 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
297 tet_infoline("Check that the properties change, but the signal gets sent only once");
298 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
299 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
300 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
306 int UtcDaliStyleManagerApplyDefaultTheme(void)
308 tet_infoline( "Testing StyleManager ApplyTheme" );
310 const char* defaultTheme =
314 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Concise\"\n"
320 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
321 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
325 // Bg: Yellow, Fg: Blue
327 const char* appTheme =
333 " \"backgroundColor\":[1.0,0.0,1.0,1.0],\n"
334 " \"foregroundColor\":[0.0,1.0,0.0,1.0]\n"
338 // Bg::Magenta, Fg:Green
340 std::string filepath(TEST_RESOURCE_DIR "");
342 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
344 ToolkitTestApplication application;
346 Test::TestButton testButton = Test::TestButton::New();
347 Stage::GetCurrent().Add( testButton );
348 StyleChangedSignalChecker styleChangedSignalHandler;
349 StyleManager styleManager = StyleManager::Get();
351 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
354 application.SendNotification();
355 application.Render();
358 Property::Value defaultBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
359 Property::Value defaultFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
361 tet_infoline("Apply the style");
363 std::string themeFile("ThemeOne");
364 Test::StyleMonitor::SetThemeFileOutput(themeFile, appTheme);
365 StyleManager::Get().ApplyTheme(themeFile);
367 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
368 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
370 DALI_TEST_EQUALS( bgColor, Property::Value(Color::MAGENTA), 0.001, TEST_LOCATION );
371 DALI_TEST_EQUALS( fgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
373 tet_infoline("Testing that the signal handler is called only once");
374 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
375 tet_infoline("Revert the style");
377 styleChangedSignalHandler.signalCount = 0;
378 StyleManager::Get().ApplyDefaultTheme();
380 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
381 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
383 tet_infoline("Check that the property is reverted");
384 DALI_TEST_EQUALS( bgColor, defaultBgColor, 0.001, TEST_LOCATION );
385 DALI_TEST_EQUALS( fgColor, defaultFgColor, 0.001, TEST_LOCATION );
386 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
387 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
388 tet_infoline("Testing that the signal handler is called only once");
389 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
395 int UtcDaliStyleManagerSetStyleConstantP(void)
397 ToolkitTestApplication application;
399 tet_infoline( " UtcDaliStyleManagerSetStyleConstantP" );
401 StyleManager manager = StyleManager::Get();
403 std::string key( "key" );
404 Property::Value value( 100 );
406 manager.SetStyleConstant( key, value );
408 Property::Value returnedValue;
409 manager.GetStyleConstant( key, returnedValue );
411 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
416 int UtcDaliStyleManagerGetStyleConstantP(void)
418 ToolkitTestApplication application;
420 tet_infoline( " UtcDaliStyleManagerGetStyleConstantP" );
422 StyleManager manager = StyleManager::Get();
424 std::string key( "key" );
425 Property::Value value( 100 );
427 manager.SetStyleConstant( key, value );
429 Property::Value returnedValue;
430 manager.GetStyleConstant( key, returnedValue );
432 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
436 int UtcDaliStyleManagerGetStyleConstantN(void)
438 ToolkitTestApplication application;
440 tet_infoline( " UtcDaliStyleManagerGetStyleConstantN" );
442 StyleManager manager = StyleManager::Get();
444 std::string key2( "key2" );
445 Property::Value returnedValue2;
446 DALI_TEST_CHECK( !manager.GetStyleConstant( key2, returnedValue2 ) );
451 int UtcDaliStyleManagerApplyStyle(void)
453 ToolkitTestApplication application;
455 tet_infoline( "UtcDaliStyleManagerApplyStyle - test that a style can be applied to a single button" );
461 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"General\"\n"
467 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
468 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
479 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
480 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
486 Test::TestButton testButton = Test::TestButton::New();
487 Test::TestButton testButton2 = Test::TestButton::New();
488 Stage::GetCurrent().Add( testButton );
489 Stage::GetCurrent().Add( testButton2 );
490 StyleChangedSignalChecker styleChangedSignalHandler;
491 StyleManager styleManager = StyleManager::Get();
493 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
495 tet_infoline("Apply the style");
497 std::string themeFile("ThemeOne");
498 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
499 styleManager.ApplyTheme(themeFile);
502 application.SendNotification();
503 application.Render();
505 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
506 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
508 // Apply the style to the test button:
509 std::string themeFile2("ThemeTwo");
510 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
511 styleManager.ApplyStyle( testButton, themeFile2, "testbutton" );
513 tet_infoline("Check that the properties change for the first button");
514 Property::Value bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
515 Property::Value fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
516 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
517 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
519 DALI_TEST_NOT_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
520 DALI_TEST_NOT_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
522 tet_infoline("Check that the properties remain the same for the second button");
523 bgColor = testButton2.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
524 fgColor = testButton2.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
525 DALI_TEST_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
526 DALI_TEST_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
532 int UtcDaliStyleManagerIncludeStyleP(void)
534 ToolkitTestApplication application;
536 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works" );
542 " \"src/dali-toolkit-styling/theme2.json\"\n"
548 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
554 Test::TestButton testButton = Test::TestButton::New();
555 Test::TestButton testButton2 = Test::TestButton::New();
556 Stage::GetCurrent().Add( testButton );
557 Stage::GetCurrent().Add( testButton2 );
558 StyleChangedSignalChecker styleChangedSignalHandler;
559 StyleManager styleManager = StyleManager::Get();
561 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
563 tet_infoline("Apply the style");
565 std::string themeFile("ThemeOne");
566 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
568 styleManager.ApplyTheme(themeFile);
571 application.SendNotification();
572 application.Render();
574 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
575 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
577 DALI_TEST_EQUALS( themedBgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
578 DALI_TEST_EQUALS( themedFgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
584 int UtcDaliStyleManagerIncludeStyleN(void)
586 ToolkitTestApplication application;
588 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works, but included stylesheet is bad json" );
594 " \"src/dali-toolkit-styling/theme3.json\"\n"
600 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
606 Test::TestButton testButton = Test::TestButton::New();
607 Test::TestButton testButton2 = Test::TestButton::New();
608 Stage::GetCurrent().Add( testButton );
609 Stage::GetCurrent().Add( testButton2 );
610 StyleChangedSignalChecker styleChangedSignalHandler;
611 StyleManager styleManager = StyleManager::Get();
613 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
615 tet_infoline("Apply the style");
617 std::string themeFile("ThemeOne");
618 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
622 styleManager.ApplyTheme(themeFile);
624 catch( Dali::DaliException& e )
626 DALI_TEST_ASSERT( e, "!\"Cannot parse JSON\"", TEST_LOCATION );
633 int UtcDaliStyleManagerStyleChangedSignalFontFamily(void)
635 tet_infoline("Test that the StyleChange signal is fired when the font family is altered" );
636 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
639 ToolkitTestApplication application;
641 std::string labelStr("Label");
642 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
643 Stage::GetCurrent().Add( label );
645 Toolkit::TextField field = Toolkit::TextField::New();
646 Stage::GetCurrent().Add( field );
648 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
649 Stage::GetCurrent().Add( editor );
651 StyleChangedSignalChecker styleChangedSignalHandler;
652 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
653 StyleManager styleManager = StyleManager::Get();
655 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
657 Test::StyleMonitor::SetDefaultFontFamily("Times New Roman");
659 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_CHANGE);
661 tet_infoline("Test that the StyleChanged signal is received only once");
663 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
665 // Check that the label's font style has been altered
666 Property::Value family = label.GetProperty(TextLabel::Property::FONT_FAMILY);
667 std::string familyStr;
668 family.Get( familyStr );
670 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
672 // Check that the field's font style has been altered
673 family = field.GetProperty(TextField::Property::FONT_FAMILY);
674 family.Get( familyStr );
676 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
678 // Check that the editor's font style has been altered
679 family = editor.GetProperty(TextEditor::Property::FONT_FAMILY);
680 family.Get( familyStr );
682 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
687 int UtcDaliStyleManagerStyleChangedSignalFontSize(void)
689 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
691 const char* defaultTheme =
695 " \"textlabelFontSize0\":\n"
697 " \"pointSize\":10\n"
699 " \"textlabelFontSize1\":\n"
701 " \"pointSize\":10\n"
703 " \"textlabelFontSize2\":\n"
705 " \"pointSize\":12\n"
707 " \"textlabelFontSize3\":\n"
709 " \"pointSize\":14\n"
711 " \"textlabelFontSize4\":\n"
713 " \"pointSize\":16\n"
718 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
720 ToolkitTestApplication application;
722 std::string labelStr("Label");
723 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
724 Stage::GetCurrent().Add( label );
726 Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
727 Stage::GetCurrent().Add( label2 );
729 StyleChangedSignalChecker styleChangedSignalHandler;
730 StyleMonitor styleMonitor = StyleMonitor::Get();
731 StyleManager styleManager = StyleManager::Get();
733 label.SetProperty(TextLabel::Property::POINT_SIZE, 10.0f);
735 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
737 Test::StyleMonitor::SetDefaultFontSize(2);
738 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
740 tet_infoline("Test that the StyleChanged signal is received only once");
741 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
743 tet_infoline("Test that the label's font size has been altered\n");
744 Property::Value pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
746 pointSizeValue.Get( pointSize );
748 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
750 styleChangedSignalHandler.signalCount = 0;
752 Test::StyleMonitor::SetDefaultFontSize(4);
753 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
755 tet_infoline("Test that the StyleChanged signal is received only once");
756 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
758 // Check that the label's font style has been altered
759 pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
760 pointSizeValue.Get( pointSize );
762 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
769 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextField(void)
771 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
773 const char* defaultTheme =
777 " \"textfieldFontSize0\":\n"
781 " \"textfieldFontSize1\":\n"
783 " \"pointSize\":10\n"
785 " \"textfieldFontSize2\":\n"
787 " \"pointSize\":12\n"
789 " \"textfieldFontSize3\":\n"
791 " \"pointSize\":14\n"
793 " \"textfieldFontSize4\":\n"
795 " \"pointSize\":16\n"
800 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
802 ToolkitTestApplication application;
804 std::string fieldStr("Field");
805 Toolkit::TextField field = Toolkit::TextField::New();
806 field.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
807 Stage::GetCurrent().Add( field );
809 Toolkit::TextField field2 = Toolkit::TextField::New();
810 Stage::GetCurrent().Add( field2 );
811 field2.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
813 StyleChangedSignalChecker styleChangedSignalHandler;
814 StyleMonitor styleMonitor = StyleMonitor::Get();
815 StyleManager styleManager = StyleManager::Get();
817 field.SetProperty(TextField::Property::POINT_SIZE, 10.0f);
819 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
821 Test::StyleMonitor::SetDefaultFontSize(2);
822 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
824 tet_infoline("Test that the StyleChanged signal is received only once");
825 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
827 tet_infoline("Test that the field's font size has been altered\n");
828 Property::Value pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
830 pointSizeValue.Get( pointSize );
832 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
834 styleChangedSignalHandler.signalCount = 0;
836 Test::StyleMonitor::SetDefaultFontSize(4);
837 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
839 tet_infoline("Test that the StyleChanged signal is received only once");
840 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
842 // Check that the field's font style has been altered
843 pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
844 pointSizeValue.Get( pointSize );
846 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
852 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextEditor(void)
854 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
856 const char* defaultTheme =
860 " \"texteditorFontSize0\":\n"
862 " \"pointSize\":10\n"
864 " \"texteditorFontSize1\":\n"
866 " \"pointSize\":12\n"
868 " \"texteditorFontSize2\":\n"
870 " \"pointSize\":14\n"
872 " \"texteditorFontSize3\":\n"
874 " \"pointSize\":18\n"
876 " \"texteditorFontSize4\":\n"
878 " \"pointSize\":25\n"
883 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
885 ToolkitTestApplication application;
887 std::string editorStr("Editor");
888 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
889 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
890 Stage::GetCurrent().Add( editor );
892 Toolkit::TextEditor editor2 = Toolkit::TextEditor::New();
893 Stage::GetCurrent().Add( editor2 );
894 editor2.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
896 StyleChangedSignalChecker styleChangedSignalHandler;
897 StyleMonitor styleMonitor = StyleMonitor::Get();
898 StyleManager styleManager = StyleManager::Get();
900 editor.SetProperty(TextEditor::Property::POINT_SIZE, 10.0f);
902 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
904 Test::StyleMonitor::SetDefaultFontSize(2);
905 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
907 tet_infoline("Test that the StyleChanged signal is received only once");
908 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
910 tet_infoline("Test that the editor's font size has been altered\n");
911 Property::Value pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
913 pointSizeValue.Get( pointSize );
915 DALI_TEST_EQUALS( pointSize, 14.0f, 0.001, TEST_LOCATION );
917 styleChangedSignalHandler.signalCount = 0;
919 Test::StyleMonitor::SetDefaultFontSize(4);
920 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
922 tet_infoline("Test that the StyleChanged signal is received only once");
923 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
925 // Check that the editor's font style has been altered
926 pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
927 pointSizeValue.Get( pointSize );
929 DALI_TEST_EQUALS( pointSize, 25.0f, 0.001, TEST_LOCATION );
936 int UtcDaliStyleManagerSetState01(void)
938 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
939 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
942 ToolkitTestApplication application;
944 StyleChangedSignalChecker styleChangedSignalHandler;
945 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
946 StyleManager styleManager = StyleManager::Get();
948 DummyControl actor = DummyControl::New(true);
949 actor.SetStyleName("BasicControl");
950 Stage::GetCurrent().Add(actor);
952 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
953 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
955 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
956 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
957 Visual::Base labelVisual1 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
958 Property::Map labelMap;
959 labelVisual1.CreatePropertyMap( labelMap );
960 labelMap[TextVisual::Property::TEXT] = "New text";
961 VisualFactory factory = VisualFactory::Get();
962 labelVisual1 = factory.CreateVisual(labelMap);
963 dummyImpl.UnregisterVisual(DummyControl::Property::LABEL_VISUAL );
964 dummyImpl.RegisterVisual(DummyControl::Property::LABEL_VISUAL, labelVisual1 );
966 actor.SetProperty( DevelControl::Property::STATE, DevelControl::FOCUSED );
968 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
969 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
970 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::LABEL_VISUAL), true, TEST_LOCATION);
972 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
973 Visual::Base labelVisual2 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
974 DALI_TEST_CHECK( visual1 != visual2 );
975 DALI_TEST_CHECK( labelVisual1 != labelVisual2 );
977 labelVisual2.CreatePropertyMap( labelMap );
978 Property::Value* textValue = labelMap.Find( Toolkit::TextVisual::Property::TEXT, "text");
979 DALI_TEST_CHECK( textValue );
980 Property::Value* pointSizeValue = labelMap.Find( Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
981 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
982 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
983 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
986 actor.SetProperty( DevelControl::Property::STATE, DevelControl::DISABLED );
988 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
990 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
991 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
992 DALI_TEST_CHECK( !focusVisual );
993 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
995 DALI_TEST_CHECK( visual1 != visual3 );
996 DALI_TEST_CHECK( visual2 != visual3 );
998 Visual::Base labelVisual3 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
999 DALI_TEST_CHECK( labelVisual2 != labelVisual3 );
1001 labelVisual2.CreatePropertyMap( labelMap );
1002 textValue = labelMap.Find(Toolkit::TextVisual::Property::TEXT, "text");
1003 DALI_TEST_CHECK( textValue );
1004 pointSizeValue = labelMap.Find(Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
1005 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
1006 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
1007 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
1012 int UtcDaliStyleManagerSetState02(void)
1014 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1015 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1018 ToolkitTestApplication application;
1020 StyleChangedSignalChecker styleChangedSignalHandler;
1021 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1022 StyleManager styleManager = StyleManager::Get();
1024 DummyControl actor = DummyControl::New(true);
1025 actor.SetStyleName("BasicControl");
1026 Stage::GetCurrent().Add(actor);
1028 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1029 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1031 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1032 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1034 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1035 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1037 actor.SetProperty( DevelControl::Property::STATE,
1038 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1040 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1041 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1043 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1044 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
1046 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1047 DALI_TEST_CHECK( visual1 != visual2 );
1049 actor.SetProperty( DevelControl::Property::STATE,
1050 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1052 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1053 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1055 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1057 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1059 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1060 DALI_TEST_CHECK( !testVisual );
1061 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1062 DALI_TEST_CHECK( !testVisual );
1063 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL2);
1064 DALI_TEST_CHECK( !testVisual );
1065 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1066 DALI_TEST_CHECK( testVisual );
1069 DALI_TEST_CHECK( visual1 != visual3 );
1070 DALI_TEST_CHECK( visual2 != visual3 );
1072 actor.SetProperty( DevelControl::Property::STATE,
1073 Property::Map().Add( "state", "NORMAL" ).Add("withTransitions", false));
1075 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1076 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1078 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1080 visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1081 DALI_TEST_CHECK( visual1 );
1083 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1084 DALI_TEST_CHECK( !focusVisual );
1085 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
1092 int UtcDaliStyleManagerSetState03N(void)
1094 tet_infoline("Instantiate dummy control and test state transition without state style" );
1095 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1098 ToolkitTestApplication application;
1100 StyleChangedSignalChecker styleChangedSignalHandler;
1101 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1102 StyleManager styleManager = StyleManager::Get();
1104 DummyControl actor = DummyControl::New(true);
1105 actor.SetStyleName("NoStyles");
1106 Stage::GetCurrent().Add(actor);
1108 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1109 Property::Map propertyMap;
1110 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1111 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1112 VisualFactory factory = VisualFactory::Get();
1113 Visual::Base visual = factory.CreateVisual( propertyMap );
1114 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1116 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1117 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1119 actor.SetProperty( DevelControl::Property::STATE,
1120 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1122 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1123 DALI_TEST_CHECK( testVisual = visual );
1125 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1126 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1128 actor.SetProperty( DevelControl::Property::STATE,
1129 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1131 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::DISABLED, TEST_LOCATION );
1141 int UtcDaliStyleManagerSetState04N(void)
1143 tet_infoline("Instantiate dummy control and test state transition with style without state" );
1144 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1147 ToolkitTestApplication application;
1149 StyleChangedSignalChecker styleChangedSignalHandler;
1150 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1151 StyleManager styleManager = StyleManager::Get();
1153 DummyControl actor = DummyControl::New(true);
1154 actor.SetStyleName("NoStateStyle");
1155 Stage::GetCurrent().Add(actor);
1157 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1158 Property::Map propertyMap;
1159 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1160 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1161 VisualFactory factory = VisualFactory::Get();
1162 Visual::Base visual = factory.CreateVisual( propertyMap );
1163 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1165 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1166 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1168 actor.SetProperty( DevelControl::Property::STATE,
1169 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1171 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1172 DALI_TEST_CHECK( testVisual = visual );
1174 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1175 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1177 actor.SetProperty( DevelControl::Property::STATE,
1178 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1180 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::DISABLED, TEST_LOCATION );
1189 int UtcDaliStyleManagerSetSubState01(void)
1191 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1192 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1195 ToolkitTestApplication application;
1197 StyleChangedSignalChecker styleChangedSignalHandler;
1198 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1199 StyleManager styleManager = StyleManager::Get();
1201 DummyControl actor = DummyControl::New(true);
1202 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1203 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1204 actor.SetStyleName("ComplexControl");
1205 Stage::GetCurrent().Add(actor);
1207 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1209 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1211 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1212 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1213 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1215 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
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::COLOR, TEST_LOCATION);
1221 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
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::GRADIENT, TEST_LOCATION);
1231 int UtcDaliStyleManagerSetSubState02(void)
1233 tet_infoline("Instantiate complex control and test state/substate change" );
1234 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1237 ToolkitTestApplication application;
1239 StyleChangedSignalChecker styleChangedSignalHandler;
1240 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1241 StyleManager styleManager = StyleManager::Get();
1243 DummyControl actor = DummyControl::New(true);
1244 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1245 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1246 tet_infoline( "Setting state to NORMAL/SELECTED before re-styling\n");
1248 actor.SetStyleName("ComplexControl");
1249 Stage::GetCurrent().Add(actor);
1251 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1253 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1255 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1256 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1258 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1259 tet_infoline( "Changing substate to UNSELECTED - check visual changes\n");
1261 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1262 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1264 actor.SetProperty(DevelControl::Property::STATE, "FOCUSED");
1265 tet_infoline( "Changing state to FOCUSED - check visual changes\n");
1267 Visual::Base fgVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1268 Visual::Base focusVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::DevelVisual::N_PATCH, TEST_LOCATION);
1270 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1271 tet_infoline( "Changing substate to SELECTED - Expect no change\n");
1273 Visual::Base fgVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1274 Visual::Base focusVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::DevelVisual::N_PATCH, TEST_LOCATION);
1276 DALI_TEST_CHECK( fgVisual1 == fgVisual2 );
1277 DALI_TEST_CHECK( focusVisual1 == focusVisual2 );
1279 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1280 tet_infoline( "Changing state to NORMAL - Expect to change to NORMAL/SELECTED \n");
1282 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1283 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1285 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1286 DALI_TEST_CHECK( ! focusVisual );
1288 actor.SetProperty(DevelControl::Property::STATE, "DISABLED");
1289 tet_infoline( "Changing state to DISABLED - Expect to change to DISABLED/SELECTED \n");
1291 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::COLOR, TEST_LOCATION);
1292 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1294 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1295 DALI_TEST_CHECK( ! testVisual );
1296 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1297 DALI_TEST_CHECK( ! testVisual );