assert_checkequal Проверка того, что вычисленное и ожидаемое значения равны.

## Синтаксис

                assert_checkequal ( computed , expected )
                flag = assert_checkequal ( computed , expected )
                [flag,errmsg] = assert_checkequal ( computed , expected )

## Аргументы

computed:

  результат вычисления

expected :

  ожидаемый результат

flag :

  логическое значение, `%t`, если вычисление равно ожиданию, `%f`, если нет.

errmsg :

  строковое значение, сообщение об ошибке. Если `flag==%t`, тогда `errormsg==""`. Если `flag==%f`, то `errmsg` содержит сообщение об ошибке.

## Описание

Работает молча, если `computed` и `expected` равны.

Для комплексных чисел: мы сравниваем сначала вещественные части. В случае равенства мы сравниваем мнимые части.

Сопоставляемые значения `Nan` всегда считаются равными.

`1/%z` и `2/(2*%z)` не равны: для времени Scilab не нормирует эквивалентные рациональные значения.

В контейнерах, сопоставляемые элементы `void` считаются равными.

Если сравнение показывает, что вычисленное равно ожидаемому, то

- если выходная переменная `errmsg` не используется, ошибка генерируется,

- если выходная переменная `errmsg` используется, то ошибка не генерируется.

## Примеры

Тесты с успехом:

    assert_checkequal ( %T , %T );
    [flag , errmsg] = assert_checkequal ( [%T %F], [%T %F] );
    assert_checkequal ( %nan , %nan );
    c = complex(1, %nan)
    assert_checkequal (c, c);
    assert_checkequal ( sparse(%nan) , sparse(%nan) );
    assert_checkequal ( 2:$-1, 2:$-1 );

    assert_checkequal ( ["abc" "" ascii([9 10 13])],  ["abc" "" ascii([9 10 13])] );
    assert_checkequal ( [gdf(), gda()], [gdf(), gda()]);

    assert_checkequal ( list() , list() );
    assert_checkequal ( list(1,,3), list(1,,3) );
    assert_checkequal ( list(1,,list(,4)), list(1,,list(,4)) );
    assert_checkequal ( list(%nan,,7) , list(%nan,,7) );

    sine = sin;
    assert_checkequal ( sin, sine );
    cosinus = cosd;
    assert_checkequal ( cosinus, cosd );
    assert_checkequal( iolib, iolib );

Тесты с провалом:

    assert_checkequal ( %F , %T );
    flag = assert_checkequal ( %F , %T );
    // No error produced :
    [flag , errmsg] = assert_checkequal ( %F , %T )

    assert_checkequal ( [1 2], [3 4] )
    assert_checkequal ( 1 , [2 3] )
    assert_checkequal ( 1 , "b" )
    assert_checkequal ( "b", "B" )
    assert_checkequal ( 1+%s, 1+%z )
    assert_checkequal ( 1/%s, 2/(2*%s) )

    assert_checkequal (list(2,,7), list(2,%F,8));
    assert_checkequal ( [gdf(), gda()], [gdf(), gdf()] );
    assert_checkequal ( sind, cosd );
    assert_checkequal ( iolib, corelib );

    ...
    --> assert_checkequal (list(2,,7), list(2,%F,8));
    at line    22 of function assert_generror   ( SCI\modules\..\assert_generror.sci line 33 )
    at line   178 of function assert_checkequal ( SCI\modules\..\assert_checkequal.sci line 190 )

    assert_checkequal: Assertion failed: expected(2)= F  while computed(2)= (void)

    --> assert_checkequal ( [gdf(), gda()], [gdf(), gdf()] );
    at line    22 of function assert_generror   ( SCI\modules\..\assert_generror.sci line 33 )
    at line   178 of function assert_checkequal ( SCI\modules\..\assert_checkequal.sci line 190 )

    assert_checkequal: Assertion failed: expected(2)= Figure(uid:55)  while computed(2)= Axes(uid:85)

    --> assert_checkequal ( sind, cosd );
    at line    22 of function assert_generror   ( SCI\modules\..\assert_generror.sci line 33 )
    at line    82 of function assert_checkequal ( SCI\modules\..\assert_checkequal.sci line 94 )

    assert_checkequal: Assertion failed: expected= cosd()  while computed= sind()

    --> assert_checkequal ( iolib, corelib );
    at line    22 of function assert_generror   ( SCI\modules\..\assert_generror.sci line 33 )
    at line    95 of function assert_checkequal ( SCI\modules\..\assert_checkequal.sci line 107 )

    assert_checkequal: Assertion failed: expected= lib@SCI\modules\core\macros\  while ..
                                         computed= lib@SCI\modules\io\macros\

## Литература

"Automated Software Testing for Matlab", Steven Eddins, 2009

## История

5.4.0 Введена функция
6.1.0

- Сравнение двух неявных списков, Scilab-функций, Scilab-библиотек, встроенных функций или графических дескрипторов теперь всегда возможны и и должным образом выполняются.
- В двух списках теперь поддерживаются элементы void и Nan и соответствующие элементы рассматриваются как равные.
- Nan теперь поддерживаются во входных разрежённых матрицах и считаются равными.
- При провалах тестов, когда на входе массивы, сообщение теперь указывает индекс первого несовпадающего элемента.

6.1.1 Соответствющие элементы NaN или void в простых или вложенных контейнерах теперь считаются равными.