The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl
#
# Some simple tests used while implementing new features.

use strict;
use warnings;
use Data::Dumper;
use Test::More tests => 5;

use SQL::Yapp
    table_prefix => 'T'
  , write_dialect => 'mysql'
  , quote_identifier => sub {
        join('.', map { "`$_`" } grep { defined($_) } @_)
    }
  , quote => sub {
        qq{'$_[0]'}
    }
  #, debug => 1
;

{
    my $c= sqlCheck{> 5};
    is($c, q{ > '5'});
}

{
    my $qp= SQL::Yapp::parse('Expr', q{ CASE a WHEN > 5 THEN 1 ELSE 2 END });
    my $q= eval $qp;
    is($q, q{CASE `a` WHEN  > '5' THEN '1' ELSE '2' END});
}

{
    my $c= sqlCheck{> 5};
    my $q= sqlExpr{ CASE a WHEN $c THEN 1 ELSE 2 END };
    is($q, q{CASE `a` WHEN  > '5' THEN '1' ELSE '2' END});
}

eval {
    my $c= sqlCheck{> 5};
    my $q= sqlExpr{ $c + 0 };
};
like($@, qr/but found Check/);

{
    my %a= (
        surname => 'Doe',
        age     => sqlCheck{ > 50 }
    );
    my $q= sql{ UPDATE t SET forename = 'Jonathan' WHERE {} AND %a };
    is($q, q{UPDATE `Tt` SET `forename` = 'Jonathan' }.
           q{WHERE (`age`  > '50') AND (`surname` = 'Doe')});
}

0;