From: Bram Date: Mon, 5 May 2008 20:03:32 +0000 (+0200) Subject: extra tests for t/op/range.t (was Re: [perl #53554] Range X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=bd1c7bd234f2a9333e663f56f79a09143b3a74b5;p=p5sagit%2Fp5-mst-13.2.git extra tests for t/op/range.t (was Re: [perl #53554] Range Message-ID: <20080505200332.pke1i5vu7gos8kc0@horde.wizbit.be> p4raw-id: //depot/perl@33791 --- diff --git a/t/op/range.t b/t/op/range.t index 6759f88..214c168 100755 --- a/t/op/range.t +++ b/t/op/range.t @@ -9,7 +9,7 @@ require 'test.pl'; use Config; -plan (115); +plan (135); is(join(':',1..5), '1:2:3:4:5'); @@ -341,4 +341,66 @@ foreach my $ii (~0, ~0+1, ~0+(~0>>4)) { ok($@, 'Lower bound rejected: ' . -$ii); } +# double/tripple magic tests +sub TIESCALAR { bless { value => $_[1], orig => $_[1] } } +sub STORE { $_[0]{store}++; $_[0]{value} = $_[1] } +sub FETCH { $_[0]{fetch}++; $_[0]{value} } +sub stores { tied($_[0])->{value} = tied($_[0])->{orig}; + delete(tied($_[0])->{store}) || 0 } +sub fetches { delete(tied($_[0])->{fetch}) || 0 } + +tie $x, "main", 6; + +my @foo; +@foo = 4 .. $x; +is(scalar @foo, 3); +is("@foo", "4 5 6"); +{ + local $TODO = "test for double magic with range operator"; + is(fetches($x), 1); +} +is(stores($x), 0); + +@foo = $x .. 8; +is(scalar @foo, 3); +is("@foo", "6 7 8"); +{ + local $TODO = "test for double magic with range operator"; + is(fetches($x), 1); +} +is(stores($x), 0); + +@foo = $x .. $x + 1; +is(scalar @foo, 2); +is("@foo", "6 7"); +{ + local $TODO = "test for double magic with range operator"; + is(fetches($x), 2); +} +is(stores($x), 0); + +@foo = (); +for (4 .. $x) { + push @foo, $_; +} +is(scalar @foo, 3); +is("@foo", "4 5 6"); +{ + local $TODO = "test for double magic with range operator"; + is(fetches($x), 1); +} +is(stores($x), 0); + +@foo = (); +for (reverse 4 .. $x) { + push @foo, $_; +} +is(scalar @foo, 3); +is("@foo", "6 5 4"); +{ + local $TODO = "test for double magic with range operator"; + is(fetches($x), 1); +} +is(stores($x), 0); + # EOF