2015-10-17 2 views
0

Я пишу тестовый пример с использованием блока fpc в lazarus, проводя некоторое исследование того, как ведет себя TDateTime.FailNotEquals ожидает, что AnsiString как второй параметр

Теперь вопрос заключается в том, почему аналог AssignEquals, который, как я полагаю, является FailNotEquals, не может принимать параметры как Word, Word как AssignEquals.

Вот мой код:

procedure TTestCase1.Test3; 
    var d1, d2: TDateTime; 
    var hour1, minute1, second1, ms1: Word; 
    var hour2, minute2, second2, ms2: Word; 
begin 
    d2:=Now; 
    Sleep(10); 
    d1:=Now; 

    DecodeTime(d1, hour1, minute1, second1, ms1); 
    DecodeTime(d2, hour2, minute2, second2, ms2); 

    //AssertEquals(ms1, ms2); // This test fails as expected 
    FailNotEquals(ms1, ms2); // Cant compile, param 2 must be AnsiString 

    AssertEquals(d1, d2); // How can this slip through... 
end; 

тест

+0

Вы понимаете сообщение об ошибке? Что такое подпись функции? Что говорят документы? –

+0

FWIW, мне интересно, что такое FailNotEquals. Похоже, это похоже на AssertEquals. Вы хотите AssertNotEqual, если он существует, и я подозреваю, что это не так. Утверждения в fpcunit кажутся ограниченными. –

+0

Нет, нет AssertNotEqual, есть ли тестовая структура, которая должна использоваться вместо fpcunit? –

ответ

1

FailNotEquals определяется в DUnitCompatibleInterface.inc как:

class procedure FailNotEquals(expected, actual: string; 
     msg: string = ''; errorAddr: Pointer = nil); virtual; 

Метод не перегружена, поэтому только строковые параметры принимаются.

Смежные вопросы