basic/qa/basic_coverage/test_tdf147089_idiv.bas | 30 +++++++++++++++++++++++ basic/qa/cppunit/test_vba.cxx | 1 basic/qa/vba_tests/tdf147089_idiv.vb | 31 ++++++++++++++++++++++++ basic/source/comp/exprnode.cxx | 4 +-- 4 files changed, 64 insertions(+), 2 deletions(-)
New commits: commit 3ba8b56b32c203326b776b940d20b16eb2340835 Author: Andreas Heinisch <andreas.heini...@yahoo.de> AuthorDate: Mon Feb 21 19:34:57 2022 +0100 Commit: Andreas Heinisch <andreas.heini...@yahoo.de> CommitDate: Mon Feb 21 23:10:46 2022 +0100 tdf#147089 - Round Integral Division (IDIV) literals to Integer values Change-Id: Ia243c6117a437d0c6efb33a4e76c5e9ee539fbdc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130302 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de> diff --git a/basic/qa/basic_coverage/test_tdf147089_idiv.bas b/basic/qa/basic_coverage/test_tdf147089_idiv.bas new file mode 100644 index 000000000000..3d5e2271140c --- /dev/null +++ b/basic/qa/basic_coverage/test_tdf147089_idiv.bas @@ -0,0 +1,30 @@ +' +' This file is part of the LibreOffice project. +' +' This Source Code Form is subject to the terms of the Mozilla Public +' License, v. 2.0. If a copy of the MPL was not distributed with this +' file, You can obtain one at http://mozilla.org/MPL/2.0/. +' + +Option Explicit + +Function doUnitTest() As String + TestUtil.TestInit + verify_testIDiv + doUnitTest = TestUtil.GetResult() +End Function + +Sub verify_testIDiv + On Error GoTo errorHandler + + ' tdf#147089 - IDIV operands are rounded to Integer values before the operation is performed + TestUtil.AssertEqual(8.4 \ 2, 4, "8.4 \ 2") + TestUtil.AssertEqual(9.9 \ 2, 5, "9.9 \ 2") + TestUtil.AssertEqual(20 \ 4.9, 4, "20 \ 4.9") + TestUtil.AssertEqual(20 \ 4.4, 5, "20 \ 4.4") + TestUtil.AssertEqual(16.4 \ 5.9, 2, "16.4 \ 5.9") + + Exit Sub +errorHandler: + TestUtil.ReportErrorHandler("verify_testIDiv", Err, Error$, Erl) +End Sub diff --git a/basic/qa/cppunit/test_vba.cxx b/basic/qa/cppunit/test_vba.cxx index 868dc15891e3..a420568f8b7c 100644 --- a/basic/qa/cppunit/test_vba.cxx +++ b/basic/qa/cppunit/test_vba.cxx @@ -134,6 +134,7 @@ void VBATest::testMiscVBAFunctions() "string.vb", "strreverse.vb", "switch.vb", + "tdf147089_idiv.vb", "timeserial.vb", "timevalue.vb", "trim.vb", diff --git a/basic/qa/vba_tests/tdf147089_idiv.vb b/basic/qa/vba_tests/tdf147089_idiv.vb new file mode 100644 index 000000000000..515f1e00cf63 --- /dev/null +++ b/basic/qa/vba_tests/tdf147089_idiv.vb @@ -0,0 +1,31 @@ +' +' This file is part of the LibreOffice project. +' +' This Source Code Form is subject to the terms of the Mozilla Public +' License, v. 2.0. If a copy of the MPL was not distributed with this +' file, You can obtain one at http://mozilla.org/MPL/2.0/. +' + +Option VBASupport 1 +Option Explicit + +Function doUnitTest() As String + TestUtil.TestInit + verify_testIDiv + doUnitTest = TestUtil.GetResult() +End Function + +Sub verify_testIDiv + On Error GoTo errorHandler + + ' tdf#147089 - IDIV operands are rounded to Integer values before the operation is performed + TestUtil.AssertEqual(8.4 \ 2, 4, "8.4 \ 2") + TestUtil.AssertEqual(9.9 \ 2, 5, "9.9 \ 2") + TestUtil.AssertEqual(20 \ 4.9, 4, "20 \ 4.9") + TestUtil.AssertEqual(20 \ 4.4, 5, "20 \ 4.4") + TestUtil.AssertEqual(16.4 \ 5.9, 2, "16.4 \ 5.9") + + Exit Sub +errorHandler: + TestUtil.ReportErrorHandler("verify_testIDiv", Err, Error$, Erl) +End Sub diff --git a/basic/source/comp/exprnode.cxx b/basic/source/comp/exprnode.cxx index 17bdbca25258..a5fd8dde3cfc 100644 --- a/basic/source/comp/exprnode.cxx +++ b/basic/source/comp/exprnode.cxx @@ -296,8 +296,8 @@ void SbiExprNode::FoldConstantsBinaryNode(SbiParser* pParser) { double nl = pLeft->nVal; double nr = pRight->nVal; - // tdf#141201 - round MOD literals to Integer values - if (eTok == MOD) + // tdf#141201, tdf#147089 - round MOD/IDIV literals to Integer values + if (eTok == MOD || eTok == IDIV) { nl = rtl::math::round(nl); nr = rtl::math::round(nr);