
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8126 8e941d3f-bd1b-0410-a28a-d453659cc2b4
88 lines
1.8 KiB
ObjectPascal
88 lines
1.8 KiB
ObjectPascal
{-------------------------------------------------------------------------------
|
|
Tests for some dedicated math routines which are specific to spreadsheets.
|
|
-------------------------------------------------------------------------------}
|
|
|
|
unit mathtests;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$modeswitch advancedrecords}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF Unix}
|
|
//required for formatsettings
|
|
clocale,
|
|
{$ENDIF}
|
|
// Not using Lazarus package as the user may be working with multiple versions
|
|
// Instead, add .. to unit search path
|
|
Classes, SysUtils, fpcunit, testregistry,
|
|
fpstypes, fpspreadsheet, fpsutils;
|
|
|
|
type
|
|
{ TSpreadMathTests }
|
|
//Write to xls/xml file and read back
|
|
TSpreadMathTests = class(TTestCase)
|
|
private
|
|
protected
|
|
procedure TestRound(InputValue: Double; Expected: Integer);
|
|
|
|
published
|
|
// Test whether "round" avoids Banker's rounding
|
|
procedure TestRound_plus15;
|
|
procedure Testround_minus15;
|
|
procedure TestRound_plus25;
|
|
procedure TestRound_minus25;
|
|
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TSpreadMathTests }
|
|
|
|
procedure TSpreadMathTests.TestRound(InputValue: Double; Expected: Integer);
|
|
var
|
|
book: TsWorkbook;
|
|
sheet: TsWorksheet;
|
|
readValue: String;
|
|
begin
|
|
book := TsWorkbook.Create;
|
|
try
|
|
sheet := book.AddWorksheet('Math');
|
|
sheet.WriteNumber(1, 1, InputValue, nfFixed, 0);
|
|
readValue := sheet.ReadAsText(1, 1);
|
|
|
|
CheckEquals(Expected, StrToInt(readValue),
|
|
'Rounding error, sheet "' + sheet.Name + '"')
|
|
finally
|
|
book.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TSpreadMathTests.TestRound_plus15;
|
|
begin
|
|
TestRound(1.5, 2);
|
|
end;
|
|
|
|
procedure TSpreadMathTests.TestRound_minus15;
|
|
begin
|
|
Testround(-1.5, -2);
|
|
end;
|
|
|
|
procedure TSpreadMathTests.TestRound_plus25;
|
|
begin
|
|
TestRound(2.5, 3);
|
|
end;
|
|
|
|
procedure TSpreadMathTests.Testround_minus25;
|
|
begin
|
|
TestRound(-2.5, -3);
|
|
end;
|
|
|
|
|
|
initialization
|
|
RegisterTest(TSpreadMathTests);
|
|
|
|
end.
|
|
|