Introducing a TimeLimit of 30 seconds in shrinking... for now
Introducing ShrinkerFactory::random() to allow configuration of Shrinker through properties defined on Eris\TestTrait
Default shrinking time limit is infinite
Extracted TimeLimit interface
Added end2end test for ShrinkingTimeLimit
Improving error message for shrinking time limit reached.

[11:09:40][giorgio@Bipbip:~/code/eris]$ vendor/bin/phpunit
examples/ShrinkingTimeLimitTest.php
PHPUnit 4.4.0 by Sebastian Bergmann.

Configuration read from /home/giorgio/code/eris/phpunit.xml

E
Reproduce with:
ERIS_SEED=1419329381688373 vendor/bin/phpunit
examples/ShrinkingTimeLimitTest.php

Time: 3.04 seconds, Memory: 4.25Mb

There was 1 error:

1) ShrinkingTimeLimitTest::testLengthPreservation
RuntimeException: Eris has reached the time limit for shrinking, here it
is presenting the simplest failure case.
If you can afford to spend more time to find a simpler failing input,
increase $this->shrinkingTimeLimit or set it to null to remove it.

/home/giorgio/code/eris/src/Eris/Shrinker/Random.php:58
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:73
/home/giorgio/code/eris/src/Eris/Quantifier/Evaluation.php:48
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:75
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:91
/home/giorgio/code/eris/examples/ShrinkingTimeLimitTest.php:35
/home/giorgio/code/eris/examples/ShrinkingTimeLimitTest.php:35

Caused by
PHPUnit_Framework_ExpectationFailedException: Concatenating
'V${~w/A;OEBDnC>93BO5A$u2,nFJ_Ib7L^6EmW_>{#ajE~%XASmbVcsaS:-3cnI1N_U=76Z39<}]<#7]U%@-g5m;OzN3ivD9VyVm01"IM~(i#>GWBgd+{SFKNs^9j#QB{)0-92Uf1\P3ywj=_OG[$l'Q`diLg<ncD}o]1FEA#tT|l@:Loa)rO0D1t/\\KK@oJ1M[Wq{YgQWUpq#`T+S$:w4/(pkR=-Cg=oCsb@NKp'!ax#CM-uPGndVuUBIrNkZk\'
to
'@>0j/6jp/l4[y+-BxpwoG;::i'tUbr6#1El@[X2iFEFAOSbID[:kvT'`Zz7=nL@!q-@NeQ9,v^LG20pVj+Cb^IC9EYV4'u4x$SGh&_s{?ACQP4)<?K}}tA8:zmM#d`zg5CP:$E7CeZs6m|Q.HO,=pDVk2%nudj]y//52SKT9&IOsF!#nO/-ARb.cg{ZMf9GtG[(z(\5.&c#Lc%;43GTd+aIq^%@F=f<dCC_J!sX&WZR<^lOq5%W?f!2E&QkB9((\Kf(K[_Q4:%Oxp~j'$CFiCX0I*{jC$q~OY(z5fMI"QwyCweIz)neLGutQq`tuRtE-{@Bbmjd?c^a[E,WMz=xC3nt&Ojz#_@/\`Q?O<%m!bP[(\3UWPOzc>ohlZco;%~veP75l;$l}SI'0\[g-+cpISZ7/?'JC&A*VX?CrB1qtYw&6TmC_Q4)&n@5.G^QL!Z$YxFL<V?2187Fk&iKW}T]ltqy<QKhR'k,!3X<iwMy0d@zj+GB){!tprn-E;uvBa$Bs\^]T,Xcpx_[$'},$}!spo"7,v.MY2oNmN,BZd'L]e(`k'lo&mcu]e.i];87M(d;Vp]2Ud]4Jdt7ka'pOjg.Qtw/10F]7+xl{W~R<\efBZ|.=%}lney@[rOk#tI9~B'{x&N6a4{%nx2,}1wlur.Qe]=gRf"R*)N$/'
gives
'V${~w/A;OEBDnC>93BO5A$u2,nFJ_Ib7L^6EmW_>{#ajE~%XASmbVcsaS:-3cnI1N_U=76Z39<}]<#7]U%@-g5m;OzN3ivD9VyVm01"IM~(i#>GWBgd+{SFKNs^9j#QB{)0-92Uf1\P3ywj=_OG[$l'Q`diLg<ncD}o]1FEA#tT|l@:Loa)rO0D1t/\\KK@oJ1M[Wq{YgQWUpq#`T+S$:w4/(pkR=-Cg=oCsb@NKp'!ax#CM-uPGndVuUBIrNkZk\@>0j/6jp/l4[y+-BxpwoG;::i'tUbr6#1El@[X2iFEFAOSbID[:kvT'`Zz7=nL@!q-@NeQ9,v^LG20pVj+Cb^IC9EYV4'u4x$SGh&_s{?ACQP4)<?K}}tA8:zmM#d`zg5CP:$E7CeZs6m|Q.HO,=pDVk2%nudj]y//52SKT9&IOsF!#nO/-ARb.cg{ZMf9GtG[(z(\5.&c#Lc%;43GTd+aIq^%@F=f<dCC_J!sX&WZR<^lOq5%W?f!2E&QkB9((\Kf(K[_Q4:%Oxp~j'$CFiCX0I*{jC$q~OY(z5fMI"QwyCweIz)neLGutQq`tuRtE-{@Bbmjd?c^a[E,WMz=xC3nt&Ojz#_@/\`Q?O<%m!bP[(\3UWPOzc>ohlZco;%~veP75l;$l}SI'0\[g-+cpISZ7/?'JC&A*VX?CrB1qtYw&6TmC_Q4)&n@5.G^QL!Z$YxFL<V?2187Fk&iKW}T]ltqy<QKhR'k,!3X<iwMy0d@zj+GB){!tprn-E;uvBa$Bs\^]T,Xcpx_[$'},$}!spo"7,v.MY2oNmN,BZd'L]e(`k'lo&mcu]e.i];87M(d;Vp]2Ud]4Jdt7ka'pOjg.Qtw/10F]7+xl{W~R<\efBZ|.=%}lney@[rOk#tI9~B'{x&N6a4{%nx2,}1wlur.Qe]=gRf"R*)N$/ERROR'

Failed asserting that 934 matches expected 929.

/home/giorgio/code/eris/examples/ShrinkingTimeLimitTest.php:34
/home/giorgio/code/eris/src/Eris/Quantifier/Evaluation.php:46
/home/giorgio/code/eris/src/Eris/Shrinker/Random.php:55
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:73
/home/giorgio/code/eris/src/Eris/Quantifier/Evaluation.php:48
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:75
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:91
/home/giorgio/code/eris/examples/ShrinkingTimeLimitTest.php:35
/home/giorgio/code/eris/examples/ShrinkingTimeLimitTest.php:35

FAILURES!
Tests: 1, Assertions: 3, Errors: 1.
Merge branch 'shrinking_time_limit'