This is an automated email from the ASF dual-hosted git repository. cmarcum pushed a commit to branch AOO41X in repository https://gitbox.apache.org/repos/asf/openoffice.git
The following commit(s) were added to refs/heads/AOO41X by this push: new 133efdc #i60307# search for strings in date formats fails. When "Search in" is set to "Values", search the formatted values instead of just the raw input. This fixes a 9 year old bug that's been duplicated at least 6 times, and matches what Excel does. Tests show even "Replace" works, and works well: if "October" is replaced by "November", it converts the original month from 10 to 11; it only converts the cell type to text if the resulting text is no longer a valid date. Also ad [...] 133efdc is described below commit 133efdc14496caaf90c15e33666ab1c0c1e2fbea Author: Damjan Jovanovic <dam...@apache.org> AuthorDate: Tue Nov 3 18:44:21 2015 +0000 #i60307# search for strings in date formats fails. When "Search in" is set to "Values", search the formatted values instead of just the raw input. This fixes a 9 year old bug that's been duplicated at least 6 times, and matches what Excel does. Tests show even "Replace" works, and works well: if "October" is replaced by "November", it converts the original month from 10 to 11; it only converts the cell type to text if the resulting text is no longer a valid date. Also added BVT tests for the expected behaviour. git-svn-id: https://svn.apache.org/repos/asf/openoffice/trunk@1712367 13f79535-47bb-0310-9956-ffa450edef68 (cherry picked from commit 2e4d2335e101b0658cddb9e31f2fd229d84bfc1d) --- main/sc/source/core/data/table6.cxx | 2 +- test/testgui/data/bvt/searchFormulasValues.ods | Bin 0 -> 7934 bytes test/testgui/source/bvt/gui/BasicFunctionTest.java | 30 +++++++++++++++++++++ test/testgui/source/testlib/gui/UIMap.java | 1 + 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/main/sc/source/core/data/table6.cxx b/main/sc/source/core/data/table6.cxx index 5a96ce1..745a07c 100644 --- a/main/sc/source/core/data/table6.cxx +++ b/main/sc/source/core/data/table6.cxx @@ -91,7 +91,7 @@ sal_Bool ScTable::SearchCell(const SvxSearchItem& rSearchItem, SCCOL nCol, SCROW bMultiLine = lcl_GetTextWithBreaks( *(const ScEditCell*)pCell, pDocument, aString ); else - aCol[nCol].GetInputString( nRow, aString ); + aCol[nCol].GetString( nRow, aString ); break; case SVX_SEARCHIN_NOTE: { diff --git a/test/testgui/data/bvt/searchFormulasValues.ods b/test/testgui/data/bvt/searchFormulasValues.ods new file mode 100644 index 0000000..cdfe86f Binary files /dev/null and b/test/testgui/data/bvt/searchFormulasValues.ods differ diff --git a/test/testgui/source/bvt/gui/BasicFunctionTest.java b/test/testgui/source/bvt/gui/BasicFunctionTest.java index ec7d770..a5dd69f 100644 --- a/test/testgui/source/bvt/gui/BasicFunctionTest.java +++ b/test/testgui/source/bvt/gui/BasicFunctionTest.java @@ -327,6 +327,36 @@ public class BasicFunctionTest { copyAll()); discard(); } + + @Test + public void testFindFormulasAndValues() { + open(prepareData("bvt/searchFormulasValues.ods")); + calc.waitForExistence(10, 2); + + // Searching for 2003 by formula finds A2 + SCTool.selectRange("A1"); + app.dispatch(".uno:SearchDialog"); + findDlgFor.setText("2003"); + findDlgMore.click(); + findDlgCalcSearchIn.select("Formulas"); + findDlgFind.click(); + sleep(1); + assertEquals("wrong cell found for formulas search", "A2", scInputBarPosition.getText()); + findDlg.close(); + + // Searching for October by value finds A2 + SCTool.selectRange("A1"); + app.dispatch(".uno:SearchDialog"); + findDlgFor.setText("October"); + findDlgMore.click(); + findDlgCalcSearchIn.select("Values"); + findDlgFind.click(); + sleep(1); + assertEquals("wrong cell found for values search", "A2", scInputBarPosition.getText()); + findDlg.close(); + + discard(); + } @Test public void testFillInSpreadsheet() { diff --git a/test/testgui/source/testlib/gui/UIMap.java b/test/testgui/source/testlib/gui/UIMap.java index e370b76..a25c809 100644 --- a/test/testgui/source/testlib/gui/UIMap.java +++ b/test/testgui/source/testlib/gui/UIMap.java @@ -181,6 +181,7 @@ public class UIMap { public static final VclButton findDlgMatchCase = button("svx:CheckBox:RID_SVXDLG_SEARCH:CB_MATCH_CASE"); public static final VclButton findDlgWholeWord = button("svx:CheckBox:RID_SVXDLG_SEARCH:CB_WHOLE_WORDS"); public static final VclButton findDlgMore = button("svx:MoreButton:RID_SVXDLG_SEARCH:BTN_MORE"); + public static final VclListBox findDlgCalcSearchIn = listbox("svx:ListBox:RID_SVXDLG_SEARCH:LB_CALC_SEARCHIN"); public static final VclWindow chart = window("CHART2_HID_SCH_WIN_DOCUMENT"); public static final VclDialog chartWizard = dialog("CHART2_HID_SCH_CHART_AUTO_FORMAT"); public static final VclDialog filePrintDlg = dialog(".HelpID:vcl:PrintDialog:Dialog");