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.
21 #include <dali/integration-api/scene.h>
22 #include <dali/integration-api/events/key-event-integ.h>
23 #include <dali/public-api/events/key-event.h>
24 #include <dali/integration-api/events/touch-event-integ.h>
25 #include <dali/integration-api/events/wheel-event-integ.h>
27 #include <dali-test-suite-utils.h>
29 // Internal headers are allowed here
34 const std::string DEFAULT_DEVICE_NAME("hwKeyboard");
36 // Functor for EventProcessingFinished signal
37 struct EventProcessingFinishedFunctor
40 * @param[in] eventProcessingFinished reference to a boolean variable used to check if signal has been called.
42 EventProcessingFinishedFunctor( bool& eventProcessingFinished )
43 : mEventProcessingFinished( eventProcessingFinished )
48 mEventProcessingFinished = true;
51 bool& mEventProcessingFinished;
54 // Stores data that is populated in the key-event callback and will be read by the TET cases
55 struct KeyEventSignalData
58 : functorCalled(false)
63 functorCalled = false;
65 receivedKeyEvent.keyModifier = 0;
66 receivedKeyEvent.keyPressedName.clear();
67 receivedKeyEvent.keyPressed.clear();
71 KeyEvent receivedKeyEvent;
74 // Functor that sets the data when called
75 struct KeyEventReceivedFunctor
77 KeyEventReceivedFunctor( KeyEventSignalData& data ) : signalData( data ) { }
79 bool operator()( const KeyEvent& keyEvent )
81 signalData.functorCalled = true;
82 signalData.receivedKeyEvent = keyEvent;
87 KeyEventSignalData& signalData;
90 // Stores data that is populated in the touched signal callback and will be read by the TET cases
91 struct TouchedSignalData
94 : functorCalled(false)
99 functorCalled = false;
101 receivedTouchEvent.points.clear();
102 receivedTouchEvent.time = 0;
104 receivedTouchData.Reset();
108 TouchEvent receivedTouchEvent;
109 TouchData receivedTouchData;
112 // Functor that sets the data when touched signal is received
113 struct TouchedFunctor
115 TouchedFunctor( TouchedSignalData& data ) : signalData( data ) { }
117 void operator()( const TouchEvent& touch )
119 signalData.functorCalled = true;
120 signalData.receivedTouchEvent = touch;
123 TouchedSignalData& signalData;
126 // Functor that sets the data when touched signal is received
129 TouchFunctor( TouchedSignalData& data ) : signalData( data ) { }
131 void operator()( const TouchData& touch )
133 signalData.functorCalled = true;
134 signalData.receivedTouchData = touch;
139 signalData.functorCalled = true;
142 TouchedSignalData& signalData;
145 // Stores data that is populated in the wheel-event callback and will be read by the TET cases
146 struct WheelEventSignalData
148 WheelEventSignalData()
149 : functorCalled(false)
154 functorCalled = false;
158 WheelEvent receivedWheelEvent;
161 // Functor that sets the data when wheel-event signal is received
162 struct WheelEventReceivedFunctor
164 WheelEventReceivedFunctor( WheelEventSignalData& data ) : signalData( data ) { }
166 bool operator()( const WheelEvent& wheelEvent )
168 signalData.functorCalled = true;
169 signalData.receivedWheelEvent = wheelEvent;
174 WheelEventSignalData& signalData;
177 void GenerateTouch( TestApplication& application, PointState::Type state, const Vector2& screenPosition )
179 Integration::TouchEvent touchEvent;
180 Integration::Point point;
181 point.SetState( state );
182 point.SetScreenPosition( screenPosition );
183 touchEvent.points.push_back( point );
184 application.ProcessEvent( touchEvent );
187 bool DummyTouchCallback( Actor actor, const TouchEvent& touch )
192 } // unnamed namespace
194 int UtcDaliSceneAdd(void)
196 TestApplication application;
197 tet_infoline("Testing Dali::Integration::Scene::Add");
199 Dali::Integration::Scene scene = application.GetScene();
201 Actor actor = Actor::New();
202 DALI_TEST_CHECK( !actor.OnStage() );
205 DALI_TEST_CHECK( actor.OnStage() );
210 int UtcDaliSceneRemove(void)
212 TestApplication application;
213 tet_infoline("Testing Dali::Integration::Scene::Remove");
215 Dali::Integration::Scene scene = application.GetScene();
217 Actor actor = Actor::New();
218 DALI_TEST_CHECK( !actor.OnStage() );
221 DALI_TEST_CHECK( actor.OnStage() );
224 DALI_TEST_CHECK( !actor.OnStage() );
229 int UtcDaliSceneGetSize(void)
231 TestApplication application;
232 tet_infoline("Testing Dali::Integration::Scene::GetSize");
234 Dali::Integration::Scene scene = application.GetScene();
235 Size size = scene.GetSize();
236 DALI_TEST_EQUALS( TestApplication::DEFAULT_SURFACE_WIDTH, size.width, TEST_LOCATION );
237 DALI_TEST_EQUALS( TestApplication::DEFAULT_SURFACE_HEIGHT, size.height, TEST_LOCATION );
242 int UtcDaliSceneGetDpi(void)
244 TestApplication application; // Initializes core DPI to default values
246 // Test that setting core DPI explicitly also sets up the scene's DPI.
247 Dali::Integration::Scene scene = application.GetScene();
248 scene.SetDpi( Vector2(200.0f, 180.0f) );
249 Vector2 dpi = scene.GetDpi();
250 DALI_TEST_EQUALS( dpi.x, 200.0f, TEST_LOCATION );
251 DALI_TEST_EQUALS( dpi.y, 180.0f, TEST_LOCATION );
255 int UtcDaliSceneGetRenderTaskList(void)
257 TestApplication application;
258 tet_infoline("Testing Dali::Integration::Scene::GetRenderTaskList");
260 Dali::Integration::Scene scene = application.GetScene();
262 // Check we get a valid instance.
263 const RenderTaskList& tasks = scene.GetRenderTaskList();
265 // There should be 1 task by default.
266 DALI_TEST_EQUALS( tasks.GetTaskCount(), 1u, TEST_LOCATION );
268 // RenderTaskList has it's own UTC tests.
269 // But we can confirm that GetRenderTaskList in Stage retrieves the same RenderTaskList each time.
270 RenderTask newTask = scene.GetRenderTaskList().CreateTask();
272 DALI_TEST_EQUALS( scene.GetRenderTaskList().GetTask( 1 ), newTask, TEST_LOCATION );
277 int UtcDaliSceneGetRootLayer(void)
279 TestApplication application;
280 tet_infoline("Testing Dali::Integration::Scene::GetRootLayer");
282 Dali::Integration::Scene scene = application.GetScene();
283 Layer layer = scene.GetLayer( 0 );
284 DALI_TEST_CHECK( layer );
286 // Check that GetRootLayer() correctly retreived layer 0.
287 DALI_TEST_CHECK( scene.GetRootLayer() == layer );
292 int UtcDaliSceneGetLayerCount(void)
294 TestApplication application;
295 tet_infoline("Testing Dali::Integration::Scene::GetLayerCount");
297 Dali::Integration::Scene scene = application.GetScene();
298 // Initially we have a default layer
299 DALI_TEST_EQUALS( scene.GetLayerCount(), 1u, TEST_LOCATION );
301 Layer layer = Layer::New();
304 DALI_TEST_EQUALS( scene.GetLayerCount(), 2u, TEST_LOCATION );
308 int UtcDaliSceneGetLayer(void)
310 TestApplication application;
311 tet_infoline("Testing Dali::Integration::Scene::GetLayer");
313 Dali::Integration::Scene scene = application.GetScene();
315 Layer rootLayer = scene.GetLayer( 0 );
316 DALI_TEST_CHECK( rootLayer );
318 Layer layer = Layer::New();
321 Layer sameLayer = scene.GetLayer( 1 );
322 DALI_TEST_CHECK( layer == sameLayer );
327 int UtcDaliSceneGet(void)
329 TestApplication application;
330 tet_infoline("Testing Dali::Integration::Scene::Get");
332 Dali::Integration::Scene scene = application.GetScene();
334 Actor actor = Actor::New();
335 DALI_TEST_CHECK( Dali::Integration::Scene() == Dali::Integration::Scene::Get( actor ) );
339 DALI_TEST_CHECK( scene == Dali::Integration::Scene::Get( actor ) );
344 int UtcDaliSceneDiscard(void)
346 TestApplication application;
347 tet_infoline("Testing Dali::Scene::Discard");
349 // Create a new Scene
350 Dali::Integration::Scene scene = Dali::Integration::Scene::New( Vector2( 480.0f, 800.0f ) );
351 DALI_TEST_CHECK( scene );
353 // One reference of scene kept here and the other one kept in the Core
354 DALI_TEST_CHECK( scene.GetBaseObject().ReferenceCount() == 2 );
356 // Render and notify.
357 application.SendNotification();
358 application.Render(0);
360 // Keep the reference of the root layer handle so it will still be alive after the scene is deleted
361 Layer rootLayer = scene.GetRootLayer();
362 DALI_TEST_CHECK( rootLayer );
363 DALI_TEST_CHECK( rootLayer.GetBaseObject().ReferenceCount() == 2 );
365 // Request to discard the scene from the Core
367 DALI_TEST_CHECK( scene.GetBaseObject().ReferenceCount() == 1 );
369 // Reset the scene handle
372 // Render and notify.
373 application.SendNotification();
374 application.Render(0);
376 // At this point, the scene should have been automatically deleted
377 // To prove this, the ref count of the root layer handle should be decremented to 1
378 DALI_TEST_CHECK( rootLayer.GetBaseObject().ReferenceCount() == 1 );
380 // Delete the root layer handle
383 // Render and notify.
384 application.SendNotification();
385 application.Render(0);
390 int UtcDaliSceneEventProcessingFinishedP(void)
392 TestApplication application;
393 Dali::Integration::Scene scene = application.GetScene();
395 bool eventProcessingFinished = false;
396 EventProcessingFinishedFunctor functor( eventProcessingFinished );
397 scene.EventProcessingFinishedSignal().Connect( &application, functor );
399 Actor actor( Actor::New() );
402 application.SendNotification();
403 application.Render();
405 DALI_TEST_CHECK( eventProcessingFinished );
410 int UtcDaliSceneEventProcessingFinishedN(void)
412 TestApplication application;
413 Dali::Integration::Scene scene = application.GetScene();
415 bool eventProcessingFinished = false;
416 EventProcessingFinishedFunctor functor( eventProcessingFinished );
417 scene.EventProcessingFinishedSignal().Connect( &application, functor );
419 Actor actor( Actor::New() );
422 // Do not complete event processing and confirm the signal has not been emitted.
423 DALI_TEST_CHECK( !eventProcessingFinished );
428 int UtcDaliSceneSignalKeyEventP(void)
430 TestApplication application;
431 Dali::Integration::Scene scene = application.GetScene();
433 KeyEventSignalData data;
434 KeyEventReceivedFunctor functor( data );
435 scene.KeyEventSignal().Connect( &application, functor );
437 Integration::KeyEvent event( "i", "", "i", 0, 0, 0, Integration::KeyEvent::Down, "i", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE );
438 application.ProcessEvent( event );
440 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
441 DALI_TEST_CHECK( event.keyModifier == data.receivedKeyEvent.keyModifier );
442 DALI_TEST_CHECK( event.keyName == data.receivedKeyEvent.keyPressedName );
443 DALI_TEST_CHECK( event.keyString == data.receivedKeyEvent.keyPressed );
444 DALI_TEST_CHECK( event.state == static_cast<Integration::KeyEvent::State>( data.receivedKeyEvent.state ) );
448 Integration::KeyEvent event2( "i", "", "i", 0, 0, 0, Integration::KeyEvent::Up, "i", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE );
449 application.ProcessEvent( event2 );
451 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
452 DALI_TEST_CHECK( event2.keyModifier == data.receivedKeyEvent.keyModifier );
453 DALI_TEST_CHECK( event2.keyName == data.receivedKeyEvent.keyPressedName );
454 DALI_TEST_CHECK( event2.keyString == data.receivedKeyEvent.keyPressed );
455 DALI_TEST_CHECK( event2.state == static_cast<Integration::KeyEvent::State>( data.receivedKeyEvent.state ) );
459 Integration::KeyEvent event3( "a", "", "a", 0, 0, 0, Integration::KeyEvent::Down, "a", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE );
460 application.ProcessEvent( event3 );
462 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
463 DALI_TEST_CHECK( event3.keyModifier == data.receivedKeyEvent.keyModifier );
464 DALI_TEST_CHECK( event3.keyName == data.receivedKeyEvent.keyPressedName );
465 DALI_TEST_CHECK( event3.keyString == data.receivedKeyEvent.keyPressed );
466 DALI_TEST_CHECK( event3.state == static_cast<Integration::KeyEvent::State>( data.receivedKeyEvent.state ) );
470 Integration::KeyEvent event4( "a", "", "a", 0, 0, 0, Integration::KeyEvent::Up, "a", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE );
471 application.ProcessEvent( event4 );
473 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
474 DALI_TEST_CHECK( event4.keyModifier == data.receivedKeyEvent.keyModifier );
475 DALI_TEST_CHECK( event4.keyName == data.receivedKeyEvent.keyPressedName );
476 DALI_TEST_CHECK( event4.keyString == data.receivedKeyEvent.keyPressed );
477 DALI_TEST_CHECK( event4.state == static_cast<Integration::KeyEvent::State>( data.receivedKeyEvent.state ) );
481 int UtcDaliSceneSignalKeyEventN(void)
483 TestApplication application;
484 Dali::Integration::Scene scene = application.GetScene();
486 KeyEventSignalData data;
487 KeyEventReceivedFunctor functor( data );
488 scene.KeyEventSignal().Connect( &application, functor );
490 // Check that a non-pressed key events data is not modified.
491 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
496 int UtcDaliSceneTouchSignalP(void)
498 TestApplication application;
499 Dali::Integration::Scene scene = application.GetScene();
501 TouchedSignalData data;
502 TouchFunctor functor( data );
503 scene.TouchSignal().Connect( &application, functor );
505 // Render and notify.
506 application.SendNotification();
507 application.Render();
509 // Basic test: No actors, single touch (down then up).
511 GenerateTouch( application, PointState::DOWN, Vector2( 10.0f, 10.0f ) );
513 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
514 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
515 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0) );
518 GenerateTouch( application, PointState::UP, Vector2( 10.0f, 10.0f ) );
520 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
521 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
522 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0) );
526 // Add an actor to the scene.
527 Actor actor = Actor::New();
528 actor.SetSize( 100.0f, 100.0f );
529 actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
530 actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
531 actor.TouchedSignal().Connect( &DummyTouchCallback );
534 // Render and notify.
535 application.SendNotification();
536 application.Render();
538 // Actor on scene, single touch, down in actor, motion, then up outside actor.
540 GenerateTouch( application, PointState::DOWN, Vector2( 10.0f, 10.0f ) );
542 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
543 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
544 DALI_TEST_CHECK( data.receivedTouchData.GetHitActor(0) == actor );
547 GenerateTouch( application, PointState::MOTION, Vector2( 150.0f, 10.0f ) ); // Some motion
549 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
552 GenerateTouch( application, PointState::UP, Vector2( 150.0f, 10.0f ) ); // Some motion
554 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
555 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
556 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0) );
560 // Multiple touch. Should only receive a touch on first down and last up.
562 Integration::TouchEvent touchEvent;
563 Integration::Point point;
566 point.SetState( PointState::DOWN );
567 point.SetScreenPosition( Vector2( 10.0f, 10.0f ) );
568 touchEvent.points.push_back( point );
569 application.ProcessEvent( touchEvent );
570 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
571 DALI_TEST_EQUALS( data.receivedTouchData.GetPointCount(), 1u, TEST_LOCATION );
575 touchEvent.points[0].SetState( PointState::STATIONARY );
576 point.SetDeviceId( 1 );
577 point.SetScreenPosition( Vector2( 50.0f, 50.0f ) );
578 touchEvent.points.push_back( point );
579 application.ProcessEvent( touchEvent );
580 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
583 // Primary point is up
584 touchEvent.points[0].SetState( PointState::UP );
585 touchEvent.points[1].SetState( PointState::STATIONARY );
586 application.ProcessEvent( touchEvent );
587 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
590 // Remove 1st point now, 2nd point is now in motion
591 touchEvent.points.erase( touchEvent.points.begin() );
592 touchEvent.points[0].SetState( PointState::MOTION );
593 touchEvent.points[0].SetScreenPosition( Vector2( 150.0f, 50.0f ) );
594 application.ProcessEvent( touchEvent );
595 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
599 touchEvent.points[0].SetState( PointState::UP );
600 application.ProcessEvent( touchEvent );
601 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
602 DALI_TEST_EQUALS( data.receivedTouchData.GetPointCount(), 1u, TEST_LOCATION );
608 int UtcDaliSceneTouchSignalN(void)
610 TestApplication application;
611 Dali::Integration::Scene scene = application.GetScene();
613 TouchedSignalData data;
614 TouchFunctor functor( data );
615 scene.TouchSignal().Connect( &application, functor );
617 // Render and notify.
618 application.SendNotification();
619 application.Render();
621 // Confirm functor not called before there has been any touch event.
622 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
624 // No actors, single touch, down, motion then up.
626 GenerateTouch( application, PointState::DOWN, Vector2( 10.0f, 10.0f ) );
628 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
629 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
630 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0));
634 // Confirm there is no signal when the touchpoint is only moved.
635 GenerateTouch( application, PointState::MOTION, Vector2( 1200.0f, 10.0f ) ); // Some motion
637 DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
640 // Confirm a following up event generates a signal.
641 GenerateTouch( application, PointState::UP, Vector2( 1200.0f, 10.0f ) );
643 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
644 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
645 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0));
649 // Add an actor to the scene.
650 Actor actor = Actor::New();
651 actor.SetSize( 100.0f, 100.0f );
652 actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
653 actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
654 actor.TouchedSignal().Connect( &DummyTouchCallback );
657 // Render and notify.
658 application.SendNotification();
659 application.Render();
661 // Actor on scene. Interrupted before down and interrupted after down.
663 GenerateTouch( application, PointState::INTERRUPTED, Vector2( 10.0f, 10.0f ) );
665 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
666 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
667 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0) );
668 DALI_TEST_CHECK( data.receivedTouchData.GetState(0) == PointState::INTERRUPTED );
671 GenerateTouch( application, PointState::DOWN, Vector2( 10.0f, 10.0f ) );
673 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
674 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
675 DALI_TEST_CHECK( data.receivedTouchData.GetHitActor(0) == actor );
676 DALI_TEST_CHECK( data.receivedTouchData.GetState(0) == PointState::DOWN );
679 GenerateTouch( application, PointState::INTERRUPTED, Vector2( 10.0f, 10.0f ) );
681 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
682 DALI_TEST_CHECK( data.receivedTouchData.GetPointCount() != 0u );
683 DALI_TEST_CHECK( !data.receivedTouchData.GetHitActor(0) );
684 DALI_TEST_CHECK( data.receivedTouchData.GetState(0) == PointState::INTERRUPTED );
686 DALI_TEST_EQUALS( data.receivedTouchData.GetPointCount(), 1u, TEST_LOCATION );
688 // Check that getting info about a non-existent point returns an empty handle
689 Actor actor = data.receivedTouchData.GetHitActor( 1 );
690 DALI_TEST_CHECK( !actor );
698 int UtcDaliSceneSignalWheelEventP(void)
700 TestApplication application;
701 Dali::Integration::Scene scene = application.GetScene();
703 WheelEventSignalData data;
704 WheelEventReceivedFunctor functor( data );
705 scene.WheelEventSignal().Connect( &application, functor );
707 Integration::WheelEvent event( Integration::WheelEvent::CUSTOM_WHEEL, 0, 0u, Vector2( 0.0f, 0.0f ), 1, 1000u );
708 application.ProcessEvent( event );
710 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
711 DALI_TEST_CHECK( static_cast< WheelEvent::Type >(event.type) == data.receivedWheelEvent.type );
712 DALI_TEST_CHECK( event.direction == data.receivedWheelEvent.direction );
713 DALI_TEST_CHECK( event.modifiers == data.receivedWheelEvent.modifiers );
714 DALI_TEST_CHECK( event.point == data.receivedWheelEvent.point );
715 DALI_TEST_CHECK( event.z == data.receivedWheelEvent.z );
716 DALI_TEST_CHECK( event.timeStamp == data.receivedWheelEvent.timeStamp );
720 Integration::WheelEvent event2( Integration::WheelEvent::CUSTOM_WHEEL, 0, 0u, Vector2( 0.0f, 0.0f ), -1, 1000u );
721 application.ProcessEvent( event2 );
723 DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
724 DALI_TEST_CHECK( static_cast< WheelEvent::Type >(event2.type) == data.receivedWheelEvent.type );
725 DALI_TEST_CHECK( event2.direction == data.receivedWheelEvent.direction );
726 DALI_TEST_CHECK( event2.modifiers == data.receivedWheelEvent.modifiers );
727 DALI_TEST_CHECK( event2.point == data.receivedWheelEvent.point );
728 DALI_TEST_CHECK( event2.z == data.receivedWheelEvent.z );
729 DALI_TEST_CHECK( event2.timeStamp == data.receivedWheelEvent.timeStamp );