[dali_1.3.27] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Visuals-internal.cpp
1 /*
2  * Copyright (c) 2018 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
18 #include <iostream>
19
20 #include <stdlib.h>
21
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <toolkit-text-utils.h>
25 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
26 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
27 #include <dali-toolkit/internal/visuals/color/color-visual.h>
28 #include <dummy-visual.h>
29 #include <../dali-toolkit/dali-toolkit-test-utils/dummy-control.h>
30
31 using namespace Dali;
32 using namespace Toolkit;
33
34 int UtcDaliVisualAction(void)
35 {
36   ToolkitTestApplication application;
37   tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" );
38   Vector2 controlSize( 20.f, 30.f );
39
40   //Created DummyVisual
41   Property::Map settings;
42   Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
43
44   DummyControl dummyControl = DummyControl::New( true );
45   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
46
47   tet_infoline( "Register visual and stage control" );
48
49   Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( dummyVisualPtr.Get() );
50   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
51   dummyControl.SetSize(200.f, 200.f);
52   Stage::GetCurrent().Add( dummyControl );
53
54   application.SendNotification();
55   application.Render();
56
57   tet_infoline( "Check action counter is 0 before DoAction" );
58   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
59
60   tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" );
61
62   Property::Map attributes;
63   Toolkit::Internal::Visual::Base& internalVisualBase =  GetImplementation( visualBaseHandle );
64   internalVisualBase.DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
65   application.SendNotification();
66   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 1, TEST_LOCATION );
67
68   END_TEST;
69 }
70
71 int UtcDaliVisualActionNotImplemented(void)
72 {
73   ToolkitTestApplication application;
74   tet_infoline( "Register an ImageVisual and and perform an Action on a Visual which does not support any Actions" );
75   Vector2 controlSize( 20.f, 30.f );
76
77   //Created DummyVisual
78   Property::Map settings;
79   Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
80
81   DummyControl dummyControl = DummyControl::New( true );
82   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
83
84   tet_infoline( "Register visual and stage control" );
85
86   VisualFactory factory = VisualFactory::Get();
87   Property::Map propertyMap;
88   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
89   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
90   Visual::Base visual = factory.CreateVisual( propertyMap );
91
92   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
93   dummyControl.SetSize(200.f, 200.f);
94   Stage::GetCurrent().Add( dummyControl );
95
96   application.SendNotification();
97   application.Render();
98
99   tet_infoline( "Check action counter is 0 before DoAction" );
100   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
101
102   tet_infoline( "Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter" );
103   Property::Map attributes;
104   GetImplementation( visual ).DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
105   application.SendNotification();
106   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
107
108   END_TEST;
109 }
110
111 int UtcDaliVisualSetProperties(void)
112 {
113   ToolkitTestApplication application;
114   tet_infoline( "Register a visual and SetProperties" );
115
116   Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false);
117
118   //Created ColorVisual
119   Property::Map propertyMap1;
120   propertyMap1.Insert(Visual::Property::TYPE,  Visual::COLOR);
121   propertyMap1.Insert(ColorVisual::Property::MIX_COLOR,  Color::RED);
122   Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 );
123
124   DummyControl dummyControl = DummyControl::New( true );
125   Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
126
127   Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() );
128   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
129   dummyControl.SetSize( 200.f, 200.f );
130   Stage::GetCurrent().Add( dummyControl );
131
132   application.SendNotification();
133   application.Render();
134
135   Property::Map propertyMap;
136   propertyMap.Insert( Visual::Property::MIX_COLOR,  Color::BLUE );
137
138   colorVisualPtr->SetProperties( propertyMap );
139   application.SendNotification();
140   application.Render();
141
142   Property::Map resultMap;
143   visualBaseHandle.CreatePropertyMap( resultMap );
144
145   Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR,  Property::VECTOR4 );
146   DALI_TEST_CHECK( colorValue );
147   DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE );
148
149   delete factoryCache;
150
151   END_TEST;
152 }