From: Abigail Date: Thu, 22 Aug 2002 04:10:39 +0000 (-0700) Subject: Make cmpthese work as documented. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=8962dfd6c069786370901f53b09ae56ec61390dd;p=p5sagit%2Fp5-mst-13.2.git Make cmpthese work as documented. Message-ID: <20020822041039.A2089@ucan.foad.org> p4raw-id: //depot/perl@17774 --- diff --git a/lib/Benchmark.pm b/lib/Benchmark.pm index cda764f..5ba91902 100644 --- a/lib/Benchmark.pm +++ b/lib/Benchmark.pm @@ -196,7 +196,7 @@ Clear the cached time for COUNT rounds of the null loop. Clear all cached times. -=item cmpthese ( COUT, CODEHASHREF, [ STYLE ] ) +=item cmpthese ( COUNT, CODEHASHREF, [ STYLE ] ) =item cmpthese ( RESULTSHASHREF, [ STYLE ] ) @@ -412,7 +412,7 @@ use Exporter; clearcache clearallcache disablecache enablecache); %EXPORT_TAGS=( all => [ @EXPORT, @EXPORT_OK ] ) ; -$VERSION = 1.04; +$VERSION = 1.05; &init; @@ -713,7 +713,9 @@ sub timethese{ } sub cmpthese{ - my ($results, $style) = ref $_[0] ? @_ : ( timethese( @_[0,1,2] ), $_[2] ) ; + my ($results, $style) = + ref $_ [0] ? @_ + : (timethese (@_ [0, 1], @_ > 2 ? $_ [2] : "none"), $_ [2]); $style = "" unless defined $style; diff --git a/lib/Benchmark.t b/lib/Benchmark.t index d7533c3..60caf43 100644 --- a/lib/Benchmark.t +++ b/lib/Benchmark.t @@ -8,7 +8,7 @@ BEGIN { use warnings; use strict; use vars qw($foo $bar $baz $ballast); -use Test::More tests => 159; +use Test::More tests => 173; use Benchmark qw(:all); @@ -346,7 +346,7 @@ sub check_graph { { select(OUT); my $start = times; - my $chart = cmpthese( -0.1, { a => "++\$i", b => "\$i = sqrt(\$i++)" } ) ; + my $chart = cmpthese( -0.1, { a => "++\$i", b => "\$i = sqrt(\$i++)" }, "auto" ) ; my $end = times; select(STDOUT); ok (($end - $start) > 0.05, "benchmarked code ran for over 0.05 seconds"); @@ -364,6 +364,28 @@ sub check_graph { check_graph_vs_output ($chart, $got); } +# Not giving auto should suppress timethese results. +{ + select(OUT); + my $start = times; + my $chart = cmpthese( -0.1, { a => "++\$i", b => "\$i = sqrt(\$i++)" } ) ; + my $end = times; + select(STDOUT); + ok (($end - $start) > 0.05, "benchmarked code ran for over 0.05 seconds"); + + $got = $out->read(); + # Remove any warnings about having too few iterations. + $got =~ s/\(warning:[^\)]+\)//gs; + + unlike ($got, qr/running\W+a\W+b.*?for at least 0\.1 CPU second/s, + 'should not have title'); + # Remove the title + $got =~ s/.*\.\.\.//s; + unlike ($got, $default_pattern, 'should not find default format somewhere'); + like ($got, $graph_dissassembly, "Should find the output graph somewhere"); + check_graph_vs_output ($chart, $got); +} + { $foo = $bar = 0; select(OUT);