<div dir="ltr"><div><div><div><div><div><div><div>Спасибо Акжан и Виктор за ваши варианты.<br><br>Вообщем использовал обе идеи и добавил, что-то от себя.<br>1) использовал именованные параметры для ясности<br>2) Завернул в функцию<br>3) Используем номера строк для нахождения failing case<br><br></div><div>Получилось в итоге.<br></div><div>=========================<br></div>test_case(<br></div>   input => "input 1",<br></div>   output => "result 1",<br>); <br>...<br></div><div>test_case(<br>   input => "input 2",<br>   output => "result 2",<br>);<br><br></div><div>sub test_case{<br>     <span>my $tb = Test::Builder->new;<br>     ...<br></span></div><div><span>      $tb->is_eq( ... );<br></span></div><div>};<br></div><div>=========================<br></div></div></div></div><br></div><div class="gmail_extra"><br><div class="gmail_quote">30 июня 2016 г., 20:21 пользователь Гришаев Анатолий <span dir="ltr"><<a href="mailto:agrishaev@gmail.com" target="_blank">agrishaev@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Не совсем эквивалентно теряется информация о строке в которой определен тест<br><br></div>Можно твой вариант улучшить чуть-чуть<br><br></div>вместо <br>.............<span class=""><br>sub test_case {<br>
  my ($want_result,  $input) = @_;<br>
</span><span><span class=""><br>
  my $r = my_func($input)<br>
  ok($r)<br>
  is($r->string, $want_result, "parse $input")<br>
}<br></span>..........................<br><br></span></div><span>Лучше писать<br>////////////////////<br></span><br><span><span class="">sub test_case {<br>
  my ($want_result,  $input) = @_;<br></span>+my $tb = Test::Builder->new;<br><span>
  my $r = my_func($input)<br>
  $tb->ok($r)<br>
  -is($r->string, $want_result, "parse $input")<br></span></span></div><span><span>  +$tb->is_eq(</span></span><span><span>$r->string, $want_result, "parse $input");</span></span><div><span><span>
}</span><br></span><div><div><div>/////////////////////<br><br></div><div>Я от подобного варианта ушел, не смог заставить писать в таком стиле, из-за собственных требований к красоте.<br><br></div><div><br></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">30 июня 2016 г., 19:53 пользователь Victor Efimov <span dir="ltr"><<a href="mailto:victor@vsespb.ru" target="_blank">victor@vsespb.ru</a>></span> написал:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">или<br>
я переодически делаю вместо<br>
===<br>
<span>my ($want_result,  $input) = ( "вход 1", "выход 1")<br>
<br>
my $r = my_func($input)<br>
ok($r)<br>
is($r->string, $want_result, "parse $input")<br>
</span>===<br>
<br>
так:<br>
<br>
===<br>
sub test_case {<br>
  my ($want_result,  $input) = @_;<br>
<span><br>
  my $r = my_func($input)<br>
  ok($r)<br>
  is($r->string, $want_result, "parse $input")<br>
}<br>
<br>
</span>test_case( "вход 1", "выход 1");<br>
test_case( "вход 2", "выход 2");<br>
test_case( "вход 3", "выход 3");<br>
test_case( "вход 4", "выход 4");<br>
===<br>
<br>
что-то в общем-то эквивалентно готовому хэшу с вход-выход<br>
<br>
30 июня 2016 г., 19:46 пользователь Akzhan Abdulin<br>
<<a href="mailto:akzhan.abdulin@gmail.com" target="_blank">akzhan.abdulin@gmail.com</a>> написал:<br>
<div><div>> оно?<br>
><br>
> <a href="https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t" rel="noreferrer" target="_blank">https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t</a><br>
><br>
> 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий <<a href="mailto:agrishaev@gmail.com" target="_blank">agrishaev@gmail.com</a>><br>
> написал:<br>
>><br>
>> Добрый день Moscow PM!<br>
>><br>
>><br>
>> Пишу тесты для сложной функции-монстра<br>
>><br>
>> На вход принимает строку  и на выход "почти" строку.<br>
>><br>
>><br>
>> Сейчас тесты выглядят так<br>
>> ////////////////////////////<br>
>> my ($want_result,  $input) = ( "вход 1", "выход 1")<br>
>><br>
>> my $r = my_func($input)<br>
>> ok($r)<br>
>> is($r->string, $want_result, "parse $input")<br>
>><br>
>> my ($want_result,  $input) = ( "вход 2", "выход 2")<br>
>><br>
>> my $r = my_func($input)<br>
>> ok($r)<br>
>> is($r->string, $want_result, "parse $input")<br>
>> //////////////////////////<br>
>><br>
>> Получается куча повторяющего кода, в котором теряется суть<br>
>><br>
>> Можно ли этого избежать и писать более красиво?<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Moscow.pm mailing list<br>
>> <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
>><br>
><br>
><br>
> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
><br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div></div></div><br></div>
</blockquote></div><br></div>