#!../../perl -w $|=1; BEGIN { require Getopt::Long; if ($Getopt::Long::VERSION && $Getopt::Long::VERSION < 2.17) { print "# DBI::Shell needs Getopt::Long version 2.17 or later\n"; print "1..0\n"; exit 0; } # keep dumb Term::ReadKey happy $ENV{COLUMNS} = 80; $ENV{LINES} = 24; { local ($^W) = 0; delete $ENV{DBI_DSN}; delete $ENV{DBI_USER}; delete $ENV{DBI_PASS}; delete $ENV{DBISH_CONFIG}; } } my $LOAD_SQL=q{testtiming.sql}; my $SAVE_SQL=q{testtiming.tmp}; use Test::More tests => 77; BEGIN { use_ok( 'DBI::Shell' ); } #print "begin testing DBISH_CONFIG file\n"; $ENV{DBISH_CONFIG} = qq{dbish_config}; my $sh = DBI::Shell->new(qw(dbi:ExampleP:)); ok(defined $sh, "Create shell instance" ); #print "load plugins\n"; #ok( $sh->load_plugins, "Loading plugins" );; #print "do connect\n"; ok( ! $sh->do_connect( qw(dbi:ExampleP:)), "Connecting to dbi:ExampleP:"); #print "load test file $LOAD_SQL\n"; ok( ! $sh->do_load( $LOAD_SQL ), "Loading test file: $LOAD_SQL"); #print "execute\n"; ok( ! $sh->do_go, "Execute loaded statement" ); #print "timing\n"; ok( $sh->do_format( q{neat} ), "Change output format to neat"); ok( $sh->do_timing( q{off} ) == 0, "Turn timing OFF" ); ok( ($rv = $sh->do_timing) == 0, "Timing is OFF" ); ok( $sh->do_get, "Get the last statement executed" ); ok(!$sh->do_go, "Execute statement in buffer" ); ok( $sh->do_timing( q{on} ) == 1, "Turn timing ON" ); ok( ($rv = $sh->do_timing) == 1, "Timing is ON" ); ok( $sh->do_get, "Get the last statement executed" ); ok(!$sh->do_go, "Execute statement in buffer" ); ok( $sh->do_timing == 1, "Display timing status" ); ok( $sh->do_get, "Get the last statement executed" ); ok(!$sh->do_go, "Execute statement in buffer" ); my $rv = 0; ok( $sh->do_option( 'timing_timing' ) == 1, "Check options: timing_timing" ); ok( $sh->do_option( 'timing_timing=1' ) == 1, "Check options: timing_timing=1" ); ok( $sh->do_option( 'timing_timing=0' ) == 0, "Check options: timing_timing=0" ); ok( ($rv = $sh->do_timing) == 0, "Timing is OFF" ); ok( $sh->do_option( 'timing_timing=1' ) == 1, "Check options: timing_timing=1" ); ok( ($rv = $sh->do_timing) == 1, "Timing is ON" ); ok( $sh->do_timing( q{off} ) == 0, "Turn timing OFF" ); ok( ($rv = $sh->do_timing) == 0, "Test timing is OFF" ); ok( $sh->do_timing( q{on} ) == 1, "Turn timing ON" ); ok( ($rv = $sh->do_timing) == 1, "Test timing is ON" ); ok( $sh->do_timing( q{stop} ) == 0, "Turn timing stop" ); ok( ($rv = $sh->do_timing) == 0, "Test timing is OFF" ); ok( $sh->do_timing( q{start} ) == 1, "Turn timing start" ); ok( ($rv = $sh->do_timing) == 1, "Test timing is ON" ); ok( $sh->do_timing( q{end} ) == 0, "Turn timing end" ); ok( ($rv = $sh->do_timing) == 0, "Test timing is OFF" ); ok( $sh->do_timing( q{begin} ) == 1, "Turn timing begin" ); ok( ($rv = $sh->do_timing) == 1, "Test timing is ON" ); ok( $sh->do_option( 'timing_style' ) eq 'auto' , "Current timing style options: timing_style" ); foreach my $style (qw(bad auto noc nop none all)) { ok( $sh->do_option( "timing_style=$style" ) eq $style, "Current timing style options: timing_style=$style" ); ok( $sh->do_get, "Get the last statement executed" ); ok(!$sh->do_go, "Execute statement in buffer" ); } # User may set any format, however invalid formats are silently # ignored. ok( $sh->do_option( 'timing_format' ) eq '5.2f' , "Current timing format options: timing_format" ); foreach my $fmt (qw(5.2f 5.5f 5d 1s)) { ok( $sh->do_option( "timing_format=$fmt" ) eq $fmt, "Current timing style options: timing_style=$fmt" ); ok( $sh->do_get, "Get the last statement executed" ); ok(!$sh->do_go, "Execute statement in buffer" ); } ok( $sh->do_option( 'timing_format=5.2f' ) eq '5.2f', "Resetting current timing_format=5.2f" ); ok( $sh->do_option( 'timing_prefix' ) eq 'Elapsed: ', "Current timing prefix options: timing_prefix, Default" ); ok( $sh->do_option( 'timing_prefix="Timing: "' ) eq '"Timing: "', 'Current timing prefix options: timing_prefix="Timing: "' ); ok( $sh->do_option( 'timing_prefix=\"Timing: \"' ) eq '\"Timing: \"', 'Current timing prefix options: timing_prefix=\"Timing: \"' ); ok( $sh->do_option( "timing_prefix=\"Timing: \"" ) eq '"Timing: "', "Current timing prefix options: timing_prefix=\"Timing: \"" ); ok( $sh->do_option( "timing_prefix=Timing:" ) eq 'Timing:', "Current timing prefix options: timing_prefix=Timing:" ); ok( $sh->do_option( "timing_prefix=Timing: " ) eq 'Timing: ', "Current timing prefix options: timing_prefix=Timing: " ); ok( $sh->do_option( "timing_prefix='undef'" ) eq q{'undef'}, "Current timing prefix options: timing_prefix='undef'" ); ok( $sh->do_option( "timing_prefix" ) eq q{'undef'}, "Current timing prefix options: timing_prefix, undefined" ); ok(!$sh->do_disconnect, "Disconnect from source." ); $sh = undef; # print "unlinking $SAVE_SQL\n"; END { unlink $SAVE_SQL if -f $SAVE_SQL } __END__