summaryrefslogtreecommitdiff
path: root/sc/qa/unit/ucalc.cxx
diff options
context:
space:
mode:
authorLaurent Balland-Poirier <laurent.balland-poirier@laposte.net>2017-03-03 21:51:26 +0100
committerAndras Timar <andras.timar@collabora.com>2017-04-12 17:16:56 +0200
commit4b3854147cd80962a8cf5e63d275b43ae7e0b21b (patch)
tree696cb6fea35aadd19ff0309825ba8d2fdbf5e4a5 /sc/qa/unit/ucalc.cxx
parent2aaf425550199f412773992c4623d1e5b83dea53 (diff)
tdf#106252 Engineering notation for Precision as shown
with more tests Reviewed-on: https://gerrit.libreoffice.org/35089 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 5f2db66ad0de6fbbae309850516e17eaa17934cb) Change-Id: Ifc77b847af4eaaa3c85e904e46c2663b6d768241 Reviewed-on: https://gerrit.libreoffice.org/36369 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit 3c68b6520e743e8ed9afa908a461f766952e030f)
Diffstat (limited to 'sc/qa/unit/ucalc.cxx')
-rw-r--r--sc/qa/unit/ucalc.cxx105
1 files changed, 79 insertions, 26 deletions
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index dbdd549b3ba6..ea44ff7d4f3d 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -6434,12 +6434,14 @@ void Test::testPrecisionAsShown()
aCode = "0.00";
fValue = 1.0/3.0;
fExpectedRoundVal = 0.33;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
- fValue = -10.001;
- fExpectedRoundVal = -10.0;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 10.001;
+ fExpectedRoundVal = 10.0;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
}
- { // thousand rounding buguous!!!! tdf#106253
+ { // thousand rounding bogus!!!! tdf#106253
aCode = "0,,";
fValue = 4.0e9 / 7.0;
fExpectedRoundVal = 571e6; // actual is 571428571
@@ -6452,54 +6454,105 @@ void Test::testPrecisionAsShown()
aCode = "0.00%";
fValue = 4.0 / 7.0;
fExpectedRoundVal = 0.5714;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
- fValue = -4.0 / 7.0;
- fExpectedRoundVal = -0.5714;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 40.0 / 7.0;
+ fExpectedRoundVal = 5.7143;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
}
{ // scientific rounding
aCode = "0.00E0";
fValue = 400000.0 / 7.0;
fExpectedRoundVal = 57100.0;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
fValue = 4.0 / 70000.0;
fExpectedRoundVal = 5.71e-5;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
- // engineering rounding bugous!!! tdf#106252
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ // engineering rounding tdf#106252
aCode = "##0.000E0";
fValue = 400000.0 / 7.0;
- fExpectedRoundVal = 57143.0; // actual is 57140
- //checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ fExpectedRoundVal = 57.143e3;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4000000.0 / 7.0;
+ fExpectedRoundVal = 571.429e3;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 40000000.0 / 7.0;
+ fExpectedRoundVal = 5.714e6;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
fValue = 4.0 / 70000.0;
- fExpectedRoundVal = 5.7143e-5; // actual is 5.714e-05
- //checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ fExpectedRoundVal = 57.143e-6;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4.0 / 7000.0;
+ fExpectedRoundVal = 571.429e-6;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4.0 / 700.0;
+ fExpectedRoundVal = 5.714e-3;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ aCode = "##?0.0#E0";
+ fValue = 400000.0 / 7.0;
+ fExpectedRoundVal = 5.71e4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4000000.0 / 7.0;
+ fExpectedRoundVal = 57.14e4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 40000000.0 / 7.0;
+ fExpectedRoundVal = 571.43e4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 400000000.0 / 7.0;
+ fExpectedRoundVal = 5714.29e4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4.0 / 70000.0;
+ fExpectedRoundVal = 5714.29e-8;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4.0 / 7000.0;
+ fExpectedRoundVal = 5.71e-4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4.0 / 700.0;
+ fExpectedRoundVal = 57.14e-4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
+ fValue = 4.0 / 70.0;
+ fExpectedRoundVal = 571.43e-4;
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
}
{ // fraction rounding tdf#105657
aCode = "# ?/?";
fValue = 0.35;
fExpectedRoundVal = 1.0/3.0;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
- fValue = -0.35;
- fExpectedRoundVal = -1.0/3.0;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
}
{ // exact fraction
aCode = "# ?/??";
fValue = 0.35;
fExpectedRoundVal = 0.35;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
- fValue = -0.35;
- fExpectedRoundVal = -0.35;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, -fValue, -fExpectedRoundVal );
}
{ // several sub-formats tdf#106052
aCode = "0.00;-0.000";
fValue = 1.0/3.0;
fExpectedRoundVal = 0.33;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
fValue = -1.0/3.0;
fExpectedRoundVal = -0.333;
- checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
+ checkPrecisionAsShown( aCode, fValue, fExpectedRoundVal );
}
setCalcAsShown( m_pDoc, false);