X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-TextEditor.cpp;h=62625ef14279cb7c0ae28c42ae6b6c294526f2ad;hp=b76a85060d521c6ff0fb156c9b61ca83793c9e86;hb=9cae10e14d431366534015e7df36599c3836228e;hpb=416fe5a5deeb51844089bfc9d6055e8852909f97 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp index b76a850..62625ef 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp @@ -130,6 +130,8 @@ const char* HANDLE_RIGHT_SELECTION_FILE_NAME = TEST_RESOURCE_DIR "/selection_han const std::string DEFAULT_DEVICE_NAME("hwKeyboard"); +static bool gAnchorClickedCallBackCalled; +static bool gAnchorClickedCallBackNotCalled; static bool gTextChangedCallBackCalled; static bool gInputStyleChangedCallbackCalled; static bool gMaxCharactersCallBackCalled; @@ -149,6 +151,18 @@ struct CallbackFunctor bool* mCallbackFlag; }; +static void TestAnchorClickedCallback(TextEditor control, const char* href, unsigned int hrefLength) +{ + tet_infoline(" TestAnchorClickedCallback"); + + gAnchorClickedCallBackNotCalled = false; + + if (!strcmp(href, "https://www.tizen.org") && hrefLength == strlen(href)) + { + gAnchorClickedCallBackCalled = true; + } +} + static void TestTextChangedCallback( TextEditor control ) { tet_infoline(" TestTextChangedCallback"); @@ -952,6 +966,52 @@ int utcDaliTextEditorAtlasRenderP(void) END_TEST; } +// Positive test for the anchorClicked signal. +int utcDaliTextEditorAnchorClickedP(void) +{ + ToolkitTestApplication application; + tet_infoline(" utcDaliTextEditorAnchorClickedP"); + TextEditor editor = TextEditor::New(); + DALI_TEST_CHECK(editor); + + application.GetScene().Add(editor); + + // connect to the anchor clicked signal. + ConnectionTracker* testTracker = new ConnectionTracker(); + DevelTextEditor::AnchorClickedSignal(editor).Connect(&TestAnchorClickedCallback); + bool anchorClickedSignal = false; + editor.ConnectSignal(testTracker, "anchorClicked", CallbackFunctor(&anchorClickedSignal)); + + gAnchorClickedCallBackCalled = false; + editor.SetProperty(TextEditor::Property::TEXT, "TIZEN"); + editor.SetProperty(TextEditor::Property::ENABLE_MARKUP, true); + editor.SetProperty(Actor::Property::SIZE, Vector2(100.f, 50.f)); + editor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + editor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + application.SendNotification(); + application.Render(); + editor.SetKeyInputFocus(); + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 5.0f, 5.0f); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(gAnchorClickedCallBackCalled); + DALI_TEST_CHECK(anchorClickedSignal); + + gAnchorClickedCallBackNotCalled = true; + // Tap the outside of anchor, callback should not be called. + TestGenerateTap(application, 150.f, 100.f); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK(gAnchorClickedCallBackNotCalled); + + END_TEST; +} + // Positive test for the textChanged signal. int utcDaliTextEditorTextChangedP(void) { @@ -970,36 +1030,27 @@ int utcDaliTextEditorTextChangedP(void) gTextChangedCallBackCalled = false; editor.SetProperty( TextEditor::Property::TEXT, "ABC" ); - application.SendNotification(); - application.Render(); DALI_TEST_CHECK( gTextChangedCallBackCalled ); DALI_TEST_CHECK( textChangedSignal ); + application.SendNotification(); editor.SetKeyInputFocus(); gTextChangedCallBackCalled = false; application.ProcessEvent( GenerateKey( "D", "", "D", KEY_D_CODE, 0, 0, Integration::KeyEvent::DOWN, "D", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); - application.SendNotification(); - application.Render(); DALI_TEST_CHECK( gTextChangedCallBackCalled ); // Remove all text editor.SetProperty( TextField::Property::TEXT, "" ); - application.SendNotification(); - application.Render(); // Pressing backspace key: TextChangedCallback should not be called when there is no text in texteditor. gTextChangedCallBackCalled = false; application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_BACKSPACE, 0, 0, Integration::KeyEvent::DOWN, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); - application.SendNotification(); - application.Render(); DALI_TEST_CHECK( !gTextChangedCallBackCalled ); // Pressing delete key: TextChangedCallback should not be called when there is no text in texteditor. gTextChangedCallBackCalled = false; application.ProcessEvent( GenerateKey( "", "", "", Dali::DevelKey::DALI_KEY_DELETE, 0, 0, Integration::KeyEvent::DOWN, "Delete", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); - application.SendNotification(); - application.Render(); DALI_TEST_CHECK( !gTextChangedCallBackCalled ); END_TEST; @@ -3302,3 +3353,221 @@ int UtcDaliTextEditorPrimaryCursorPosition(void) END_TEST; } + +int UtcDaliTextEditorLineCountAfterGetNaturalSize(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextEditorLineCountAfterGetNaturalSize "); + + TextEditor textEditor = TextEditor::New(); + textEditor.SetProperty(TextEditor::Property::TEXT, "A\nB\nC\nD\nE\nF\n"); + textEditor.SetProperty( Actor::Property::SIZE, Vector2( 300.f, 50.f ) ); + textEditor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + textEditor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + application.GetScene().Add( textEditor ); + + application.SendNotification(); + application.Render(); + + int lineCount = 0; + lineCount = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + DALI_TEST_EQUALS( lineCount, 7, TEST_LOCATION ); + + textEditor.GetNaturalSize(); + + // Create a tap event to touch the text editor. + TestGenerateTap( application, 18.0f, 25.0f ); + + application.SendNotification(); + application.Render(); + + lineCount = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + DALI_TEST_EQUALS( lineCount, 7, TEST_LOCATION ); + + END_TEST; +} + + +int utcDaliTextEditorGetHeightForWidthDoesNotChangeLineCountScrollingCase(void) +{ + ToolkitTestApplication application; + + tet_infoline(" utcDaliTextEditorGetHeightForWidthDoesNotChangeLineCountScrollingCase "); + + int lineCountBefore =0 ; + int lineCountAfter =0 ; + + // Create a text editor + TextEditor textEditor = TextEditor::New(); + //Set very large font-size using point-size + textEditor.SetProperty( TextEditor::Property::POINT_SIZE, 10) ; + //Specify font-family + textEditor.SetProperty( TextEditor::Property::FONT_FAMILY, "DejaVu Sans"); + //Specify size + textEditor.SetProperty( Actor::Property::SIZE, Vector2( 100.f, 100.f ) ); + //Set text longer than width of textEditor + textEditor.SetProperty( TextEditor::Property::TEXT, "TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST "); + + application.GetScene().Add( textEditor ); + + application.SendNotification(); + application.Render(); + + //Failed case is the GetHeightForWidth change LineCount then the scrollor will not arrive to latest line + //GetHeightForWidth is a retrieval method which should not modify object + lineCountBefore = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + textEditor.GetHeightForWidth(200.f); + + //This is to simulate focus into text editor after calling GetHeightForWidth + //Create a tap event to touch the text editor. + TestGenerateTap( application, 18.0f, 25.0f ); + + application.SendNotification(); + application.Render(); + + lineCountAfter = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + + //The LineCount must not be changed when calling GetHeightForWidth. + DALI_TEST_EQUALS( lineCountAfter , lineCountBefore, TEST_LOCATION ); + + END_TEST; +} + +int utcDaliTextEditorGetHeightForWidthDoesNotChangeLineCountLineWrapCharCase(void) +{ + ToolkitTestApplication application; + + tet_infoline(" utcDaliTextEditorGetHeightForWidthDoesNotChangeLineCountLineWrapCharCase "); + + int lineCountBefore =0 ; + int lineCountAfter =0 ; + + // Create a text editor + TextEditor textEditor = TextEditor::New(); + //Set very large font-size using point-size + textEditor.SetProperty( TextEditor::Property::POINT_SIZE, 10) ; + //Specify font-family + textEditor.SetProperty( TextEditor::Property::FONT_FAMILY, "DejaVu Sans"); + //Specify size + textEditor.SetProperty( Actor::Property::SIZE, Vector2( 50.f, 100.f ) ); + //Set text longer than width of textEditor + textEditor.SetProperty( TextEditor::Property::TEXT, "qwertyuiopasdfghjklzxcvbnm\n"); + //Set line wrap mode Character + textEditor.SetProperty(TextEditor::Property::LINE_WRAP_MODE, "CHARACTER"); + + application.GetScene().Add( textEditor ); + + application.SendNotification(); + application.Render(); + + //Failed case is the GetHeightForWidth change LineCount which make position of cursor invalid in TextEditor + //GetHeightForWidth is a retrieval method which should not modify object + lineCountBefore = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + textEditor.GetHeightForWidth(200.f); + + //This is to simulate focus into text editor after calling GetHeightForWidth + //Create a tap event to touch the text editor. + TestGenerateTap( application, 18.0f, 25.0f ); + + application.SendNotification(); + application.Render(); + + lineCountAfter = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + + //The LineCount must not be changed when calling GetHeightForWidth. + DALI_TEST_EQUALS( lineCountAfter , lineCountBefore, TEST_LOCATION ); + + END_TEST; +} + +int utcDaliTextEditorGetNaturalSizeDoesNotChangeLineCountScrollingCase(void) +{ + ToolkitTestApplication application; + + tet_infoline(" utcDaliTextEditorGetNaturalSizeDoesNotChangeLineCountScrollingCase "); + + int lineCountBefore =0 ; + int lineCountAfter =0 ; + + // Create a text editor + TextEditor textEditor = TextEditor::New(); + //Set very large font-size using point-size + textEditor.SetProperty( TextEditor::Property::POINT_SIZE, 10) ; + //Specify font-family + textEditor.SetProperty( TextEditor::Property::FONT_FAMILY, "DejaVu Sans"); + //Specify size + textEditor.SetProperty( Actor::Property::SIZE, Vector2( 100.f, 100.f ) ); + //Set text longer than width of textEditor + textEditor.SetProperty( TextEditor::Property::TEXT, "TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST "); + + application.GetScene().Add( textEditor ); + + application.SendNotification(); + application.Render(); + + //Failed case is the GetNaturalSize change LineCount then the scrollor will not arrive to latest line + //GetNaturalSize is a retrieval method which should not modify object + lineCountBefore = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + textEditor.GetNaturalSize(); + + //This is to simulate focus into text editor after calling GetNaturalSize + //Create a tap event to touch the text editor. + TestGenerateTap( application, 18.0f, 25.0f ); + + application.SendNotification(); + application.Render(); + + lineCountAfter = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + + //The LineCount must not be changed when calling GetNaturalSize. + DALI_TEST_EQUALS( lineCountAfter , lineCountBefore, TEST_LOCATION ); + + END_TEST; +} + +int utcDaliTextEditorGetNaturalSizeDoesNotChangeLineCountLineWrapCharCase(void) +{ + ToolkitTestApplication application; + + tet_infoline(" utcDaliTextEditorGetNaturalSizeDoesNotChangeLineCountLineWrapCharCase "); + + int lineCountBefore =0 ; + int lineCountAfter =0 ; + + // Create a text editor + TextEditor textEditor = TextEditor::New(); + //Set very large font-size using point-size + textEditor.SetProperty( TextEditor::Property::POINT_SIZE, 10) ; + //Specify font-family + textEditor.SetProperty( TextEditor::Property::FONT_FAMILY, "DejaVu Sans"); + //Specify size + textEditor.SetProperty( Actor::Property::SIZE, Vector2( 50.f, 100.f ) ); + //Set text longer than width of textEditor + textEditor.SetProperty( TextEditor::Property::TEXT, "qwertyuiopasdfghjklzxcvbnm\n"); + //Set line wrap mode Character + textEditor.SetProperty(TextEditor::Property::LINE_WRAP_MODE, "CHARACTER"); + + application.GetScene().Add( textEditor ); + + application.SendNotification(); + application.Render(); + + //Failed case is the GetNaturalSize change LineCount which make position of cursor invalid in TextEditor + //GetNaturalSize is a retrieval method which should not modify object + lineCountBefore = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + textEditor.GetNaturalSize( ); + + //This is to simulate focus into text editor after calling GetNaturalSize + //Create a tap event to touch the text editor. + TestGenerateTap( application, 18.0f, 25.0f ); + + application.SendNotification(); + application.Render(); + + lineCountAfter = textEditor.GetProperty( TextEditor::Property::LINE_COUNT ); + + //The LineCount must not be changed when calling GetNaturalSize. + DALI_TEST_EQUALS( lineCountAfter , lineCountBefore, TEST_LOCATION ); + + END_TEST; +} \ No newline at end of file