@@ -4203,11 +4203,11 @@ procedure TTestCoreBase.NumericalConversions;
4203
4203
begin
4204
4204
s := DoubleToString(v);
4205
4205
val(s, d, err);
4206
- Check (err = 0 );
4206
+ CheckEqual (err, 0 );
4207
4207
CheckSame(d, v);
4208
4208
StringToUtf8(s, u);
4209
4209
d := GetExtended(pointer(u), err);
4210
- Check (err = 0 );
4210
+ CheckEqual (err, 0 );
4211
4211
CheckSame(d, v);
4212
4212
end ;
4213
4213
@@ -4549,6 +4549,17 @@ procedure TTestCoreBase.NumericalConversions;
4549
4549
Check(UInt32ToUtf8(1599638299 ) = ' 1599638299' );
4550
4550
Check(Int32ToUtf8(-1599638299 ) = ' -1599638299' );
4551
4551
Check(Int64ToUtf8(-1271083787498396012 ) = ' -1271083787498396012' );
4552
+ CheckEqual(Int64ToUtf8(242161819595454762 ), ' 242161819595454762' );
4553
+ // detect 64-bit overflow of main digits in GetExtended()
4554
+ CheckDoubleToShort(95.0290695380 , ' 95.029069538' );
4555
+ Check(ToDouble(' 95.0290695380' , d), ' 95.02' );
4556
+ CheckSame(d, 95.029069538 );
4557
+ Check(ToDouble(' 95.02906953800000000000' , d), ' 95.x' );
4558
+ CheckSame(d, 95.029069538 );
4559
+ Check(ToDouble(' 184467440737095514' , d), ' 184467440737095514' );
4560
+ CheckSame(d, 184467440737095514 );
4561
+ Check(ToDouble(' 1844674407370955148' , d), ' 1844674407370955148' );
4562
+ CheckSame(d, 1844674407370955148 );
4552
4563
// SQLite text-to-float converter routine failed with this number
4553
4564
Check(ToDouble(' 18446744073709551488' , d), ' 18446744073709551488' );
4554
4565
CheckSame(d, 1.8446744074e+19 , 1e+10 );
@@ -4557,9 +4568,11 @@ procedure TTestCoreBase.NumericalConversions;
4557
4568
CheckDoubleToShortSame(d);
4558
4569
CheckDoubleToShort(1234567890123456789 , ' 1.2345678901234568E18' );
4559
4570
CheckDoubleToShortSame(1234567890123456789 );
4571
+ CheckDoubleToShortSame(18446744073709551 );
4572
+ CheckDoubleToShortSame(184467440737095514 );
4573
+ CheckDoubleToShortSame(1844674407370955148 );
4560
4574
{ $endif FPC}
4561
- s := Int64ToUtf8(242161819595454762 );
4562
- Check(s = ' 242161819595454762' );
4575
+ // validate ScanUtf8()
4563
4576
Check(ScanUtf8(' 1 2 3' , ' %' , [@i, @j, @d]) = 0 );
4564
4577
Check(ScanUtf8(' ' , ' %d%d%f' , [@i, @j, @d]) = 0 );
4565
4578
Check(ScanUtf8(' 1 2 7' , ' %d%d%f' , [@i, @j, @d]) = 3 );
0 commit comments