Тестирование подпрограмм обработки массивов — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) (Новая страница: «Предположим, нам следует протестировать функцию <tt>MakeOddArr(N)</tt>, которая создаёт массив из …») |
(нет различий)
|
Версия 09:46, 28 ноября 2015
Предположим, нам следует протестировать функцию MakeOddArr(N), которая создаёт массив из N первых нечётных натуральных чисел.
Шаг 1: создание эталонных массивов
Рассмотрим функцию MakeIntArr для создания массива из заданных элементов — аргументов функции.
/// Конструирует и возвращает массив, состоящий
/// из целых чисел-аргументов функции
function MakeIntArr(params args: array of integer): IntArr;
begin
result := new integer[args.Length];
for var i := 0 to args.Length - 1 do
result[i] := args[i];
end;
Она позволяет легко создать массив из нужных элементов. Например, вызов
var myOddArr := MakeIntArr(1, 3, 5);
создает массив myOddArr, состоящий из трёх элементов: 1, 3, 5.
Шаг 2: сравнение содержимого массивов на равенство
Функция 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;
Результат
Функцию сравнения массивов можно использовать для написания тестов. Пример тестов для функции MakeOddArr, как показано ниже.
Assert(IntArrsAreEqual(MakeOddArr(0), MakeIntArr));
Assert(IntArrsAreEqual(MakeOddArr(1), MakeIntArr(1)));
Assert(IntArrsAreEqual(MakeOddArr(3), MakeIntArr(1, 3, 5)));