# use strict;
# use warnings;
use lib qw(lib);
use vars qw($db $m_sUser $host $password);
do('t/config.pl');
use DBI::Library;
my $m_oDatabase = new DBI::Library();
my %hash = (
            name     => $db,
            host     => $host,
            user     => $m_sUser,
            password => $password,
);
my $m_dbh = $m_oDatabase->initDB(\%hash);
my %execute = (
               title       => 'showTables',
               description => 'description',
               sql         => "show tables",
               return      => "fetch_array",
);
my %execute2 = (
                title       => 'truncateQuerys',
                description => 'description',
                sql         => "truncate querys",
                return      => "void",
);
my %execute3 = (
                title       => 'querys',
                description => 'description',
                sql         => "select * from querys ",
                return      => "fetch_array",
);
$m_oDatabase->addexecute(\%execute);
$m_oDatabase->addexecute(\%execute2);
$m_oDatabase->addexecute(\%execute3);
my @a1    = $m_oDatabase->useexecute("showTables");
my @a2    = $m_oDatabase->showTables();
my @a3    = $m_oDatabase->fetch_array('show tables');
my $hash  = $m_oDatabase->fetch_hashref('select *from querys where `title` = ? && `description` = ?', 'showTables', 'description');
my $hash2 = $m_oDatabase->fetch_hashref("select *from querys where `title` = 'showTables'");
my @aoh   = $m_oDatabase->fetch_AoH('select *from querys where `return` = ? && `description` = ?', 'fetch_array', 'description');
my @aoa   = $m_oDatabase->fetch_array('select *from querys;');
my $sth   = $m_dbh->prepare("select *from querys where `title` = 'showTables'");
$sth->execute() or warn $m_dbh->errstr;
my $ref = $sth->fetchrow_hashref;
$sth->finish();
use Test::More tests => 9;
ok($#a1 > 0);
ok($#a1         eq $#a2);
ok($#a2         eq $#a3);
ok($hash->{sql} eq $hash2->{sql});
ok($#aoh > 0);
$sth->finish();
$sth = $m_dbh->prepare("select *from querys");
$sth->execute();
ok(!$@);
$sth->finish();
my %execute4 = (
                title       => 'select',
                description => 'description',
                sql         => 'select * from <TABLE> where `title` = ?',
                return      => "fetch_hashref"
);
$m_oDatabase->addexecute(\%execute4);
$m_oDatabase->selectTable('querys');
my $showTables = $m_oDatabase->select('showTables');
ok($showTables->{sql} eq 'show tables');
my %execute5 = (
                title       => 'joins',
                description => 'description',
                sql         => 'select * from table_1 JOIN  table_2 ',
                return      => "fetch_hashref"
);
$m_oDatabase->addexecute(\%execute5);
my $ref2 = $m_oDatabase->joins(
                               {
                                identifier => {
                                               1 => 'news',
                                               2 => 'querys'
                                }
                               }
);
ok(ref $ref2 eq 'HASH');
$m_oDatabase->truncateQuerys();
ok($m_oDatabase->tableLength('querys') == 0);
