Тестирование подпрограмм обработки массивов
Материал из Вики ИТ мехмата ЮФУ
Предположим, нам следует протестировать функцию MakeOddArr(N), которая создаёт массив из N первых нечётных натуральных чисел. Результирующие тесты должны выглядеть так
Assert(IntArrsAreEqual(MakeOddArr(0), new integer[0]));
Assert(IntArrsAreEqual(MakeOddArr(1), Arr(1)));
Assert(IntArrsAreEqual(MakeOddArr(3), Arr(1, 3, 5)));
Где функция IntArrsAreEqual позволяет поэлементно сравнить два массива: она возвращает истину тогда и только тогда, когда они имеют одинаковую длину и состоят из одних и тех же элементов, расположенных в одном порядке. На занятиях эта функция обычно выдаётся в заготовках тестирующих модулей, но для полноты приведём здесь её реализацию.
/// Проверяет массивы a, b на равенство и возвращает
/// истину, если они равны
function IntArrsAreEqual(a, b: IntArr): boolean;
begin
Assert(a <> nil, 'a is nil');
Assert(b <> nil, 'b is nil');
// сравниваем длины
Result := a.Length = b.Length;
if Result then
begin
// здесь result is true
var i := 0;
while (i < a.Length) and (a[i] = b[i]) do
i += 1;
// если не дошли до конца, значит какие-то элементы не совпадают
if i < a.Length then
Result := false;
end;
end;