Тестирование подпрограмм обработки массивов — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) (Новая страница: «Предположим, нам следует протестировать функцию <tt>MakeOddArr(N)</tt>, которая создаёт массив из …») |
Ulysses (обсуждение | вклад) (MakeIntArr → Arr) |
||
Строка 1: | Строка 1: | ||
− | Предположим, нам следует протестировать функцию <tt>MakeOddArr(N)</tt>, которая создаёт массив из ''N'' первых нечётных натуральных чисел. | + | Предположим, нам следует протестировать функцию <tt>MakeOddArr(N)</tt>, которая создаёт массив из ''N'' первых нечётных натуральных чисел. Результирующие тесты должны выглядеть так |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang="pascal"> | <source lang="pascal"> | ||
− | + | Assert(IntArrsAreEqual(MakeOddArr(0), new integer[0])); | |
+ | Assert(IntArrsAreEqual(MakeOddArr(1), Arr(1))); | ||
+ | Assert(IntArrsAreEqual(MakeOddArr(3), Arr(1, 3, 5))); | ||
</source> | </source> | ||
− | + | Где функция <tt>IntArrsAreEqual</tt> позволяет поэлементно сравнить два массива: она возвращает истину тогда и только тогда, когда они имеют одинаковую длину и состоят из одних и тех же элементов, расположенных в одном порядке. На занятиях эта функция обычно выдаётся в заготовках тестирующих модулей, но для полноты приведём здесь её реализацию. | |
− | |||
− | |||
− | |||
− | |||
<source lang="pascal"> | <source lang="pascal"> | ||
Строка 49: | Строка 29: | ||
end; | end; | ||
end; | end; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
[[Категория:Основы программирования]] | [[Категория:Основы программирования]] |
Текущая версия на 10:31, 7 декабря 2016
Предположим, нам следует протестировать функцию 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;