From 6d21f47648770973e78ad82a7599e85327660e6f Mon Sep 17 00:00:00 2001 From: Dennis Francis Date: Wed, 5 May 2021 15:30:32 +0530 Subject: unit-tests for new behaviour of auto-complete MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1255c50c33f4001a7d9932e0178b6539653eb61d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115133 Tested-by: Jenkins CollaboraOffice Reviewed-by: Luboš Luňák --- sc/qa/unit/tiledrendering/tiledrendering.cxx | 101 +++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) (limited to 'sc') diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index 0cd4543c0a73..a058d7257bbc 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -49,6 +49,7 @@ #include #include #include +#include using namespace css; @@ -115,6 +116,8 @@ public: void testSpellOnlineRenderParameter(); void testPasteIntoWrapTextCell(); void testSortAscendingDescending(); + void testAutoInputStringBlock(); + void testAutoInputExactMatch(); CPPUNIT_TEST_SUITE(ScTiledRenderingTest); @@ -164,6 +167,8 @@ public: CPPUNIT_TEST(testSpellOnlineRenderParameter); CPPUNIT_TEST(testPasteIntoWrapTextCell); CPPUNIT_TEST(testSortAscendingDescending); + CPPUNIT_TEST(testAutoInputStringBlock); + CPPUNIT_TEST(testAutoInputExactMatch); CPPUNIT_TEST_SUITE_END(); private: @@ -2419,6 +2424,102 @@ void ScTiledRenderingTest::testSortAscendingDescending() CPPUNIT_ASSERT_EQUAL(OString("rows"), aView.m_sInvalidateSheetGeometry); } +static void lcl_typeCharsInCell(const std::string& aStr, SCCOL nCol, SCROW nRow, ScTabViewShell* pView, ScModelObj* pModelObj) +{ + pView->SetCursor(nCol, nRow); + for (const char& cChar : aStr) + { + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, cChar, 0); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, cChar, 0); + Scheduler::ProcessEventsToIdle(); + } + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN); + pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN); + Scheduler::ProcessEventsToIdle(); +} + +void ScTiledRenderingTest::testAutoInputStringBlock() +{ + comphelper::LibreOfficeKit::setActive(); + + ScModelObj* pModelObj = createDoc("empty.ods"); + CPPUNIT_ASSERT(pModelObj); + ScTabViewShell* pView = dynamic_cast(SfxViewShell::Current()); + CPPUNIT_ASSERT(pView); + ScDocument* pDoc = pModelObj->GetDocument(); + + pDoc->SetString(ScAddress(0, 3, 0), "ABC"); // A4 + pDoc->SetString(ScAddress(0, 4, 0), "BAC"); // A5 + ScFieldEditEngine& rEE = pDoc->GetEditEngine(); + rEE.SetText("XYZ"); + pDoc->SetEditText(ScAddress(0, 5, 0), rEE.CreateTextObject()); // A6 + pDoc->SetString(ScAddress(0, 6, 0), "ZZZ"); // A7 + + ScAddress aA1(0, 0, 0); + lcl_typeCharsInCell("X", aA1.Col(), aA1.Row(), pView, pModelObj); // Type 'X' in A1 + CPPUNIT_ASSERT_EQUAL_MESSAGE("A1 should not autocomplete", OUString("X"), pDoc->GetString(aA1)); + + ScAddress aA3(0, 2, 0); // Adjacent to the string "superblock" A4:A7 + lcl_typeCharsInCell("X", aA3.Col(), aA3.Row(), pView, pModelObj); // Type 'X' in A3 + CPPUNIT_ASSERT_EQUAL_MESSAGE("A3 should autocomplete", OUString("XYZ"), pDoc->GetString(aA3)); + + ScAddress aA7(0, 6, 0); // Adjacent to the string "superblock" A4:A7 + lcl_typeCharsInCell("X", aA7.Col(), aA7.Row(), pView, pModelObj); // Type 'X' in A7 + CPPUNIT_ASSERT_EQUAL_MESSAGE("A7 should autocomplete", OUString("XYZ"), pDoc->GetString(aA7)); + + ScAddress aA10(0, 9, 0); + lcl_typeCharsInCell("X", aA10.Col(), aA10.Row(), pView, pModelObj); // Type 'X' in A10 + CPPUNIT_ASSERT_EQUAL_MESSAGE("A10 should not autocomplete", OUString("X"), pDoc->GetString(aA10)); +} + +void ScTiledRenderingTest::testAutoInputExactMatch() +{ + comphelper::LibreOfficeKit::setActive(); + + ScModelObj* pModelObj = createDoc("empty.ods"); + CPPUNIT_ASSERT(pModelObj); + ScTabViewShell* pView = dynamic_cast(SfxViewShell::Current()); + CPPUNIT_ASSERT(pView); + ScDocument* pDoc = pModelObj->GetDocument(); + + pDoc->SetString(ScAddress(0, 1, 0), "Simple"); // A2 + pDoc->SetString(ScAddress(0, 2, 0), "Simple"); // A3 + pDoc->SetString(ScAddress(0, 3, 0), "Sing"); // A4 + ScFieldEditEngine& rEE = pDoc->GetEditEngine(); + rEE.SetText("Case"); + pDoc->SetEditText(ScAddress(0, 4, 0), rEE.CreateTextObject()); // A5 + pDoc->SetString(ScAddress(0, 5, 0), "Time"); // A6 + pDoc->SetString(ScAddress(0, 6, 0), "Castle"); // A7 + + ScAddress aA8(0, 7, 0); + lcl_typeCharsInCell("S", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "S" in A8 + // Should not autocomplete as there are multiple matches starting with "S". + CPPUNIT_ASSERT_EQUAL_MESSAGE("1: A8 should have just S (should not autocomplete)", OUString("S"), pDoc->GetString(aA8)); + + lcl_typeCharsInCell("Si", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "Si" in A8 + // Should not autocomplete as there are multiple matches starting with "Si". + CPPUNIT_ASSERT_EQUAL_MESSAGE("2: A8 should not autocomplete", OUString("Si"), pDoc->GetString(aA8)); + + lcl_typeCharsInCell("Sim", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "Sim" in A8 + // Should autocomplete to "Simple" which is the only match. + CPPUNIT_ASSERT_EQUAL_MESSAGE("3: A8 should autocomplete", OUString("Simple"), pDoc->GetString(aA8)); + + lcl_typeCharsInCell("Sin", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "Sin" in A8 + // Should autocomplete to "Sing" which is the only match. + CPPUNIT_ASSERT_EQUAL_MESSAGE("4: A8 should autocomplete", OUString("Sing"), pDoc->GetString(aA8)); + + lcl_typeCharsInCell("Cas", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "Cas" in A8 + // Should not autocomplete as there are multiple matches starting with "Cas". + CPPUNIT_ASSERT_EQUAL_MESSAGE("5: A8 should not autocomplete", OUString("Cas"), pDoc->GetString(aA8)); + + lcl_typeCharsInCell("Cast", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "Cast" in A8 + // Should autocomplete to "Castle" which is the only match. + CPPUNIT_ASSERT_EQUAL_MESSAGE("6: A8 should autocomplete", OUString("Castle"), pDoc->GetString(aA8)); + + lcl_typeCharsInCell("T", aA8.Col(), aA8.Row(), pView, pModelObj); // Type "T" in A8 + // Should autocomplete to "Time" which is the only match. + CPPUNIT_ASSERT_EQUAL_MESSAGE("7: A8 should autocomplete", OUString("Time"), pDoc->GetString(aA8)); +} } -- cgit