static void UtcDaliRippleCustomValuesEffect() { ToolkitTestApplication application; Toolkit::RippleEffect effect = Toolkit::RippleEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); effect.SetAmplitude( 0.5f ); effect.SetCenter( Vector2( 10.0f, 10.0f ) ); effect.SetTime( 2.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetAmplitudePropertyName().c_str(), 0.5f ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2( 10.0f, 10.0f ) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetTimePropertyName().c_str(), 2.0f ) ); }
int UtcDaliSpotCustomValuesEffect(void) { ToolkitTestApplication application; Toolkit::SpotEffect effect = Toolkit::SpotEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); effect.SetCenter( Vector2(480.0f, 800.0f) ); effect.SetRadius( 5.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); // Gets converted to opengl viewport coordinates DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2(480.0f, 800.0f) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetRadiusPropertyName().c_str(), 5.0f ) ); END_TEST; }
static void UtcDaliSwirlDefaultValuesEffect() { ToolkitTestApplication application; Toolkit::SwirlEffect effect = Toolkit::SwirlEffect::New(true); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); // Gets converted to opengl viewport coordinates DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetAnglePropertyName().c_str(), 0.0f ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2(0.5f, 0.5f) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetRadiusPropertyName().c_str(), 1.0f ) ); }
static void UtcDaliShearEffectCustomValues() { ToolkitTestApplication application; Toolkit::ShearEffect effect = Toolkit::ShearEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); const float angleXAxis(10.0f); const float angleYAxis(22.5f); const Vector2 centerValue(50.0f, 100.0f); effect.SetAngleXAxis( angleXAxis ); effect.SetAngleYAxis( angleYAxis ); effect.SetCenter( centerValue ); actor.SetShaderEffect(effect); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetAngleXAxisPropertyName().c_str(), angleXAxis ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetAngleYAxisPropertyName().c_str(), angleYAxis ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetCenterPropertyName().c_str(), ToScreenPosition(centerValue) ) ); }
// Positive Atlas Text Renderer test int utcDaliTextFieldAtlasRenderP(void) { ToolkitTestApplication application; tet_infoline(" UtcDaliToolkitTextFieldAtlasRenderP"); StyleManager styleManager = StyleManager::Get(); styleManager.RequestDefaultTheme(); TextField field = TextField::New(); DALI_TEST_CHECK( field ); field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); Stage::GetCurrent().Add( field ); try { // Render some text with the shared atlas backend field.SetProperty( TextField::Property::RENDERING_BACKEND, Text::RENDERING_SHARED_ATLAS ); application.SendNotification(); application.Render(); } catch( ... ) { tet_result(TET_FAIL); } END_TEST; }
int UtcDaliBubbleEmitterSetBubbleScale(void) { ToolkitTestApplication application; tet_infoline( " UtcDaliBubbleEmitterSetBubbleScale " ); Image shapeImage = CreateSolidColorImage( application, Color::GREEN, 5, 5 ); BubbleEmitter emitter = BubbleEmitter::New( Vector2(50.f,50.f),shapeImage, 150, Vector2( 5.f, 10.f )); DALI_TEST_CHECK(emitter); Actor root = emitter.GetRootActor(); Stage::GetCurrent().Add( root ); root.SetPosition( Vector3::ZERO ); root.SetParentOrigin( ParentOrigin::CENTER ); root.SetAnchorPoint( AnchorPoint::CENTER ); TestGlAbstraction& gl = application.GetGlAbstraction(); Wait(application); float scaleValue; DALI_TEST_CHECK( gl.GetUniformValue<float>( "uDynamicScale", scaleValue ) ); DALI_TEST_EQUALS( scaleValue, 1.f, TEST_LOCATION ); emitter.SetBubbleScale( 2.f ); Wait(application); DALI_TEST_CHECK( gl.GetUniformValue<float>( "uDynamicScale", scaleValue ) ); DALI_TEST_EQUALS( scaleValue, 2.f, TEST_LOCATION ); emitter.SetBubbleScale( 0.5f ); Wait(application); DALI_TEST_CHECK( gl.GetUniformValue<float>( "uDynamicScale", scaleValue ) ); DALI_TEST_EQUALS( scaleValue, 0.5f, TEST_LOCATION ); END_TEST; }
static void UtcDaliIrisEffectCustomValues() { ToolkitTestApplication application; Toolkit::IrisEffect effect = Toolkit::IrisEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); const float radiusValue(23.0f); const Vector2 centerValue(0.2f, 0.7f); const float blendFactorValue(10.0f); effect.SetRadius( radiusValue ); effect.SetCenter( centerValue ); effect.SetBlendFactor( blendFactorValue ); actor.SetShaderEffect(effect); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetRadiusPropertyName().c_str(), radiusValue ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetCenterPropertyName().c_str(), centerValue ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetBlendFactorPropertyName().c_str(), blendFactorValue ) ); }
int UtcDaliBubbleEmitterRestore(void) { ToolkitTestApplication application; tet_infoline( " UtcDaliBubbleEmitterRestore " ); Image shapeImage = CreateSolidColorImage( application, Color::GREEN, 5, 5 ); BubbleEmitter emitter = BubbleEmitter::New( Vector2(50.f,50.f),shapeImage, 90, Vector2( 5.f, 10.f )); Actor root = emitter.GetRootActor(); Stage::GetCurrent().Add( root ); root.SetPosition( Vector3::ZERO ); root.SetParentOrigin( ParentOrigin::CENTER ); root.SetAnchorPoint( AnchorPoint::CENTER ); Actor bubbleMesh = root.GetChildAt( 0 ); Renderer renderer = bubbleMesh.GetRendererAt( 0 ); DALI_TEST_CHECK( renderer ); TestGlAbstraction& gl = application.GetGlAbstraction(); float percentageValue; Vector4 startEndPosValue; Animation animation = Animation::New( 0.5f ); emitter.EmitBubble( animation, Vector2(40.f,40.f), Vector2(-5.f,-5.f), Vector2(30.f,30.f) ); Wait(application); DALI_TEST_CHECK( gl.GetUniformValue<float>( "uPercentage[0]", percentageValue ) ); DALI_TEST_EQUALS( percentageValue, 0.f, TEST_LOCATION ); DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "uStartEndPosition[0]", startEndPosValue ) ); DALI_TEST_EQUALS( startEndPosValue.x, 40.f, TEST_LOCATION ); DALI_TEST_EQUALS( startEndPosValue.y, 40.f, TEST_LOCATION ); animation.Play(); Wait(application, 200); animation.Clear(); DALI_TEST_CHECK( gl.GetUniformValue<float>( "uPercentage[0]", percentageValue ) ); DALI_TEST_CHECK( percentageValue < 0.5f && percentageValue >= 0.4); DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "uStartEndPosition[0]", startEndPosValue ) ); DALI_TEST_EQUALS( startEndPosValue.x, 40.f, TEST_LOCATION ); DALI_TEST_EQUALS( startEndPosValue.y, 40.f, TEST_LOCATION ); emitter.Restore(); application.SendNotification(); application.Render(); DALI_TEST_CHECK( gl.GetUniformValue<float>( "uPercentage[0]", percentageValue ) ); DALI_TEST_EQUALS( percentageValue, 0.f, TEST_LOCATION ); DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "uStartEndPosition[0]", startEndPosValue ) ); DALI_TEST_EQUALS( startEndPosValue, Vector4::ZERO, TEST_LOCATION ); END_TEST; }
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 UtcDaliTextInputScroll(void) { tet_infoline("UtcDaliTextInputScroll: "); ToolkitTestApplication application; // Avoids the frame buffer texture to throw an exception. application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); TextInput view = TextInput::New(); view.SetMultilinePolicy( TextView::SplitByNewLineChar ); view.SetWidthExceedPolicy( TextView::Original ); view.SetHeightExceedPolicy( TextView::Original ); view.SetTextAlignment( static_cast<Toolkit::Alignment::Type>( Toolkit::Alignment::HorizontalCenter | Toolkit::Alignment::VerticalCenter ) ); view.SetInitialText( "Hello world! This is a scroll test." ); view.SetSize( 100.f, 100.f ); view.SetSnapshotModeEnabled( false ); Stage::GetCurrent().Add( view ); application.SendNotification(); application.Render(); DALI_TEST_CHECK( !view.IsScrollEnabled() ); // Scroll should be disabled by default. view.SetScrollEnabled( true ); DALI_TEST_CHECK( view.IsScrollEnabled() ); DALI_TEST_CHECK( view.IsSnapshotModeEnabled() ); // Scroll should enable snapshot mode. view.SetScrollPosition( Vector2( 400.f, 400.f ) ); application.SendNotification(); application.Render(); const Vector2& scrollPosition = view.GetScrollPosition(); DALI_TEST_EQUALS( scrollPosition, Vector2( 149.153656f, 0.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); END_TEST; }
int UtcDaliBubbleEmitterSetBlendMode(void) { ToolkitTestApplication application; tet_infoline( " UtcDaliBubbleEmitterSetBlendMode " ); Image shapeImage = CreateSolidColorImage( application, Color::GREEN, 5, 5 ); BubbleEmitter emitter = BubbleEmitter::New( Vector2(50.f,50.f),shapeImage, 150, Vector2( 5.f, 10.f )); DALI_TEST_CHECK(emitter); Actor root = emitter.GetRootActor(); Stage::GetCurrent().Add( root ); root.SetPosition( Vector3::ZERO ); root.SetParentOrigin( ParentOrigin::CENTER ); root.SetAnchorPoint( AnchorPoint::CENTER ); TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); Wait(application); DALI_TEST_EQUALS( (GLenum)GL_SRC_ALPHA, glAbstraction.GetLastBlendFuncSrcRgb(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE_MINUS_SRC_ALPHA, glAbstraction.GetLastBlendFuncDstRgb(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE, glAbstraction.GetLastBlendFuncSrcAlpha(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE_MINUS_SRC_ALPHA, glAbstraction.GetLastBlendFuncDstAlpha(), TEST_LOCATION ); emitter.SetBlendMode( true ); Wait(application); DALI_TEST_EQUALS( (GLenum)GL_SRC_ALPHA, glAbstraction.GetLastBlendFuncSrcRgb(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE, glAbstraction.GetLastBlendFuncDstRgb(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ZERO, glAbstraction.GetLastBlendFuncSrcAlpha(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE, glAbstraction.GetLastBlendFuncDstAlpha(), TEST_LOCATION ); emitter.SetBlendMode( false ); Wait(application); DALI_TEST_EQUALS( (GLenum)GL_SRC_ALPHA, glAbstraction.GetLastBlendFuncSrcRgb(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE_MINUS_SRC_ALPHA, glAbstraction.GetLastBlendFuncDstRgb(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE, glAbstraction.GetLastBlendFuncSrcAlpha(), TEST_LOCATION ); DALI_TEST_EQUALS( (GLenum)GL_ONE_MINUS_SRC_ALPHA, glAbstraction.GetLastBlendFuncDstAlpha(), TEST_LOCATION ); 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; }
int utcDaliTextFieldEvent01(void) { ToolkitTestApplication application; tet_infoline(" utcDaliTextFieldEvent01"); // Creates a tap event. After creating a tap event the text field should // have the focus and add text with key events should be possible. TextField field = TextField::New(); 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(); // Add a key event but as the text field has not the focus it should do nothing. application.ProcessEvent( GenerateKey( "a", "a", 0, 0, 0, Integration::KeyEvent::Down ) ); // Render and notify application.SendNotification(); application.Render(); DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::TEXT ), std::string(""), TEST_LOCATION ); // 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(); // 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(); DALI_TEST_EQUALS( field.GetProperty<std::string>( TextField::Property::TEXT ), std::string("aa"), TEST_LOCATION ); // Create a second text field and send key events to it. TextField field2 = TextField::New(); field2.SetParentOrigin( ParentOrigin::TOP_LEFT ); field2.SetAnchorPoint( AnchorPoint::TOP_LEFT ); field2.SetSize( 100.f, 100.f ); field2.SetPosition( 100.f, 100.f ); Stage::GetCurrent().Add( field2 ); // Render and notify application.SendNotification(); application.Render(); // Create a tap event on the second text field. application.ProcessEvent( GenerateTap( Gesture::Possible, 1u, 1u, Vector2( 150.0f, 125.0f ) ) ); application.ProcessEvent( GenerateTap( Gesture::Started, 1u, 1u, Vector2( 150.0f, 125.0f ) ) ); // Render and notify application.SendNotification(); application.Render(); // The second text field has the focus. It should 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(); // Check the text has been added to the second text field. DALI_TEST_EQUALS( field2.GetProperty<std::string>( TextField::Property::TEXT ), std::string("aa"), TEST_LOCATION ); END_TEST; }