2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dali/public-api/dali-core.h>
19 #include <dali-test-suite-utils.h>
26 /*******************************************************************************
30 ******************************************************************************/
33 struct MyTestCustomActor : public CustomActorImpl
35 typedef Signal< void ()> SignalType;
36 typedef Signal< void (float)> SignalTypeFloat;
38 MyTestCustomActor() : CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS ) )
41 virtual ~MyTestCustomActor()
48 // From CustomActorImpl
49 virtual void OnStageConnection( int depth )
52 virtual void OnStageDisconnection()
55 virtual void OnChildAdd(Actor& child)
58 virtual void OnChildRemove(Actor& child)
61 virtual void OnSizeSet(const Vector3& targetSize)
64 virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize)
67 virtual bool OnTouchEvent(const TouchEvent& event)
71 virtual bool OnHoverEvent(const HoverEvent& event)
75 virtual bool OnWheelEvent(const WheelEvent& event)
79 virtual bool OnKeyEvent(const KeyEvent& event)
83 virtual void OnKeyInputFocusGained()
86 virtual void OnKeyInputFocusLost()
89 virtual Vector3 GetNaturalSize()
91 return Vector3( 0.0f, 0.0f, 0.0f );
94 virtual float GetHeightForWidth( float width )
99 virtual float GetWidthForHeight( float height )
104 virtual void OnRelayout( const Vector2& size, RelayoutContainer& container )
108 virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
112 virtual void OnCalculateRelayoutSize( Dimension::Type dimension )
116 virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
121 virtual void OnLayoutNegotiated( float size, Dimension::Type dimension )
125 virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS )
137 class MyTestCustomActor : public CustomActor
141 typedef Signal< void ()> SignalType;
142 typedef Signal< void (float)> SignalTypeFloat;
148 static MyTestCustomActor New()
150 Impl::MyTestCustomActor* p = new Impl::MyTestCustomActor;
151 return MyTestCustomActor( *p ); // takes ownership
154 virtual ~MyTestCustomActor()
158 static MyTestCustomActor DownCast( BaseHandle handle )
160 MyTestCustomActor result;
162 CustomActor custom = Dali::CustomActor::DownCast( handle );
165 CustomActorImpl& customImpl = custom.GetImplementation();
167 Impl::MyTestCustomActor* impl = dynamic_cast<Impl::MyTestCustomActor*>(&customImpl);
171 result = MyTestCustomActor(customImpl.GetOwner());
178 SignalType& GetCustomSignal()
180 Dali::RefObject& obj = GetImplementation();
181 return static_cast<Impl::MyTestCustomActor&>( obj ).mSignal;
184 MyTestCustomActor(Internal::CustomActor* internal)
185 : CustomActor(internal)
189 MyTestCustomActor( Impl::MyTestCustomActor& impl )
190 : CustomActor( impl )
197 int UtcDaliWeakHandleBaseConstructorVoid(void)
199 TestApplication application;
200 tet_infoline("Testing Dali::WeakHandleBase::WeakHandleBase()");
202 WeakHandleBase object;
204 DALI_TEST_CHECK(!object.GetBaseHandle());
209 int UtcDaliWeakHandleBaseConstructorWithBaseHandle(void)
211 TestApplication application;
212 tet_infoline("Testing Dali::WeakHandleBase::WeakHandleBase(BaseHandle)");
214 BaseHandle emptyHandle;
215 WeakHandleBase emptyObject(emptyHandle);
216 DALI_TEST_CHECK(!emptyObject.GetBaseHandle());
218 Actor actor = Actor::New();
219 WeakHandleBase object(actor);
220 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
222 Animation animation = Animation::New( 1.0f );
223 WeakHandleBase animationObject( animation );
224 DALI_TEST_CHECK( animationObject.GetBaseHandle() == animation );
229 int UtcDaliWeakHandleBaseCopyConstructor(void)
231 TestApplication application;
232 tet_infoline("Testing Dali::WeakHandleBase::WeakHandleBase(const WeakHandleBase&)");
234 Actor actor = Actor::New();
235 DALI_TEST_EQUALS(1, actor.GetBaseObject().ReferenceCount(), TEST_LOCATION); // reference count of the actor is not increased
237 WeakHandleBase object(actor);
238 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
239 DALI_TEST_EQUALS(1, actor.GetBaseObject().ReferenceCount(), TEST_LOCATION); // reference count of the actor is not increased
241 WeakHandleBase copy(object);
242 DALI_TEST_CHECK(copy.GetBaseHandle() == actor);
243 DALI_TEST_EQUALS(1, actor.GetBaseObject().ReferenceCount(), TEST_LOCATION); // reference count of the actor is not increased
248 int UtcDaliWeakHandleBaseAssignmentOperator(void)
250 TestApplication application;
251 tet_infoline("Testing Dali::WeakHandleBase::operator=");
253 Actor actor = Actor::New();
254 DALI_TEST_EQUALS(1, actor.GetBaseObject().ReferenceCount(), TEST_LOCATION); // reference count of the actor is not increased
256 WeakHandleBase object(actor);
257 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
258 DALI_TEST_EQUALS(1, actor.GetBaseObject().ReferenceCount(), TEST_LOCATION); // reference count of the actor is not increased
260 WeakHandleBase copy = object;
261 DALI_TEST_CHECK(copy.GetBaseHandle() == actor);
262 DALI_TEST_EQUALS(1, actor.GetBaseObject().ReferenceCount(), TEST_LOCATION); // reference count of the actor is not increased
267 int UtcDaliWeakHandleBaseEqualityOperatorP(void)
269 TestApplication application;
270 tet_infoline("Positive Test Dali::WeakHandleBase::operator==");
272 WeakHandleBase object;
273 WeakHandleBase theSameObject;
274 DALI_TEST_CHECK(object == theSameObject);
276 Actor actor = Actor::New();
278 object = WeakHandleBase(actor);
279 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
281 theSameObject = object;
282 DALI_TEST_CHECK(theSameObject.GetBaseHandle() == actor);
283 DALI_TEST_CHECK(object == theSameObject);
288 int UtcDaliWeakHandleBaseEqualityOperatorN(void)
290 TestApplication application;
291 tet_infoline("Negative Test Dali::WeakHandleBase::operator==");
293 Actor actor = Actor::New();
295 WeakHandleBase object(actor);
296 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
298 Actor differentActor = Actor::New();
299 WeakHandleBase aDifferentWeakHandleBase(differentActor);
301 DALI_TEST_CHECK(!(object == aDifferentWeakHandleBase));
306 int UtcDaliWeakHandleBaseInequalityOperatorP(void)
308 TestApplication application;
309 tet_infoline("Positive Test Dali::WeakHandleBase::operator!=");
311 Actor actor = Actor::New();
313 WeakHandleBase object(actor);
314 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
316 Actor differentActor = Actor::New();
317 WeakHandleBase aDifferentWeakHandleBase(differentActor);
319 DALI_TEST_CHECK(object != aDifferentWeakHandleBase);
323 int UtcDaliWeakHandleBaseInequalityOperatorN(void)
325 TestApplication application;
326 tet_infoline("Negative Test Dali::WeakHandleBase::operator!=");
328 Actor actor = Actor::New();
330 WeakHandleBase object(actor);
331 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
333 WeakHandleBase theSameWeakHandleBase = object;
335 DALI_TEST_CHECK(!(object != theSameWeakHandleBase));
339 int UtcDaliWeakHandleBaseGetBaseHandle(void)
341 TestApplication application;
342 tet_infoline("Testing Dali::WeakHandleBase::GetBaseHandle()");
345 WeakHandleBase emptyObject(emptyHandle);
346 DALI_TEST_CHECK(!emptyObject.GetBaseHandle());
348 Actor actor = Actor::New();
349 WeakHandleBase object(actor);
350 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
352 WeakHandleBase theSameObject = WeakHandleBase(actor);
353 DALI_TEST_CHECK(object.GetBaseHandle() == theSameObject.GetBaseHandle());
355 Actor differentActor = Actor::New();
356 WeakHandleBase aDifferentWeakHandleBase(differentActor);
357 DALI_TEST_CHECK(object.GetBaseHandle() != aDifferentWeakHandleBase.GetBaseHandle());
359 Animation animation = Animation::New( 1.0f );
360 WeakHandleBase animationObject( animation );
361 DALI_TEST_CHECK( animationObject.GetBaseHandle() == animation );
363 WeakHandleBase theSameAnimationObject = WeakHandleBase( animation );
364 DALI_TEST_CHECK( animationObject.GetBaseHandle() == theSameAnimationObject.GetBaseHandle() );
366 Animation differentAnimation = Animation::New( 1.0f );
367 WeakHandleBase aDifferentAnimationObject( differentAnimation );
368 DALI_TEST_CHECK( animationObject.GetBaseHandle() != aDifferentAnimationObject.GetBaseHandle() );
373 int UtcDaliWeakHandleBaseReset(void)
375 TestApplication application;
376 tet_infoline( "Testing Daku::WeakHandleBase::Reset()" );
378 Actor actor = Actor::New();
379 WeakHandleBase object(actor);
380 DALI_TEST_CHECK(object.GetBaseHandle() == actor);
384 DALI_TEST_CHECK(object == WeakHandleBase());
385 DALI_TEST_CHECK(object.GetBaseHandle() == Handle());
390 int UtcDaliWeakHandleGetHandle(void)
392 TestApplication application;
393 tet_infoline("Testing Dali::WeakHandle::GetHandle()");
395 Actor actor = Actor::New();
396 WeakHandle<Actor> object(actor);
397 DALI_TEST_CHECK(object.GetHandle() == actor);
399 MyTestCustomActor customActor = MyTestCustomActor::New();
400 WeakHandle<MyTestCustomActor> customObject(customActor);
401 DALI_TEST_CHECK(customObject.GetHandle() == customActor);
403 DALI_TEST_CHECK(object.GetHandle() != customObject.GetHandle());
405 Animation animation = Animation::New( 1.0f );
406 WeakHandle<Animation> animationObject( animation );
407 DALI_TEST_CHECK( animationObject.GetHandle() == animation );
410 DALI_TEST_CHECK( animationObject.GetHandle() == Animation() );