int utcDaliTextFieldEvent03(void) { ToolkitTestApplication application; tet_infoline(" utcDaliTextFieldEvent03"); // Checks if the highlight actor is created. TextField field = TextField::New(); DALI_TEST_CHECK( field ); Stage::GetCurrent().Add( field ); field.SetProperty( TextField::Property::TEXT, "This is a long text for the size of the text-field." ); field.SetProperty( TextField::Property::POINT_SIZE, 10.f ); field.SetSize( 30.f, 50.f ); field.SetParentOrigin( ParentOrigin::TOP_LEFT ); field.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); // Render and notify application.SendNotification(); application.Render(); // Tap first to get the focus. application.ProcessEvent( GenerateTap( Gesture::Possible, 1u, 1u, Vector2( 3.f, 25.0f ) ) ); application.ProcessEvent( GenerateTap( Gesture::Started, 1u, 1u, Vector2( 3.f, 25.0f ) ) ); // Render and notify application.SendNotification(); application.Render(); // Double tap to select a word. application.ProcessEvent( GenerateTap( Gesture::Possible, 2u, 1u, Vector2( 3.f, 25.0f ) ) ); application.ProcessEvent( GenerateTap( Gesture::Started, 2u, 1u, Vector2( 3.f, 25.0f ) ) ); // Render and notify application.SendNotification(); application.Render(); // The offscreen root actor should have three actors: the camera, a renderer and the highlight actor. Actor offscreenRoot = field.GetChildAt( 1u ); DALI_TEST_CHECK( offscreenRoot.IsLayer() ); CameraActor camera = CameraActor::DownCast( offscreenRoot.GetChildAt( 0u ) ); DALI_TEST_CHECK( camera ); Renderer renderer = offscreenRoot.GetChildAt( 1u ).GetRendererAt( 0u ); DALI_TEST_CHECK( renderer ); Renderer highlight = offscreenRoot.GetChildAt( 2u ).GetRendererAt( 0u ); DALI_TEST_CHECK( highlight ); END_TEST; }
int utcDaliTextFieldEvent02(void) { ToolkitTestApplication application; tet_infoline(" utcDaliTextFieldEvent02"); // Checks if the right number of actors are created. TextField field = TextField::New(); field.SetProperty( TextField::Property::POINT_SIZE, 10.f ); DALI_TEST_CHECK( field ); Stage::GetCurrent().Add( field ); field.SetSize( 300.f, 50.f ); field.SetParentOrigin( ParentOrigin::TOP_LEFT ); field.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // Avoid a crash when core load gl resources. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); // Render and notify application.SendNotification(); application.Render(); // Check there are the expected number of children ( active layer, offscreen root actor, and the offscreen image actor DALI_TEST_EQUALS( field.GetChildCount(), 3u, TEST_LOCATION ); Actor layer = field.GetChildAt( 0u ); DALI_TEST_CHECK( layer.IsLayer() ); Actor offscreenRoot = field.GetChildAt( 1u ); DALI_TEST_CHECK( offscreenRoot.IsLayer() ); DALI_TEST_EQUALS( offscreenRoot.GetChildCount(), 1u, TEST_LOCATION ); // The camera actor. Actor offscreenImage = field.GetChildAt( 2u ); ImageActor imageActor = ImageActor::DownCast( offscreenImage ); DALI_TEST_CHECK( imageActor ); // Create a tap event to touch the text field. application.ProcessEvent( GenerateTap( Gesture::Possible, 1u, 1u, Vector2( 150.0f, 25.0f ) ) ); application.ProcessEvent( GenerateTap( Gesture::Started, 1u, 1u, Vector2( 150.0f, 25.0f ) ) ); // Render and notify application.SendNotification(); application.Render(); DALI_TEST_EQUALS( layer.GetChildCount(), 1u, TEST_LOCATION ); // The cursor. DALI_TEST_EQUALS( offscreenRoot.GetChildCount(), 1u, TEST_LOCATION ); // The camera actor. // Now the text field has the focus, so it can handle the key events. application.ProcessEvent( GenerateKey( "a", "a", 0, 0, 0, Integration::KeyEvent::Down ) ); application.ProcessEvent( GenerateKey( "a", "a", 0, 0, 0, Integration::KeyEvent::Down ) ); // Render and notify application.SendNotification(); application.Render(); // Checks the cursor and the renderer have been created. DALI_TEST_EQUALS( layer.GetChildCount(), 1u, TEST_LOCATION ); // The cursor. DALI_TEST_EQUALS( offscreenRoot.GetChildCount(), 2u, TEST_LOCATION ); // The camera actor and the renderer ImageActor cursor = ImageActor::DownCast( layer.GetChildAt( 0u ) ); DALI_TEST_CHECK( cursor ); CameraActor camera = CameraActor::DownCast( offscreenRoot.GetChildAt( 0u ) ); DALI_TEST_CHECK( camera ); Renderer renderer = offscreenRoot.GetChildAt( 1u ).GetRendererAt( 0u ); DALI_TEST_CHECK( renderer ); // Move the cursor and check the position changes. Vector3 position1 = cursor.GetCurrentPosition(); application.ProcessEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Integration::KeyEvent::Down ) ); application.ProcessEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Integration::KeyEvent::Down ) ); // Render and notify application.SendNotification(); application.Render(); Vector3 position2 = cursor.GetCurrentPosition(); DALI_TEST_CHECK( position2.x < position1.x ); application.ProcessEvent( GenerateKey( "", "", DALI_KEY_CURSOR_RIGHT, 0, 0, Integration::KeyEvent::Down ) ); application.ProcessEvent( GenerateKey( "", "", DALI_KEY_CURSOR_RIGHT, 0, 0, Integration::KeyEvent::Down ) ); // Render and notify application.SendNotification(); application.Render(); Vector3 position3 = cursor.GetCurrentPosition(); DALI_TEST_EQUALS( position1, position3, TEST_LOCATION ); // Should be in the same position1. // Send some taps and check the cursor positions. // Try to tap at the beginning. application.ProcessEvent( GenerateTap( Gesture::Possible, 1u, 1u, Vector2( 1.f, 25.0f ) ) ); application.ProcessEvent( GenerateTap( Gesture::Started, 1u, 1u, Vector2( 1.f, 25.0f ) ) ); // Render and notify application.SendNotification(); application.Render(); // Cursor position should be the same than position1. Vector3 position4 = cursor.GetCurrentPosition(); DALI_TEST_EQUALS( position2, position4, TEST_LOCATION ); // Should be in the same position2. // Tap away from the start position. application.ProcessEvent( GenerateTap( Gesture::Possible, 1u, 1u, Vector2( 16.f, 25.0f ) ) ); application.ProcessEvent( GenerateTap( Gesture::Started, 1u, 1u, Vector2( 16.0f, 25.0f ) ) ); // Render and notify application.SendNotification(); application.Render(); Vector3 position5 = cursor.GetCurrentPosition(); DALI_TEST_CHECK( position5.x > position4.x ); // Remove all the text. application.ProcessEvent( GenerateKey( "", "", DALI_KEY_BACKSPACE, 0, 0, Integration::KeyEvent::Down ) ); application.ProcessEvent( GenerateKey( "", "", DALI_KEY_BACKSPACE, 0, 0, Integration::KeyEvent::Down ) ); field.SetProperty( TextField::Property::TEXT, "" ); // Render and notify application.SendNotification(); application.Render(); // Cursor position should be the same than position2. Vector3 position6 = cursor.GetCurrentPosition(); DALI_TEST_EQUALS( position2, position6, TEST_LOCATION );// Should be in the same position2. // Should not be a renderer. DALI_TEST_EQUALS( offscreenRoot.GetChildCount(), 1u, TEST_LOCATION ); // The camera actor only. END_TEST; }