The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 10;

use lib 'lib';
use t::data::QuoteSQL;

my $id = 6;
is([:sql|select * from Post|], 'select * from Post', 'constant sql');
is([:sql|select * from Post where $id = id|],
    "select * from Post where '6' = id", 'sql with a variable');
my $author = 'agentzh';
my $title = "Perl's quasiquoting \\:D//";
is([:sql|select * from Post where author = $author and title = $title |],
    "select * from Post where author = 'agentzh' and title = 'Perl''s quasiquoting \\\\:D//'", 'sql with a variable');

is([:sql|
    select *
    from Post
    where id
        = $id |],
    "select *     from Post     where id         = '6'",
    'multi-line sql');

is([:sql|select *
    from Post
    where id
        = $id |], "select *    from Post     where id         = '6'", 'multi-line sql');

is([:sql|select 1|] . [:sql|select 2|], 'select 1select 2', 'two quotes on a single line');
is([:sql|select 1|] . [:sql|select 2|] . [:sql|select 3|], 'select 1select 2select 3', '3 quotes on a single line');
is([:sql|select 1|] . [:sql|select 2|] . [:sql|select
    3|], "select 1select 2select    3", '3 quotes spanning 2 lines');

is([:sql|select 1|] . [:sql|select 2|] . [:sql|select
    3|] . [:sql|select 4|], "select 1select 2select    3select 4", '4 quotes spanning 2 lines');

is([:sql|select 1|] . [:sql|select 2|] . [:sql|select
    3|] . [:sql|select
    4|], "select 1select 2select    3select    4", '4 quotes spanning 3 lines');