use strict;
use warnings;

use SQL::Steno;

use Test::More tests => 9;



# Fake DBI
sub test($$;$) {
    local $_ = $_[0];
    &SQL::Steno::convert;
    is $_, $_[1], $_[2] || $_[0];
}

test ':d a,b,c;t;i>5', 'select distinct a,b,c from t where i>5';

test ':q+0', 'select date_format(now()-interval mod(month(now())+11,3) month,"%Y-%m-01")';

test ';tabloid:ob2d5a9', 'select * from tabloid order by 2 desc, 5 asc, 9';

test q+:\;\#(1; a'a;	b;c), :\ !%&&(a b  c), b i\ "#(1 a"a b c), c i\ [#(1 a b c), d ni\{#(1,a,b,c)+,
    q!select 1,' a''a','	b','c', a&&b&&c, b in(1,"a""a","b","c"), c in(1,[a],[b],[c]), d not in(1,{a},{b},{c})!;

for my $repl ( ["'"], ['"'], ['`'], ['[', ']'], 0 ) {
     local $_ = ':j {:l} :j, {:l}}:l} :j, {:l\}:l} :j'; # bogus steno just for seeing that no conversion happens inside quotes
     if( $repl ) {
	 s/\{/$repl->[0]/g;
	 s/\}/$repl->[1]||$repl->[0]/eg;
     }
     my $in = $_;
     s/:j/join/g;
     test $in, "select $_";
}
#test 'ins tabloid;a=3', 'insert tabloid set a=3';
