From e7b831494ed2dfb7333f0cf59f91cd7f14f9f9b6 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 14 Nov 2009 20:53:44 +0100 Subject: [PATCH] +++: tests --- t/10-ranges.t | 88 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 64 insertions(+), 24 deletions(-) diff --git a/t/10-ranges.t b/t/10-ranges.t index d96ebb5..84f4dbb 100644 --- a/t/10-ranges.t +++ b/t/10-ranges.t @@ -33,33 +33,40 @@ subtest 'uniform alphanumeric' => sub { }; subtest 'context' => sub { - plan tests => 4; - my $index = List::Index->new([qw( - baa1 baa2 baa3 baaa bbc cbc daaa ea eaaa zed - )]) or return; - is_deeply($index->ranges({pagesize => 2, context => 0}), [ - qw(-baa. baa.-bbb bbc-daa. daaa-eaa. eaaa-) - ], 'no context'); - is_deeply($index->ranges({pagesize => 2}), [ - qw(-a b c d e-) - ], 'default context'); # context should be 1 - is_deeply($index->ranges({pagesize => 2, context => 2}), [ - qw(-a b-c d e-) - ], 'overlap'); # first item equals second due to large context - is_deeply($index->ranges({pagesize => 2, context => 0, length => 1}), [ - qw(-a b-c d e-) - ], 'single char'); - - #pp($index->ranges({pagesize => 2, context => 2, length => 1})); -}; - -subtest 'distribution' => sub { - plan tests => 3; + plan tests => 9; my $index = List::Index->new([qw( kkeg kl km kmlu knsy koxb kpeo kuaa kuab kuac - kuap kuaq kuq kux kzb lc lg lgu lgua lguc + kuapa kuq kur kux kzb lc lg lgu lgua lguc lguq lgur lgus lgx lka lkq lks lln llq llx )]) or return; + is_deeply( + $index->ranges({ pagesize=>10, context=>0, length=>5 }), + # ranges should match offsets exactly + [qw(-kuap. kuapa-lgup lguq-)], + 'no context' + ); + is_deeply( + $index->ranges({ pagesize=>10, context=>0 }), + # default length limits to 4 chars + [qw(-kuao kuap-lgup lguq-)], + 'default length' + ); + is_deeply( + $index->ranges({ pagesize=>10, context=>1 }), + # lookbehinds aren't shorter (kuacranges({ pagesize=>10, context=>2 }), + # allowed to advance to 'kur', but provides no benefits over 'kuq' + [qw(-kup kuq-lgup lguq-)], + 'minimal lookahead' + ); +} is_deeply( $index->ranges({ pagesize=>10, context=>3 }), # shorten 'kuap' to 'ku' because lookbehind is 'kp...' @@ -78,7 +85,40 @@ subtest 'distribution' => sub { # disallow backtracking of 'lguq' to 'lc' to prevent qw[-k l-] # so only lookahead (to 'lkq') remains [qw(-k l-lj lk-)], + 'no lookbehind after full lookahead' + ); + is_deeply( + $index->ranges({ pagesize=>10, context=>9 }), + # allow a single (10-9) entry (l-lf = lc) to remain + [qw(-k l-lf lg-)], 'lookbehind after full lookahead' ); -} + is_deeply( + $index->ranges({ pagesize=>10, context=>10 }), + # allow the last page to go back upto 'lc', replacing the 2nd page + [qw(-k l-)], + 'full overlap' + ); +}; + +subtest 'context' => sub { + plan tests => 4; + my $index = List::Index->new([qw( + baa1 baa2 baa3 baaa bbc cbc daaa ea eaaa zed + )]) or return; + is_deeply($index->ranges({pagesize => 2, context => 0}), [ + qw(-baa. baa.-bbb bbc-daa. daaa-eaa. eaaa-) + ], 'no context'); + is_deeply($index->ranges({pagesize => 2}), [ + qw(-a b c d e-) + ], 'default context'); # context should be 1 + is_deeply($index->ranges({pagesize => 2, context => 2}), [ + qw(-a b-c d e-) + ], 'overlap'); # first item equals second due to large context + is_deeply($index->ranges({pagesize => 2, context => 0, length => 1}), [ + qw(-a b-c d e-) + ], 'single char'); + + #pp($index->ranges({pagesize => 2, context => 2, length => 1})); +}; -- 2.30.0