X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F01generate.t;h=2e9e7ef60e69c8ecaa6c5d99c8ad82dce837f4f6;hb=fc3b287d72ef4044505f48cffd4dd55c4db34ef2;hp=fd47578f15bc7dc012cafcc5ef995b5f858c9eb3;hpb=f2291bf6c34a555eab92ce280982f596918c2746;p=dbsrgits%2FSQL-Abstract.git diff --git a/t/01generate.t b/t/01generate.t index fd47578..2e9e7ef 100644 --- a/t/01generate.t +++ b/t/01generate.t @@ -538,9 +538,10 @@ my @tests = ( stmt_q => 'SELECT * FROM `test` WHERE ( `Y` = ( MAX( LENGTH( MIN ? ) ) ) )', bind => [[Y => 'x']], }, + # -func { func => 'select', - args => ['jeff', '*', + args => ['jeff', '*', { '-func' => ['substr', 1010, 5, 6,], }, ], stmt => 'SELECT * FROM jeff WHERE (substr(?, ?, ?))', @@ -549,10 +550,10 @@ my @tests = ( }, { func => 'select', - args => ['jeff', '*', + args => ['jeff', '*', { 'a' => { - -func => - [ 'foo', { -func => [ 'max', 'bar'], }, + -func => + [ 'foo', { -func => [ 'max', 'bar'], }, \['(SELECT crate FROM baz)'], ], }, @@ -569,6 +570,38 @@ my @tests = ( stmt_q => 'UPDATE `test` SET `b` = max(?) WHERE ((`a` = max(a)) AND (`b` = present(t, ?, ?)))', bind => [500, 'sophie', 30], }, + # -op + { + func => 'select', + args => ['jeff', '*', + { '-op' => ['=', 5, 5,], }, + ], + stmt => 'SELECT * FROM jeff WHERE (? = ?)', + stmt_q => 'SELECT * FROM `jeff` WHERE (? = ?)', + bind => [5, 5], + }, + { + func => 'select', + args => ['jeff', '*', + { 'a' => { + -op => + [ '-', { -op => ['+', 5, 6], }, + \['(SELECT crate FROM baz)'], + ], + }, + } + ], + stmt => 'SELECT * FROM jeff WHERE (( a = ( ? + ? ) - (SELECT crate FROM baz)))', + stmt_q => 'SELECT * FROM `jeff` WHERE (( `a` = ( ? + ? ) - (SELECT crate FROM baz)))', + bind => [5, 6], + }, + { + func => 'update', + args => ['test', {'b' => { -op => ['-', 500, 600]}}, { a => { -op => ['+', \'b', \'c']}, b => { -op => ['*', \'t', \'z', 30] },},], + stmt => 'UPDATE test SET b = ( ? - ? ) WHERE ( ( ( a = b + c ) AND (b = t * z * ?)))', + stmt_q => 'UPDATE `test` SET `b` = ( ? - ? ) WHERE ( ( ( `a` = b + c ) AND (`b` = t * z * ?)))', + bind => [500, 600, 30], + }, ); plan tests => scalar(grep { !$_->{warning_like} } @tests) * 2