package SQL_OOP_CpmprehensiveTest;
use strict;
use warnings;
use base 'Test::Class';
use Test::More;
use SQL::OOP;
use SQL::OOP::Select;
__PACKAGE__->runtests;
sub to_string_twice : Test(2) {
my $a = SQL::OOP::Base->new("a");
is($a->to_string, 'a');
is($a->to_string, 'a');
}
sub array_to_string_twice : Test(2) {
my $a = SQL::OOP::Array->new("a")->set_sepa(',');
is($a->to_string, 'a');
is($a->to_string, 'a');
}
sub array_to_string_twice2 : Test(2) {
my $a = SQL::OOP::Array->new(SQL::OOP::Base->new('a'), SQL::OOP::Base->new('b'))->set_sepa(', ');
is($a->to_string, 'a, b');
is($a->to_string, 'a, b');
}
sub select_to_string_twice1 : Test(2) {
my $select = SQL::OOP::Select->new();
$select->set(
$select->ARG_FIELDS => 'a',
$select->ARG_FROM => 'b',
);
my $a = SQL::OOP::Array->new($select)->set_sepa(', ');
is($a->to_string, 'SELECT a FROM b');
is($a->to_string, 'SELECT a FROM b');
}
sub select_to_string_twice2 : Test(2) {
my $select = SQL::OOP::Select->new();
$select->set(
$select->ARG_FIELDS => 'a',
$select->ARG_FROM => SQL::OOP::Base->new('b'),
);
my $a = SQL::OOP::Array->new($select)->set_sepa(', ');
is($a->to_string, 'SELECT a FROM b');
is($a->to_string, 'SELECT a FROM b');
}
sub select_to_string_twice3 : Test(2) {
my $select = SQL::OOP::Select->new();
$select->set(
$select->ARG_FIELDS => 'a',
$select->ARG_FROM => SQL::OOP::Array->new('b')->set_sepa(''),
);
is($select->to_string, 'SELECT a FROM b');
is($select->to_string, 'SELECT a FROM b');
}
sub select_to_string_twice4 : Test(1) {
my $select = SQL::OOP::Select->new();
$select->set(
$select->ARG_FIELDS => 'a',
$select->ARG_FROM => 'b',
);
my $select2 = SQL::OOP::Select->new();
$select2->set(
$select2->ARG_FIELDS => 'a',
$select2->ARG_FROM => $select,
);
is($select2->to_string, 'SELECT a FROM (SELECT a FROM b)');
}
sub compress_sql {
my $sql = shift;
$sql =~ s/[\s\r\n]+/ /gs;
$sql =~ s/[\s\r\n]+$//gs;
$sql =~ s/\(\s/\(/gs;
$sql =~ s/\s\)/\)/gs;
return $sql;
}