Merge "Changed text controls to re-apply style after system font size change" into...
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-styling / utc-Dali-StyleManager.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include <dali/devel-api/adaptor-framework/style-monitor.h>
18
19 #include <iostream>
20 #include <stdlib.h>
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali-toolkit/dali-toolkit.h>
23 #include <dali/integration-api/events/touch-event-integ.h>
24 #include <dali-toolkit/devel-api/builder/builder.h>
25 #include <test-button.h>
26 #include <test-animation-data.h>
27 #include <toolkit-style-monitor.h>
28
29 using namespace Dali;
30 using namespace Dali::Toolkit;
31
32 namespace
33 {
34 const char* defaultTheme =
35 "{\n"
36 "  \"styles\":\n"
37 "  {\n"
38 "    \"textlabel\":\n"
39 "    {\n"
40 "      \"pointSize\":18\n"
41 "    },\n"
42 "\n"
43 "    \"textlabelFontSize0\":\n"
44 "    {\n"
45 "      \"pointSize\":8\n"
46 "    },\n"
47 "    \"textlabelFontSize1\":\n"
48 "    {\n"
49 "      \"pointSize\":10\n"
50 "    },\n"
51 "    \"textlabelFontSize2\":\n"
52 "    {\n"
53 "      \"pointSize\":15\n"
54 "    },\n"
55 "    \"textlabelFontSize3\":\n"
56 "    {\n"
57 "      \"pointSize\":19\n"
58 "    },\n"
59 "    \"textlabelFontSize4\":\n"
60 "    {\n"
61 "      \"pointSize\":25\n"
62 "    },\n"
63 "\n"
64 "    \"textfield\":\n"
65 "    {\n"
66 "      \"pointSize\":18,\n"
67 "      \"primaryCursorColor\":[0.0,0.72,0.9,1.0],\n"
68 "      \"secondaryCursorColor\":[0.0,0.72,0.9,1.0],\n"
69 "      \"cursorWidth\":3,\n"
70 "      \"selectionHighlightColor\":[0.75,0.96,1.0,1.0],\n"
71 "      \"grabHandleImage\" : \"{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png\",\n"
72 "      \"selectionHandleImageLeft\" : {\"filename\":\"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png\" },\n"
73 "      \"selectionHandleImageRight\": {\"filename\":\"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png\" }\n"
74 "    },\n"
75 "\n"
76 "    \"textfieldFontSize0\":\n"
77 "    {\n"
78 "      \"pointSize\":10\n"
79 "    },\n"
80 "    \"textfieldFontSize1\":\n"
81 "    {\n"
82 "      \"pointSize\":10\n"
83 "    },\n"
84 "    \"textfieldFontSize2\":\n"
85 "    {\n"
86 "      \"pointSize\":10\n"
87 "    },\n"
88 "    \"textfieldFontSize3\":\n"
89 "    {\n"
90 "      \"pointSize\":10\n"
91 "    },\n"
92 "    \"textfieldFontSize4\":\n"
93 "    {\n"
94 "      \"pointSize\":10\n"
95 "    },\n"
96 "    \"textselectionpopup\":\n"
97 "    {\n"
98 "      \"popupMaxSize\":[656,72],\n"
99 "      \"optionDividerSize\":[2,0],\n"
100 "      \"popupDividerColor\":[0.23,0.72,0.8,0.11],\n"
101 "      \"popupIconColor\":[1.0,1.0,1.0,1.0],\n"
102 "      \"popupPressedColor\":[0.24,0.72,0.8,0.11],\n"
103 "      \"background\": {\n"
104 "        \"rendererType\": \"nPatch\",\n"
105 "        \"imageUrl\": \"{DALI_IMAGE_DIR}selection-popup-bg.9.png\"\n"
106 "        },\n"
107 "      \"popupFadeInDuration\":0.25,\n"
108 "      \"popupFadeOutDuration\":0.25\n"
109 "    },\n"
110 "    \"textselectionpopupbutton\":\n"
111 "    {\n"
112 "      \"label\":\n"
113 "      {\n"
114 "        \"pointSize\":8,\n"
115 "        \"fontStyle\":\"{\\\\""weight\\\\"":\\\\""light\\\\""}\"\n"
116 "      }\n"
117 "    },\n"
118 "    \"textselectiontoolbar\":\n"
119 "    {\n"
120 "      \"enableOvershoot\":true,\n"
121 "      \"scrollView\":\n"
122 "      {\n"
123 "        \"overshootAnimationSpeed\":360.0,\n"
124 "        \"overshootSize\":[720.0,130.0]\n"
125 "      }\n"
126 "    },\n"
127 "    \"scrollview\":\n"
128 "    {\n"
129 "      \"overshootEffectColor\":\"B018\",\n"
130 "      \"overshootAnimationSpeed\":360.0,\n"
131 "      \"overshootSize\":[720.0,130.0]\n"
132 "    },\n"
133 "    \"itemview\":\n"
134 "    {\n"
135 "      \"overshootEffectColor\":\"B018\",\n"
136 "      \"overshootAnimationSpeed\":360.0,\n"
137 "      \"overshootSize\":[720.0,130.0]\n"
138 "    },\n"
139 "    \"texteditor\":\n"
140 "    {\n"
141 "      \"pointSize\":18,\n"
142 "      \"primaryCursorColor\":[0.0,0.72,0.9,1.0],\n"
143 "      \"secondaryCursorColor\":[0.0,0.72,0.9,1.0],\n"
144 "      \"cursorWidth\":3,\n"
145 "      \"selectionHighlightColor\":[0.75,0.96,1.0,1.0],\n"
146 "      \"grabHandleImage\" : \"{DALI_STYLE_IMAGE_DIR}cursor_handler_drop_center.png\",\n"
147 "      \"selectionHandleImageLeft\" : {\"filename\":\"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_left.png\" },\n"
148 "      \"selectionHandleImageRight\": {\"filename\":\"{DALI_STYLE_IMAGE_DIR}selection_handle_drop_right.png\" }\n"
149 "    }\n"
150 "  }\n"
151 "}\n";
152
153 } // anonymous namespace
154
155
156
157 void dali_style_manager_startup(void)
158 {
159   test_return_value = TET_UNDEF;
160 }
161
162 void dali_style_manager_cleanup(void)
163 {
164   test_return_value = TET_PASS;
165 }
166
167 int UtcDaliStyleManagerConstructorP(void)
168 {
169   ToolkitTestApplication application;
170
171   tet_infoline(" UtcDaliStyleManagerConstructorP");
172   StyleManager styleManager;
173   DALI_TEST_CHECK( !styleManager);
174   END_TEST;
175 }
176
177 int UtcDaliStyleManagerCopyConstructorP(void)
178 {
179   TestApplication application;
180
181   StyleManager styleManager = StyleManager::Get();
182   StyleManager copyOfStyleManager( styleManager );
183
184   DALI_TEST_CHECK( copyOfStyleManager );
185   END_TEST;
186 }
187
188 int UtcDaliStyleManagerAssignmentOperatorP(void)
189 {
190   TestApplication application;
191
192   StyleManager styleManager = StyleManager::Get();
193   StyleManager copyOfStyleManager = styleManager;
194
195   DALI_TEST_CHECK( copyOfStyleManager );
196   DALI_TEST_CHECK( copyOfStyleManager == styleManager );
197   END_TEST;
198 }
199
200 int UtcDaliStyleManagerGet(void)
201 {
202   ToolkitTestApplication application;
203
204   tet_infoline(" UtcDaliStyleManagerGet");
205
206   // Register Type
207   TypeInfo type;
208   type = TypeRegistry::Get().GetTypeInfo( "StyleManager" );
209   DALI_TEST_CHECK( type );
210   BaseHandle handle = type.CreateInstance();
211   DALI_TEST_CHECK( handle );
212
213   StyleManager manager;
214
215   manager = StyleManager::Get();
216   DALI_TEST_CHECK(manager);
217
218   StyleManager newManager = StyleManager::Get();
219   DALI_TEST_CHECK(newManager);
220
221   // Check that focus manager is a singleton
222   DALI_TEST_CHECK(manager == newManager);
223   END_TEST;
224 }
225
226
227 namespace
228 {
229 class StyleChangedSignalChecker : public ConnectionTracker
230 {
231 public:
232   StyleChangedSignalChecker()
233   : signalCount(0)
234   {
235   }
236
237   void OnStyleChanged(StyleManager styleManager, StyleChange::Type type)
238   {
239     signalCount++;
240   }
241
242   void Reset()
243   {
244     signalCount =0;
245   }
246
247 public:
248   int signalCount;
249 };
250
251 } // anonymous namespace
252
253 int UtcDaliStyleManagerApplyTheme(void)
254 {
255   ToolkitTestApplication application;
256
257   tet_infoline( "Testing StyleManager ApplyTheme" );
258
259   const char* json1 =
260     "{\n"
261     "  \"styles\":\n"
262     "  {\n"
263     "    \"testbutton\":\n"
264     "    {\n"
265     "      \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
266     "      \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
267     "    }\n"
268     "  }\n"
269     "}\n";
270
271   const char* json2 =
272     "{\n"
273     "  \"styles\":\n"
274     "  {\n"
275     "    \"testbutton\":\n"
276     "    {\n"
277     "      \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
278     "      \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
279     "    }\n"
280     "  }\n"
281     "}\n";
282
283   // Add 2 buttons to test how many times the signal is sent
284   Test::TestButton testButton = Test::TestButton::New();
285   Test::TestButton testButton2 = Test::TestButton::New();
286   Stage::GetCurrent().Add( testButton );
287   Stage::GetCurrent().Add( testButton2 );
288   StyleChangedSignalChecker styleChangedSignalHandler;
289   StyleChangedSignalChecker styleChangedSignalHandler2;
290   StyleManager styleManager = StyleManager::Get();
291
292   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
293
294   // Render and notify
295   application.SendNotification();
296   application.Render();
297
298   tet_infoline("Apply the style");
299
300   std::string themeFile("ThemeOne");
301   Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
302   StyleManager::Get().ApplyTheme(themeFile);
303
304   Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
305   Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
306
307   DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
308   DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
309
310   tet_infoline("Testing that the signal handler is called only once");
311   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
312
313   tet_infoline("Override the background property");
314   testButton.SetProperty( Test::TestButton::Property::BACKGROUND_COLOR, Color::GREEN );
315   bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
316   fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
317   DALI_TEST_EQUALS( bgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
318   DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
319
320   // Render and notify
321   application.SendNotification();
322   application.Render();
323
324   tet_infoline("Apply the style again");
325
326   styleChangedSignalHandler.signalCount = 0;
327   StyleManager::Get().ApplyTheme(themeFile);
328
329   bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
330   fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
331
332   tet_infoline("Check that the property is changed");
333   DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
334   DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
335   tet_infoline("Testing that the signal handler is called only once");
336   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
337
338   tet_infoline( "Load a different stylesheet");
339
340   tet_infoline("Apply the new style");
341   std::string themeFile2("ThemeTwo");
342   Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
343
344   styleChangedSignalHandler.signalCount = 0;
345   StyleManager::Get().ApplyTheme(themeFile2);
346
347   bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
348   fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
349
350   tet_infoline("Check that the properties change, but the signal gets sent only once");
351   DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
352   DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
353   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
354
355   END_TEST;
356 }
357
358
359 int UtcDaliStyleManagerApplyDefaultTheme(void)
360 {
361   tet_infoline( "Testing StyleManager ApplyTheme" );
362
363   const char* defaultTheme =
364     "{\n"
365     "  \"styles\":\n"
366     "  {\n"
367     "    \"testbutton\":\n"
368     "    {\n"
369     "      \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
370     "      \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
371     "    }\n"
372     "  }\n"
373     "}\n";
374   // Bg: Yellow, Fg: Blue
375
376   const char* appTheme =
377     "{\n"
378     "  \"styles\":\n"
379     "  {\n"
380     "    \"testbutton\":\n"
381     "    {\n"
382     "      \"backgroundColor\":[1.0,0.0,1.0,1.0],\n"
383     "      \"foregroundColor\":[0.0,1.0,0.0,1.0]\n"
384     "    }\n"
385     "  }\n"
386     "}\n";
387   // Bg::Magenta, Fg:Green
388
389   std::string filepath(TEST_RESOURCE_DIR "");
390
391   Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
392                                           defaultTheme);
393   ToolkitTestApplication application;
394
395   Test::TestButton testButton = Test::TestButton::New();
396   Stage::GetCurrent().Add( testButton );
397   StyleChangedSignalChecker styleChangedSignalHandler;
398   StyleManager styleManager = StyleManager::Get();
399
400   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
401
402   // Render and notify
403   application.SendNotification();
404   application.Render();
405
406   // Get the default:
407   Property::Value defaultBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
408   Property::Value defaultFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
409
410   tet_infoline("Apply the style");
411
412   std::string themeFile("ThemeOne");
413   Test::StyleMonitor::SetThemeFileOutput(themeFile, appTheme);
414   StyleManager::Get().ApplyTheme(themeFile);
415
416   Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
417   Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
418
419   DALI_TEST_EQUALS( bgColor, Property::Value(Color::MAGENTA), 0.001, TEST_LOCATION );
420   DALI_TEST_EQUALS( fgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
421
422   tet_infoline("Testing that the signal handler is called only once");
423   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
424   tet_infoline("Revert the style");
425
426   styleChangedSignalHandler.signalCount = 0;
427   StyleManager::Get().ApplyDefaultTheme();
428
429   bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
430   fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
431
432   tet_infoline("Check that the property is reverted");
433   DALI_TEST_EQUALS( bgColor, defaultBgColor, 0.001, TEST_LOCATION );
434   DALI_TEST_EQUALS( fgColor, defaultFgColor, 0.001, TEST_LOCATION );
435   DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
436   DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
437   tet_infoline("Testing that the signal handler is called only once");
438   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
439
440   END_TEST;
441 }
442
443
444 int UtcDaliStyleManagerSetStyleConstantP(void)
445 {
446   ToolkitTestApplication application;
447
448   tet_infoline( " UtcDaliStyleManagerSetStyleConstantP" );
449
450   StyleManager manager = StyleManager::Get();
451
452   std::string key( "key" );
453   Property::Value value( 100 );
454
455   manager.SetStyleConstant( key, value );
456
457   Property::Value returnedValue;
458   manager.GetStyleConstant( key, returnedValue );
459
460   DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
461   END_TEST;
462 }
463
464
465 int UtcDaliStyleManagerGetStyleConstantP(void)
466 {
467   ToolkitTestApplication application;
468
469   tet_infoline( " UtcDaliStyleManagerGetStyleConstantP" );
470
471   StyleManager manager = StyleManager::Get();
472
473   std::string key( "key" );
474   Property::Value value( 100 );
475
476   manager.SetStyleConstant( key, value );
477
478   Property::Value returnedValue;
479   manager.GetStyleConstant( key, returnedValue );
480
481   DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
482   END_TEST;
483 }
484
485 int UtcDaliStyleManagerGetStyleConstantN(void)
486 {
487   ToolkitTestApplication application;
488
489   tet_infoline( " UtcDaliStyleManagerGetStyleConstantN" );
490
491   StyleManager manager = StyleManager::Get();
492
493   std::string key2( "key2" );
494   Property::Value returnedValue2;
495   DALI_TEST_CHECK( !manager.GetStyleConstant( key2, returnedValue2 ) );
496
497   END_TEST;
498 }
499
500 int UtcDaliStyleManagerApplyStyle(void)
501 {
502   ToolkitTestApplication application;
503
504   tet_infoline( "UtcDaliStyleManagerApplyStyle - test that a style can be applied to a single button" );
505
506   const char* json1 =
507     "{\n"
508     "  \"styles\":\n"
509     "  {\n"
510     "    \"testbutton\":\n"
511     "    {\n"
512     "      \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
513     "      \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
514     "    }\n"
515     "  }\n"
516     "}\n";
517
518   const char* json2 =
519     "{\n"
520     "  \"styles\":\n"
521     "  {\n"
522     "    \"testbutton\":\n"
523     "    {\n"
524     "      \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
525     "      \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
526     "    }\n"
527     "  }\n"
528     "}\n";
529
530   // Add 2 buttons
531   Test::TestButton testButton = Test::TestButton::New();
532   Test::TestButton testButton2 = Test::TestButton::New();
533   Stage::GetCurrent().Add( testButton );
534   Stage::GetCurrent().Add( testButton2 );
535   StyleChangedSignalChecker styleChangedSignalHandler;
536   StyleManager styleManager = StyleManager::Get();
537
538   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
539
540   tet_infoline("Apply the style");
541
542   std::string themeFile("ThemeOne");
543   Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
544   styleManager.ApplyTheme(themeFile);
545
546   // Render and notify
547   application.SendNotification();
548   application.Render();
549
550   Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
551   Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
552
553   // Apply the style to the test button:
554   std::string themeFile2("ThemeTwo");
555   Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
556   styleManager.ApplyStyle( testButton, themeFile2, "testbutton" );
557
558   tet_infoline("Check that the properties change for the first button");
559   Property::Value bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
560   Property::Value fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
561   DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
562   DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
563
564   DALI_TEST_NOT_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
565   DALI_TEST_NOT_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
566
567   tet_infoline("Check that the properties remain the same for the second button");
568   bgColor = testButton2.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
569   fgColor = testButton2.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
570   DALI_TEST_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
571   DALI_TEST_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
572
573   END_TEST;
574 }
575
576
577 int UtcDaliStyleManagerStyleChangedSignalFontFamily(void)
578 {
579   tet_infoline("Test that the StyleChange signal is fired when the font family is altered" );
580   Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
581                                           defaultTheme );
582
583   ToolkitTestApplication application;
584
585   std::string labelStr("Label");
586   Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
587   Stage::GetCurrent().Add( label );
588
589   Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
590   Stage::GetCurrent().Add( label2 );
591
592   StyleChangedSignalChecker styleChangedSignalHandler;
593   Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
594   StyleManager styleManager = StyleManager::Get();
595
596   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
597
598   Test::StyleMonitor::SetDefaultFontFamily("Times New Roman");
599
600   styleMonitor.StyleChangeSignal().Emit( styleMonitor,  StyleChange::DEFAULT_FONT_CHANGE);
601
602   tet_infoline("Test that the StyleChanged signal is received only once");
603
604   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
605
606   // Check that the label's font style has been altered
607   Property::Value family = label.GetProperty(TextLabel::Property::FONT_FAMILY);
608   std::string familyStr;
609   family.Get( familyStr );
610
611   DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
612
613   END_TEST;
614 }
615
616 int UtcDaliStyleManagerStyleChangedSignalFontSize(void)
617 {
618   tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
619
620   const char* defaultTheme =
621     "{\n"
622     "  \"styles\":\n"
623     "  {\n"
624     "    \"textlabelFontSize0\":\n"
625     "    {\n"
626     "      \"pointSize\":10\n"
627     "    },\n"
628     "    \"textlabelFontSize1\":\n"
629     "    {\n"
630     "      \"pointSize\":10\n"
631     "    },\n"
632     "    \"textlabelFontSize2\":\n"
633     "    {\n"
634     "      \"pointSize\":12\n"
635     "    },\n"
636     "    \"textlabelFontSize3\":\n"
637     "    {\n"
638     "      \"pointSize\":14\n"
639     "    },\n"
640     "    \"textlabelFontSize4\":\n"
641     "    {\n"
642     "      \"pointSize\":16\n"
643     "    }\n"
644     "  }\n"
645     "}\n";
646
647   Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
648
649   ToolkitTestApplication application;
650
651   std::string labelStr("Label");
652   Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
653   Stage::GetCurrent().Add( label );
654
655   Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
656   Stage::GetCurrent().Add( label2 );
657
658   StyleChangedSignalChecker styleChangedSignalHandler;
659   StyleMonitor styleMonitor = StyleMonitor::Get();
660   StyleManager styleManager = StyleManager::Get();
661
662   label.SetProperty(TextLabel::Property::POINT_SIZE, 10.0f);
663
664   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
665
666   Test::StyleMonitor::SetDefaultFontSize(2);
667   styleMonitor.StyleChangeSignal().Emit( styleMonitor,  StyleChange::DEFAULT_FONT_SIZE_CHANGE);
668
669   tet_infoline("Test that the StyleChanged signal is received only once");
670   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
671
672   tet_infoline("Test that the label's font size has been altered\n");
673   Property::Value pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
674   float pointSize;
675   pointSizeValue.Get( pointSize );
676
677   DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
678
679   styleChangedSignalHandler.signalCount = 0;
680
681   Test::StyleMonitor::SetDefaultFontSize(4);
682   styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
683
684   tet_infoline("Test that the StyleChanged signal is received only once");
685   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
686
687   // Check that the label's font style has been altered
688   pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
689   pointSizeValue.Get( pointSize );
690
691   DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
692
693
694   END_TEST;
695 }
696
697
698 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextField(void)
699 {
700   tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
701
702   const char* defaultTheme =
703     "{\n"
704     "  \"styles\":\n"
705     "  {\n"
706     "    \"textfieldFontSize0\":\n"
707     "    {\n"
708     "      \"pointSize\":8\n"
709     "    },\n"
710     "    \"textfieldFontSize1\":\n"
711     "    {\n"
712     "      \"pointSize\":10\n"
713     "    },\n"
714     "    \"textfieldFontSize2\":\n"
715     "    {\n"
716     "      \"pointSize\":12\n"
717     "    },\n"
718     "    \"textfieldFontSize3\":\n"
719     "    {\n"
720     "      \"pointSize\":14\n"
721     "    },\n"
722     "    \"textfieldFontSize4\":\n"
723     "    {\n"
724     "      \"pointSize\":16\n"
725     "    }\n"
726     "  }\n"
727     "}\n";
728
729   Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
730
731   ToolkitTestApplication application;
732
733   std::string fieldStr("Field");
734   Toolkit::TextField field = Toolkit::TextField::New();
735   field.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
736   Stage::GetCurrent().Add( field );
737
738   Toolkit::TextField field2 = Toolkit::TextField::New();
739   Stage::GetCurrent().Add( field2 );
740   field2.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
741
742   StyleChangedSignalChecker styleChangedSignalHandler;
743   StyleMonitor styleMonitor = StyleMonitor::Get();
744   StyleManager styleManager = StyleManager::Get();
745
746   field.SetProperty(TextField::Property::POINT_SIZE, 10.0f);
747
748   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
749
750   Test::StyleMonitor::SetDefaultFontSize(2);
751   styleMonitor.StyleChangeSignal().Emit( styleMonitor,  StyleChange::DEFAULT_FONT_SIZE_CHANGE);
752
753   tet_infoline("Test that the StyleChanged signal is received only once");
754   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
755
756   tet_infoline("Test that the field's font size has been altered\n");
757   Property::Value pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
758   float pointSize;
759   pointSizeValue.Get( pointSize );
760
761   DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
762
763   styleChangedSignalHandler.signalCount = 0;
764
765   Test::StyleMonitor::SetDefaultFontSize(4);
766   styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
767
768   tet_infoline("Test that the StyleChanged signal is received only once");
769   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
770
771   // Check that the field's font style has been altered
772   pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
773   pointSizeValue.Get( pointSize );
774
775   DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
776
777
778   END_TEST;
779 }
780
781 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextEditor(void)
782 {
783   tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
784
785   const char* defaultTheme =
786     "{\n"
787     "  \"styles\":\n"
788     "  {\n"
789     "    \"texteditorFontSize0\":\n"
790     "    {\n"
791     "      \"pointSize\":10\n"
792     "    },\n"
793     "    \"texteditorFontSize1\":\n"
794     "    {\n"
795     "      \"pointSize\":12\n"
796     "    },\n"
797     "    \"texteditorFontSize2\":\n"
798     "    {\n"
799     "      \"pointSize\":14\n"
800     "    },\n"
801     "    \"texteditorFontSize3\":\n"
802     "    {\n"
803     "      \"pointSize\":18\n"
804     "    },\n"
805     "    \"texteditorFontSize4\":\n"
806     "    {\n"
807     "      \"pointSize\":25\n"
808     "    }\n"
809     "  }\n"
810     "}\n";
811
812   Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
813
814   ToolkitTestApplication application;
815
816   std::string editorStr("Editor");
817   Toolkit::TextEditor editor = Toolkit::TextEditor::New();
818   editor.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
819   Stage::GetCurrent().Add( editor );
820
821   Toolkit::TextEditor editor2 = Toolkit::TextEditor::New();
822   Stage::GetCurrent().Add( editor2 );
823   editor2.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
824
825   StyleChangedSignalChecker styleChangedSignalHandler;
826   StyleMonitor styleMonitor = StyleMonitor::Get();
827   StyleManager styleManager = StyleManager::Get();
828
829   editor.SetProperty(TextEditor::Property::POINT_SIZE, 10.0f);
830
831   styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
832
833   Test::StyleMonitor::SetDefaultFontSize(2);
834   styleMonitor.StyleChangeSignal().Emit( styleMonitor,  StyleChange::DEFAULT_FONT_SIZE_CHANGE);
835
836   tet_infoline("Test that the StyleChanged signal is received only once");
837   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
838
839   tet_infoline("Test that the editor's font size has been altered\n");
840   Property::Value pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
841   float pointSize;
842   pointSizeValue.Get( pointSize );
843
844   DALI_TEST_EQUALS( pointSize, 14.0f, 0.001, TEST_LOCATION );
845
846   styleChangedSignalHandler.signalCount = 0;
847
848   Test::StyleMonitor::SetDefaultFontSize(4);
849   styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
850
851   tet_infoline("Test that the StyleChanged signal is received only once");
852   DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
853
854   // Check that the editor's font style has been altered
855   pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
856   pointSizeValue.Get( pointSize );
857
858   DALI_TEST_EQUALS( pointSize, 25.0f, 0.001, TEST_LOCATION );
859
860
861   END_TEST;
862 }