The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# This driver should check if 'ChopBlanks' works.

use strict;
use warnings;
use Test::More;

BEGIN { use_ok ("DBI") }
do "t/lib.pl";

my @tbl_def = (
    [ "id",   "INTEGER",  4, &COL_NULLABLE ],
    [ "name", "CHAR",    64, &COL_NULLABLE ],
    );

ok (my $dbh = Connect (),			"connect");

ok (my $tbl = FindNewTable ($dbh),		"find new test table");

like (my $def = TableDefinition ($tbl, @tbl_def),
	qr{^create table $tbl}i,		"table definition");
ok ($dbh->do ($def),				"create table");

my @rows = (
    [ 1, "NULL",	],
    [ 2, " ",		],
    [ 3, " a b c ",	],
    [ 4, " a \r ",	],
    [ 5, " a \t ",	],
    [ 6, " a \n ",	],
    );
ok (my $sti = $dbh->prepare ("insert into $tbl (id, name) values (?, ?)"), "prepare ins");
ok (my $sth = $dbh->prepare ("select id, name from $tbl where id = ?"),    "prepare sel");
foreach my $row (@rows) {
    ok ($sti->execute (@$row),			"insert $row->[0]");

    $sth->{ChopBlanks} = 0;
    ok (1,					"ChopBlanks 0");
    ok ($sth->execute ($row->[0]),		"execute");
    ok (my $r = $sth->fetch,			"fetch ($row->[0]:1)");
    is_deeply ($r, $row,			"content ($row->[0]:1)");
    
    $sth->{ChopBlanks} = 1;
    ok (1,					"ChopBlanks 1");
    ok ($sth->execute ($row->[0]),		"execute");
    s/ +$// for @$row;
    if ($DBD::File::VERSION <= 0.38) {
	s/\s+$// for @$row;	# Bug fixed in new DBI
	}
    ok ($r = $sth->fetch,			"fetch ($row->[0]:2)");
    is_deeply ($r, $row,			"content ($row->[0]:2)");
    }

ok ($sti->finish,				"finish sti");
undef $sti;
ok ($sth->finish,				"finish sth");
undef $sth;

ok ($dbh->do ("drop table $tbl"),		"drop table");
ok ($dbh->disconnect,				"disconnect");

done_testing ();