<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">Приветствую!<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">  Прошу прощения за кривой сабж.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-01-10 0:41 GMT+02:00 Konstantin S. Uvarin <span dir="ltr"><<a href="mailto:khedin@gmail.com" target="_blank">khedin@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 style="font-family:monospace,monospace">Приветствую!<br></div><div style="font-family:monospace,monospace"><br>  На Новый год Дед мороз подарил мне большую коробку кодинга, так что я запилил ещё один модуль, о котором давно мечтал. Суть такова:<br><br></div><div style="font-family:monospace,monospace"># ... somewhere in production code<br></div><div style="font-family:monospace,monospace">use Test::Refute::Contract;<br><br></div><div style="font-family:monospace,monospace">my $c = Test::Refute::Contract->new;<br></div><div style="font-family:monospace,monospace">$c->is( $foo, $bar, "vars match" );<br></div><div style="font-family:monospace,monospace">$c->like( $user_input, qr/f?o?r?m?a?t?/;<br></div><div style="font-family:monospace,monospace"><br></div><div style="font-family:monospace,monospace">if ($c->get_pass) {<br></div><div style="font-family:monospace,monospace">    # proceed...<br></div><div style="font-family:monospace,monospace">} else {<br></div><div style="font-family:monospace,monospace">    # no go<br></div><div style="font-family:monospace,monospace">    warn $c->get_tap; # ok 1 - foo\nnot ok 2 - bar\n1..2<br></div><div style="font-family:monospace,monospace">};<br></div><div style="font-family:monospace,monospace"><br></div><div>​  Сами проверки совпадают с таковыми в Test::More, плюс можно добавлять свои и/или расширять сам класс контракта. ​</div><br><div>​Также имеется конструкция <br><br>$c->refute( $what_went_wrong, $human_explanation);<br><br> - которая, собственно, и используется для расширения. assert, вывернутый наизнанку: если первый аргумент false (null в случае плюсов/джавы) - считаем, что всё working as expected; если же там пришло что-то - то громко жалуемся, сообщая и объяснение, и причину провала. <br><br>  Выглядит немножко контр-интуитивно, но ​если освоить именно такую форму, на нормальный assert без слёз уже смотреть не получается. <br><br></div><div>  Ннннадо кому?<br><br>  <a href="https://github.com/dallaylaen/perl-test-refute" target="_blank">https://github.com/dallaylaen/<wbr>perl-test-refute</a><span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><br>-- <br><div class="m_7238995301994861987gmail_signature"><div dir="ltr"><div><div><div><font face="monospace,monospace">Konstantin S. Uvarin<br></font></div><font face="monospace,monospace">jabber: see <from><br></font></div><font face="monospace,monospace">skype: kuvarin<br></font></div><font face="monospace,monospace"><a href="http://github.com/dallaylaen" target="_blank">http://github.com/dallaylaen</a><br></font></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div><div><font face="monospace,monospace">Konstantin S. Uvarin<br></font></div><font face="monospace,monospace">jabber: see <from><br></font></div><font face="monospace,monospace">skype: kuvarin<br></font></div><font face="monospace,monospace"><a href="http://github.com/dallaylaen" target="_blank">http://github.com/dallaylaen</a><br></font></div></div>
</div></div>