Структуры данных модульного тестирования Perl - PullRequest
4 голосов
/ 08 марта 2011

Я ищу что-то вроде is_deeply или Test :: Deep's cmp_deeply, но это просто проверяет ключи / типы структуры данных, а не значения. Например, меня волнует, что ключ - это ссылка на массив скаляров, а не значения.

У кого-нибудь есть идеи? Я уверен, что я не первый, кто должен был разобраться в различных структурах данных. Я хочу протестировать, чтобы убедиться, что «подпись» структуры данных не повреждена, но меня больше не интересуют данные в ней или соответствие содержимого регулярному выражению и т. Д.

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Вы можете написать свои собственные тестовые функции довольно легко, используя функции, представленные в Test :: Builder и Test :: More .

Я написалtest, предполагая, что вы имеете в виду arrayref из non-reference , поскольку единственное, что вы можете сохранить в массиве, это скаляр.Вы можете внести коррективы.

use Test::Builder;
use Test::More 0.81_01;

sub is_arrayref_of_nonrefs
{
    my $value = shift;

    local $Test::Builder::Level = $Test::Builder::Level + 1;

    return Test::More::ok(0, 'value is an arrayref')
        if not ref $value or ref $value ne 'ARRAY';

    # fail if any references are found in the arrayref
    Test::More::ok((grep { ref } @$value), 'value is an arrayref of non-references');
}
1 голос
/ 09 марта 2011

Обычный Тест :: Ещё isa_ok Метод работает по ссылкам:

isa_ok( $array_ref, 'ARRAY' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...