Тестирование подпрограмм обработки массивов

Материал из Вики ИТ мехмата ЮФУ
Версия от 09:46, 28 ноября 2015; Ulysses (обсуждение | вклад) (Новая страница: «Предположим, нам следует протестировать функцию <tt>MakeOddArr(N)</tt>, которая создаёт массив из …»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Предположим, нам следует протестировать функцию 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)));