From: Matt S Trout Date: Mon, 1 Apr 2019 01:30:25 +0000 (+0000) Subject: make 05in_between handle die() usefully X-Git-Tag: v2.000000~3^2~303 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=33ee32dbe4e7d47074909d4afedb76d4cf7f3149;p=dbsrgits%2FSQL-Abstract.git make 05in_between handle die() usefully --- diff --git a/t/05in_between.t b/t/05in_between.t index 35aea79..3163aa6 100644 --- a/t/05in_between.t +++ b/t/05in_between.t @@ -294,7 +294,18 @@ my @in_between_tests = ( { where => { -between => [42, 69] }, throws => qr/Fatal: Operator 'BETWEEN' requires/, - test => 'Top level -between', + test => 'Top level -between with broken args', + }, + { + where => { + -between => [ + { -op => [ '+', { -ident => 'foo' }, 2 ] }, + 3, 4 + ], + }, + stmt => ' WHERE (foo + ? BETWEEN ? AND ?)', + bind => [ 2, 3, 4 ], + test => 'Top level -between with useful LHS', }, ); @@ -313,17 +324,19 @@ for my $case (@in_between_tests) { } else { my ($stmt, @bind); - warnings_are { - ($stmt, @bind) = $sql->where($case->{where}); - } [], "$label gives no warnings"; - - is_same_sql_bind( - $stmt, - \@bind, - $case->{stmt}, - $case->{bind}, - "$label generates correct SQL and bind", - ) || diag dumper ({ where => $case->{where}, exp => $sql->_expand_expr($case->{where}) }); + lives_ok { + warnings_are { + ($stmt, @bind) = $sql->where($case->{where}); + } [], "$label gives no warnings"; + + is_same_sql_bind( + $stmt, + \@bind, + $case->{stmt}, + $case->{bind}, + "$label generates correct SQL and bind", + ) || diag dumper ({ where => $case->{where}, exp => $sql->_expand_expr($case->{where}) }); + } || diag dumper ({ where => $case->{where}, exp => $sql->_expand_expr($case->{where}) }); } } }