mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 11:09:27 +02:00
* Patch from Laco to enhance test for bug #24096
git-svn-id: trunk@24129 -
This commit is contained in:
parent
3f910197c6
commit
95e6be9853
@ -44,6 +44,17 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure testFormatBCD(const Format: string; BCD: TBCD; Output: string);
|
||||
var s: string;
|
||||
begin
|
||||
s := FormatBCD(Format, BCD);
|
||||
if s <> Output then
|
||||
begin
|
||||
writeln('FormatBCD ''', Format, ''': ', s, ' Expected: ', Output);
|
||||
inc(ErrorCount);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure testBCDPrecScale(const s: string; const prec,scale: integer);
|
||||
var bcd: TBCD;
|
||||
begin
|
||||
@ -122,6 +133,7 @@ begin
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 30, 4), '123456789123456789,1235'); //no thousand separators
|
||||
testBCDToStrF(bcdtostrf(bcd, ffNumber, 30, 5), '123 456 789 123 456 789,12345'); //with thousand separators
|
||||
testBCDToStrF(bcdtostrf(bcd, ffCurrency, 30, 2), '123 456 789 123 456 789,12 $'); //with thousand separators
|
||||
testBCDToStrF(bcdtostrf(bcd, ffExponent, 9, 2), '1,23456789E+17');
|
||||
|
||||
FS.DecimalSeparator:='.';
|
||||
FS.ThousandSeparator:=',';
|
||||
@ -130,8 +142,46 @@ begin
|
||||
bcd:=strtobcd('123456789123456789.12345');
|
||||
testBCDToStrF(bcdtostr(bcd), '123456789123456789.12345');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 30, 3), '123456789123456789.123'); //no thousand separators
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 30, 0), '123456789123456789');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffNumber, 30, 6), '123,456,789,123,456,789.123450'); //with thousand separators
|
||||
testBCDToStrF(bcdtostrf(bcd, ffCurrency, 30, 5), '$123,456,789,123,456,789.12345'); //with thousand separators
|
||||
testBCDToStrF(bcdtostrf(bcd, ffExponent, 8, 3), '1.2345679E+017');
|
||||
bcd:=strtobcd('123456789');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 10, 0), '123456789');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffExponent, 8, 3), '1.2345679E+008');
|
||||
bcd:=strtobcd('9.99'); // test rounding
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 10, 1), '10.0');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 10, 0), '10');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffExponent, 8, 3), '9.9900000E+000');
|
||||
bcd:=strtobcd('0.09');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 10, 1), '0.1');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffFixed, 10, 0), '0');
|
||||
testBCDToStrF(bcdtostrf(bcd, ffExponent, 8, 3), '9.0000000E-002');
|
||||
|
||||
// test FormatBCD:
|
||||
bcd:=strtobcd('123456789123456789.12345');
|
||||
testFormatBCD('',bcd, '123456789123456789.12345');
|
||||
testFormatBCD('0',bcd, '123456789123456789');
|
||||
testFormatBCD('0.',bcd, '123456789123456789');
|
||||
testFormatBCD('0.0',bcd, '123456789123456789.1');
|
||||
testFormatBCD('#.0000',bcd, '123456789123456789.1235');
|
||||
testFormatBCD('#.000000',bcd, '123456789123456789.123450');
|
||||
testFormatBCD('# ###.000',bcd, '123456789123456 789.123');
|
||||
testFormatBCD('#-#-###.0000',bcd, '12345678912345-6-789.1235');
|
||||
testFormatBCD('#,#,###.0000',bcd, '123,456,789,123,456,789.1235');
|
||||
testFormatBCD('#,#.0000##',bcd, '123,456,789,123,456,789.12345');
|
||||
bcd:=strtobcd('-123.455');
|
||||
testFormatBCD('0.0',bcd, '-123.5');
|
||||
testFormatBCD('00000.0',bcd, '-00123.5');
|
||||
testFormatBCD('#####.#',bcd, '-123.5');
|
||||
testFormatBCD('.0000',bcd, '-123.4550');
|
||||
testFormatBCD('+0.0',bcd, '+-123.5'); // sign is part of number
|
||||
testFormatBCD('0.00" $"',bcd, '-123.46 $');
|
||||
testFormatBCD('0.0;(neg)0.00',bcd, '(neg)123.46');
|
||||
bcd:=strtobcd('0');
|
||||
testFormatBCD('0;;0',bcd, '0');
|
||||
testFormatBCD('0;;#',bcd, '');
|
||||
testFormatBCD('0;;0.00',bcd, '0.00');
|
||||
|
||||
// test StrToBCD:
|
||||
testBCDPrecScale(' 1.0000000000000000E-0003 ', 3, 3);
|
||||
|
Loading…
Reference in New Issue
Block a user