2 * Copyright (c) 2016 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-base.h>
35 using namespace Dali::Toolkit;
39 std::string defaultTheme;
41 } // anonymous namespace
46 void dali_style_manager_startup(void)
48 test_return_value = TET_UNDEF;
50 std::ifstream t("src/dali-toolkit-styling/default-theme.json");
51 defaultTheme = std::string((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
54 void dali_style_manager_cleanup(void)
56 test_return_value = TET_PASS;
59 int UtcDaliStyleManagerConstructorP(void)
61 ToolkitTestApplication application;
63 tet_infoline(" UtcDaliStyleManagerConstructorP");
64 StyleManager styleManager;
65 DALI_TEST_CHECK( !styleManager);
69 int UtcDaliStyleManagerCopyConstructorP(void)
71 TestApplication application;
73 StyleManager styleManager = StyleManager::Get();
74 StyleManager copyOfStyleManager( styleManager );
76 DALI_TEST_CHECK( copyOfStyleManager );
80 int UtcDaliStyleManagerAssignmentOperatorP(void)
82 TestApplication application;
84 StyleManager styleManager = StyleManager::Get();
85 StyleManager copyOfStyleManager = styleManager;
87 DALI_TEST_CHECK( copyOfStyleManager );
88 DALI_TEST_CHECK( copyOfStyleManager == styleManager );
92 int UtcDaliStyleManagerGet(void)
94 ToolkitTestApplication application;
96 tet_infoline(" UtcDaliStyleManagerGet");
100 type = TypeRegistry::Get().GetTypeInfo( "StyleManager" );
101 DALI_TEST_CHECK( type );
102 BaseHandle handle = type.CreateInstance();
103 DALI_TEST_CHECK( handle );
105 StyleManager manager;
107 manager = StyleManager::Get();
108 DALI_TEST_CHECK(manager);
110 StyleManager newManager = StyleManager::Get();
111 DALI_TEST_CHECK(newManager);
113 // Check that focus manager is a singleton
114 DALI_TEST_CHECK(manager == newManager);
121 class StyleChangedSignalChecker : public ConnectionTracker
124 StyleChangedSignalChecker()
129 void OnStyleChanged(StyleManager styleManager, StyleChange::Type type)
143 } // anonymous namespace
145 int UtcDaliStyleManagerApplyTheme(void)
147 ToolkitTestApplication application;
149 tet_infoline( "Testing StyleManager ApplyTheme" );
155 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Verbose\"\n"
161 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
162 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
173 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
174 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
179 // Add 2 buttons to test how many times the signal is sent
180 Test::TestButton testButton = Test::TestButton::New();
181 Test::TestButton testButton2 = Test::TestButton::New();
182 Stage::GetCurrent().Add( testButton );
183 Stage::GetCurrent().Add( testButton2 );
184 StyleChangedSignalChecker styleChangedSignalHandler;
185 StyleChangedSignalChecker styleChangedSignalHandler2;
186 StyleManager styleManager = StyleManager::Get();
188 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
191 application.SendNotification();
192 application.Render();
194 tet_infoline("Apply the style");
196 std::string themeFile("ThemeOne");
197 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
198 StyleManager::Get().ApplyTheme(themeFile);
200 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
201 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
203 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
204 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
206 tet_infoline("Testing that the signal handler is called only once");
207 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
209 tet_infoline("Override the background property");
210 testButton.SetProperty( Test::TestButton::Property::BACKGROUND_COLOR, Color::GREEN );
211 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
212 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
213 DALI_TEST_EQUALS( bgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
214 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
217 application.SendNotification();
218 application.Render();
220 tet_infoline("Apply the style again");
222 styleChangedSignalHandler.signalCount = 0;
223 StyleManager::Get().ApplyTheme(themeFile);
225 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
226 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
228 tet_infoline("Check that the property is changed");
229 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
230 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
231 tet_infoline("Testing that the signal handler is called only once");
232 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
234 tet_infoline( "Load a different stylesheet");
236 tet_infoline("Apply the new style");
237 std::string themeFile2("ThemeTwo");
238 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
240 styleChangedSignalHandler.signalCount = 0;
241 StyleManager::Get().ApplyTheme(themeFile2);
243 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
244 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
246 tet_infoline("Check that the properties change, but the signal gets sent only once");
247 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
248 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
249 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
255 int UtcDaliStyleManagerApplyDefaultTheme(void)
257 tet_infoline( "Testing StyleManager ApplyTheme" );
259 const char* defaultTheme =
263 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Concise\"\n"
269 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
270 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
274 // Bg: Yellow, Fg: Blue
276 const char* appTheme =
282 " \"backgroundColor\":[1.0,0.0,1.0,1.0],\n"
283 " \"foregroundColor\":[0.0,1.0,0.0,1.0]\n"
287 // Bg::Magenta, Fg:Green
289 std::string filepath(TEST_RESOURCE_DIR "");
291 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
293 ToolkitTestApplication application;
295 Test::TestButton testButton = Test::TestButton::New();
296 Stage::GetCurrent().Add( testButton );
297 StyleChangedSignalChecker styleChangedSignalHandler;
298 StyleManager styleManager = StyleManager::Get();
300 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
303 application.SendNotification();
304 application.Render();
307 Property::Value defaultBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
308 Property::Value defaultFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
310 tet_infoline("Apply the style");
312 std::string themeFile("ThemeOne");
313 Test::StyleMonitor::SetThemeFileOutput(themeFile, appTheme);
314 StyleManager::Get().ApplyTheme(themeFile);
316 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
317 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
319 DALI_TEST_EQUALS( bgColor, Property::Value(Color::MAGENTA), 0.001, TEST_LOCATION );
320 DALI_TEST_EQUALS( fgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
322 tet_infoline("Testing that the signal handler is called only once");
323 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
324 tet_infoline("Revert the style");
326 styleChangedSignalHandler.signalCount = 0;
327 StyleManager::Get().ApplyDefaultTheme();
329 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
330 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
332 tet_infoline("Check that the property is reverted");
333 DALI_TEST_EQUALS( bgColor, defaultBgColor, 0.001, TEST_LOCATION );
334 DALI_TEST_EQUALS( fgColor, defaultFgColor, 0.001, TEST_LOCATION );
335 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
336 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
337 tet_infoline("Testing that the signal handler is called only once");
338 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
344 int UtcDaliStyleManagerSetStyleConstantP(void)
346 ToolkitTestApplication application;
348 tet_infoline( " UtcDaliStyleManagerSetStyleConstantP" );
350 StyleManager manager = StyleManager::Get();
352 std::string key( "key" );
353 Property::Value value( 100 );
355 manager.SetStyleConstant( key, value );
357 Property::Value returnedValue;
358 manager.GetStyleConstant( key, returnedValue );
360 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
365 int UtcDaliStyleManagerGetStyleConstantP(void)
367 ToolkitTestApplication application;
369 tet_infoline( " UtcDaliStyleManagerGetStyleConstantP" );
371 StyleManager manager = StyleManager::Get();
373 std::string key( "key" );
374 Property::Value value( 100 );
376 manager.SetStyleConstant( key, value );
378 Property::Value returnedValue;
379 manager.GetStyleConstant( key, returnedValue );
381 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
385 int UtcDaliStyleManagerGetStyleConstantN(void)
387 ToolkitTestApplication application;
389 tet_infoline( " UtcDaliStyleManagerGetStyleConstantN" );
391 StyleManager manager = StyleManager::Get();
393 std::string key2( "key2" );
394 Property::Value returnedValue2;
395 DALI_TEST_CHECK( !manager.GetStyleConstant( key2, returnedValue2 ) );
400 int UtcDaliStyleManagerApplyStyle(void)
402 ToolkitTestApplication application;
404 tet_infoline( "UtcDaliStyleManagerApplyStyle - test that a style can be applied to a single button" );
410 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"General\"\n"
416 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
417 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
428 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
429 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
435 Test::TestButton testButton = Test::TestButton::New();
436 Test::TestButton testButton2 = Test::TestButton::New();
437 Stage::GetCurrent().Add( testButton );
438 Stage::GetCurrent().Add( testButton2 );
439 StyleChangedSignalChecker styleChangedSignalHandler;
440 StyleManager styleManager = StyleManager::Get();
442 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
444 tet_infoline("Apply the style");
446 std::string themeFile("ThemeOne");
447 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
448 styleManager.ApplyTheme(themeFile);
451 application.SendNotification();
452 application.Render();
454 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
455 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
457 // Apply the style to the test button:
458 std::string themeFile2("ThemeTwo");
459 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
460 styleManager.ApplyStyle( testButton, themeFile2, "testbutton" );
462 tet_infoline("Check that the properties change for the first button");
463 Property::Value bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
464 Property::Value fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
465 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
466 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
468 DALI_TEST_NOT_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
469 DALI_TEST_NOT_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
471 tet_infoline("Check that the properties remain the same for the second button");
472 bgColor = testButton2.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
473 fgColor = testButton2.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
474 DALI_TEST_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
475 DALI_TEST_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
481 int UtcDaliStyleManagerIncludeStyleP(void)
483 ToolkitTestApplication application;
485 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works" );
491 " \"src/dali-toolkit-styling/theme2.json\"\n"
497 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
503 Test::TestButton testButton = Test::TestButton::New();
504 Test::TestButton testButton2 = Test::TestButton::New();
505 Stage::GetCurrent().Add( testButton );
506 Stage::GetCurrent().Add( testButton2 );
507 StyleChangedSignalChecker styleChangedSignalHandler;
508 StyleManager styleManager = StyleManager::Get();
510 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
512 tet_infoline("Apply the style");
514 std::string themeFile("ThemeOne");
515 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
517 styleManager.ApplyTheme(themeFile);
520 application.SendNotification();
521 application.Render();
523 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
524 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
526 DALI_TEST_EQUALS( themedBgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
527 DALI_TEST_EQUALS( themedFgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
533 int UtcDaliStyleManagerIncludeStyleN(void)
535 ToolkitTestApplication application;
537 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works, but included stylesheet is bad json" );
543 " \"src/dali-toolkit-styling/theme3.json\"\n"
549 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
555 Test::TestButton testButton = Test::TestButton::New();
556 Test::TestButton testButton2 = Test::TestButton::New();
557 Stage::GetCurrent().Add( testButton );
558 Stage::GetCurrent().Add( testButton2 );
559 StyleChangedSignalChecker styleChangedSignalHandler;
560 StyleManager styleManager = StyleManager::Get();
562 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
564 tet_infoline("Apply the style");
566 std::string themeFile("ThemeOne");
567 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
571 styleManager.ApplyTheme(themeFile);
573 catch( Dali::DaliException& e )
575 DALI_TEST_ASSERT( e, "!\"Cannot parse JSON\"", TEST_LOCATION );
582 int UtcDaliStyleManagerStyleChangedSignalFontFamily(void)
584 tet_infoline("Test that the StyleChange signal is fired when the font family is altered" );
585 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
588 ToolkitTestApplication application;
590 std::string labelStr("Label");
591 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
592 Stage::GetCurrent().Add( label );
594 Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
595 Stage::GetCurrent().Add( label2 );
597 StyleChangedSignalChecker styleChangedSignalHandler;
598 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
599 StyleManager styleManager = StyleManager::Get();
601 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
603 Test::StyleMonitor::SetDefaultFontFamily("Times New Roman");
605 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_CHANGE);
607 tet_infoline("Test that the StyleChanged signal is received only once");
609 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
611 // Check that the label's font style has been altered
612 Property::Value family = label.GetProperty(TextLabel::Property::FONT_FAMILY);
613 std::string familyStr;
614 family.Get( familyStr );
616 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
621 int UtcDaliStyleManagerStyleChangedSignalFontSize(void)
623 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
625 const char* defaultTheme =
629 " \"textlabelFontSize0\":\n"
631 " \"pointSize\":10\n"
633 " \"textlabelFontSize1\":\n"
635 " \"pointSize\":10\n"
637 " \"textlabelFontSize2\":\n"
639 " \"pointSize\":12\n"
641 " \"textlabelFontSize3\":\n"
643 " \"pointSize\":14\n"
645 " \"textlabelFontSize4\":\n"
647 " \"pointSize\":16\n"
652 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
654 ToolkitTestApplication application;
656 std::string labelStr("Label");
657 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
658 Stage::GetCurrent().Add( label );
660 Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
661 Stage::GetCurrent().Add( label2 );
663 StyleChangedSignalChecker styleChangedSignalHandler;
664 StyleMonitor styleMonitor = StyleMonitor::Get();
665 StyleManager styleManager = StyleManager::Get();
667 label.SetProperty(TextLabel::Property::POINT_SIZE, 10.0f);
669 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
671 Test::StyleMonitor::SetDefaultFontSize(2);
672 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
674 tet_infoline("Test that the StyleChanged signal is received only once");
675 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
677 tet_infoline("Test that the label's font size has been altered\n");
678 Property::Value pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
680 pointSizeValue.Get( pointSize );
682 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
684 styleChangedSignalHandler.signalCount = 0;
686 Test::StyleMonitor::SetDefaultFontSize(4);
687 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
689 tet_infoline("Test that the StyleChanged signal is received only once");
690 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
692 // Check that the label's font style has been altered
693 pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
694 pointSizeValue.Get( pointSize );
696 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
703 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextField(void)
705 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
707 const char* defaultTheme =
711 " \"textfieldFontSize0\":\n"
715 " \"textfieldFontSize1\":\n"
717 " \"pointSize\":10\n"
719 " \"textfieldFontSize2\":\n"
721 " \"pointSize\":12\n"
723 " \"textfieldFontSize3\":\n"
725 " \"pointSize\":14\n"
727 " \"textfieldFontSize4\":\n"
729 " \"pointSize\":16\n"
734 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
736 ToolkitTestApplication application;
738 std::string fieldStr("Field");
739 Toolkit::TextField field = Toolkit::TextField::New();
740 field.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
741 Stage::GetCurrent().Add( field );
743 Toolkit::TextField field2 = Toolkit::TextField::New();
744 Stage::GetCurrent().Add( field2 );
745 field2.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
747 StyleChangedSignalChecker styleChangedSignalHandler;
748 StyleMonitor styleMonitor = StyleMonitor::Get();
749 StyleManager styleManager = StyleManager::Get();
751 field.SetProperty(TextField::Property::POINT_SIZE, 10.0f);
753 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
755 Test::StyleMonitor::SetDefaultFontSize(2);
756 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
758 tet_infoline("Test that the StyleChanged signal is received only once");
759 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
761 tet_infoline("Test that the field's font size has been altered\n");
762 Property::Value pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
764 pointSizeValue.Get( pointSize );
766 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
768 styleChangedSignalHandler.signalCount = 0;
770 Test::StyleMonitor::SetDefaultFontSize(4);
771 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
773 tet_infoline("Test that the StyleChanged signal is received only once");
774 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
776 // Check that the field's font style has been altered
777 pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
778 pointSizeValue.Get( pointSize );
780 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
786 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextEditor(void)
788 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
790 const char* defaultTheme =
794 " \"texteditorFontSize0\":\n"
796 " \"pointSize\":10\n"
798 " \"texteditorFontSize1\":\n"
800 " \"pointSize\":12\n"
802 " \"texteditorFontSize2\":\n"
804 " \"pointSize\":14\n"
806 " \"texteditorFontSize3\":\n"
808 " \"pointSize\":18\n"
810 " \"texteditorFontSize4\":\n"
812 " \"pointSize\":25\n"
817 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
819 ToolkitTestApplication application;
821 std::string editorStr("Editor");
822 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
823 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
824 Stage::GetCurrent().Add( editor );
826 Toolkit::TextEditor editor2 = Toolkit::TextEditor::New();
827 Stage::GetCurrent().Add( editor2 );
828 editor2.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
830 StyleChangedSignalChecker styleChangedSignalHandler;
831 StyleMonitor styleMonitor = StyleMonitor::Get();
832 StyleManager styleManager = StyleManager::Get();
834 editor.SetProperty(TextEditor::Property::POINT_SIZE, 10.0f);
836 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
838 Test::StyleMonitor::SetDefaultFontSize(2);
839 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
841 tet_infoline("Test that the StyleChanged signal is received only once");
842 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
844 tet_infoline("Test that the editor's font size has been altered\n");
845 Property::Value pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
847 pointSizeValue.Get( pointSize );
849 DALI_TEST_EQUALS( pointSize, 14.0f, 0.001, TEST_LOCATION );
851 styleChangedSignalHandler.signalCount = 0;
853 Test::StyleMonitor::SetDefaultFontSize(4);
854 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
856 tet_infoline("Test that the StyleChanged signal is received only once");
857 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
859 // Check that the editor's font style has been altered
860 pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
861 pointSizeValue.Get( pointSize );
863 DALI_TEST_EQUALS( pointSize, 25.0f, 0.001, TEST_LOCATION );
870 int UtcDaliStyleManagerSetState01(void)
872 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
873 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
876 ToolkitTestApplication application;
878 StyleChangedSignalChecker styleChangedSignalHandler;
879 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
880 StyleManager styleManager = StyleManager::Get();
882 DummyControl actor = DummyControl::New(true);
883 actor.SetStyleName("BasicControl");
884 Stage::GetCurrent().Add(actor);
886 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
888 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
889 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
891 actor.SetProperty( DevelControl::Property::STATE, DevelControl::FOCUSED );
893 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
894 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
896 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
897 DALI_TEST_CHECK( visual1 != visual2 );
899 actor.SetProperty( DevelControl::Property::STATE, DevelControl::DISABLED );
901 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
903 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
904 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
905 DALI_TEST_CHECK( !focusVisual );
906 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
908 DALI_TEST_CHECK( visual1 != visual3 );
909 DALI_TEST_CHECK( visual2 != visual3 );
914 int UtcDaliStyleManagerSetState02(void)
916 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
917 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
920 ToolkitTestApplication application;
922 StyleChangedSignalChecker styleChangedSignalHandler;
923 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
924 StyleManager styleManager = StyleManager::Get();
926 DummyControl actor = DummyControl::New(true);
927 actor.SetStyleName("BasicControl");
928 Stage::GetCurrent().Add(actor);
930 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
932 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
933 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
935 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
936 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
938 actor.SetProperty( DevelControl::Property::STATE,
939 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
941 state = actor.GetProperty<int>( DevelControl::Property::STATE );
942 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
944 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
945 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
947 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
948 DALI_TEST_CHECK( visual1 != visual2 );
950 actor.SetProperty( DevelControl::Property::STATE,
951 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
953 state = actor.GetProperty<int>( DevelControl::Property::STATE );
954 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
956 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
958 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
959 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
960 DALI_TEST_CHECK( !focusVisual );
961 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
963 DALI_TEST_CHECK( visual1 != visual3 );
964 DALI_TEST_CHECK( visual2 != visual3 );
966 actor.SetProperty( DevelControl::Property::STATE,
967 Property::Map().Add( "state", "NORMAL" ).Add("withTransitions", false));
969 state = actor.GetProperty<int>( DevelControl::Property::STATE );
970 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
972 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
974 visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
975 DALI_TEST_CHECK( visual1 );
977 focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
978 DALI_TEST_CHECK( !focusVisual );
979 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
986 int UtcDaliStyleManagerSetSubState(void)
988 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
989 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
992 ToolkitTestApplication application;
994 StyleChangedSignalChecker styleChangedSignalHandler;
995 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
996 StyleManager styleManager = StyleManager::Get();
998 DummyControl actor = DummyControl::New(true);
999 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1000 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1001 actor.SetStyleName("ComplexControl");
1002 Stage::GetCurrent().Add(actor);
1004 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1007 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1008 Visual::Base visual = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1009 DALI_TEST_CHECK( visual );
1011 visual.CreatePropertyMap( map );
1012 Property::Value* value = map.Find( Visual::Property::TYPE );
1013 DALI_TEST_CHECK( value );
1016 value->Get( visualType );
1017 DALI_TEST_EQUALS( visualType, (int)Toolkit::Visual::GRADIENT, TEST_LOCATION );
1020 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1023 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1024 Visual::Base visual = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1025 DALI_TEST_CHECK( visual );
1027 visual.CreatePropertyMap( map );
1028 Property::Value* value = map.Find( Visual::Property::TYPE );
1029 DALI_TEST_CHECK( value );
1032 value->Get( visualType );
1033 DALI_TEST_EQUALS( visualType, (int)Toolkit::Visual::COLOR, TEST_LOCATION );
1036 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1039 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1040 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1041 Visual::Base visual = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1042 DALI_TEST_CHECK( visual );
1044 visual.CreatePropertyMap( map );
1045 Property::Value* value = map.Find( Visual::Property::TYPE );
1046 DALI_TEST_CHECK( value );
1049 value->Get( visualType );
1050 DALI_TEST_EQUALS( visualType, (int)Toolkit::Visual::GRADIENT, TEST_LOCATION );