Verwende besser DUnitX, nicht mehr DUnit.
Das DUnit im Delphi 11.2 ist scheinbar 11 Jahre alt
und selbst
https://sourceforge.net/projects/dunit/ ist seit 8 Jahren tot.
Wobei DUnitX, im Delphi mitgeliefert, ist auch 7 Jahre alt
,
also besser gleich von
https://github.com/VSoftTechnologies/DUnitX/
ich wüsste jetzt nichtmal, wo man hier die Fehler melden sollte. (von
Emba erwarte icht keine Fehlerbehebung)
alleine diese eine Funktion:
Zitat von
BugReport:
bitte Delta beachten
oder Math.SameValue verwenden
Delphi-Quellcode:
procedure TAbstractTest.CheckEquals( expected,
actual : extended;
delta : extended;
msg : string = '');
begin
FCheckCalled := True;
if delta = 0 then
delta := DoubleResolution;
if not ((expected = Infinity) and (actual = Infinity)) then
if ((expected = Infinity) and (actual <> Infinity)) or
((expected <> Infinity) and (actual = Infinity)) or
(abs(expected-actual) > delta) then
FailNotEquals(FloatToStr(expected), FloatToStr(actual), msg, ReturnAddress);
end;
Aber falls wirklich jemand "genau" prüfen will, dann
Delphi-Quellcode:
procedure TAbstractTest.CheckEquals( expected,
actual : extended;
delta : extended;
msg : string = '');
begin
FCheckCalled := True;
if delta = NaN then
delta := DoubleResolution;
if not ((expected = Infinity) and (actual = Infinity)) then
if ((expected = Infinity) and (actual <> Infinity)) or
((expected <> Infinity) and (actual = Infinity)) or
(abs(expected-actual) > delta) then
FailNotEquals(FloatToStr(expected), FloatToStr(actual), msg, ReturnAddress);
end;
procedure TAbstractTest.CheckEquals(expected, actual: extended; msg: string);
begin
CheckEquals(expected, actual, NaN, msg);
end;
Zitat:
if not ((expected = Infinity) and (actual = Infinity)) then
Was ist mit NaN und NegInfinity?
Zitat:
Delphi-Quellcode:
procedure TAbstractTest.CheckEquals( expected,
actual : extended;
delta : extended;
msg : string = '');
const
Infinity = 1.0 / 0.0;
begin
Warum wird Infinity hier neu deklariert, anstatt System.Math.Infinity zu verwenden?