Subject: | List::Compare::Functional::is_LsubsetR: incorrect results in v0.50 |

When file 50_lcf_subset.t (attached) is placed in the 't/' subdirectory and run against recently uploaded v0.50 of List::Compare::Functional, test failures emerge as shown in attachment.
The object-oriented interface does not appear to be adversely affected, as can be seen by running 49_lc_subset.t (also attached).

Subject: | 49_lc_subset.t |

# perl
#$Id$
# 50_lcf_subset.t
use strict;
use Test::More qw(no_plan); # tests => 51;
use List::Compare;
my @a0 = ( qw| alpha | );
my @a1 = ( qw| alpha beta | );
my @a2 = ( qw| alpha beta gamma | );
my ($lc, $LR, $RL);
$lc = List::Compare->new( \@a0, \@a1 );
$LR = $lc->is_LsubsetR();
ok($LR, "simple: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "simple: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "simple: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "simple: right is not subset of left");
$lc = List::Compare->new( '-u', \@a0, \@a1 );
$LR = $lc->is_LsubsetR();
ok($LR, "simple unsorted: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "simple unsorted: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "simple unsorted: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "simple unsorted: right is not subset of left");
$lc = List::Compare->new( '--unsorted', \@a0, \@a1 );
$LR = $lc->is_LsubsetR();
ok($LR, "simple unsorted long: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "simple unsorted long: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "simple unsorted long: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "simple unsorted long: right is not subset of left");
$lc = List::Compare->new( { lists => [ \@a0, \@a1 ] } );
$LR = $lc->is_LsubsetR();
ok($LR, "lists: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "lists: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "lists: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "lists: right is not subset of left");
$lc = List::Compare->new( { lists => [ \@a0, \@a1 ], unsorted => 1 } );
$LR = $lc->is_LsubsetR();
ok($LR, "lists: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "lists: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "lists: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "lists: right is not subset of left");
$lc = List::Compare->new( '-a', \@a0, \@a1 );
$LR = $lc->is_LsubsetR();
ok($LR, "simple accelerated: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "simple accelerated: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "simple accelerated: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "simple accelerated: right is not subset of left");
$lc = List::Compare->new( '--accelerated', \@a0, \@a1 );
$LR = $lc->is_LsubsetR();
ok($LR, "simple accelerated long: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "simple accelerated long: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "simple accelerated long: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "simple accelerated long: right is not subset of left");
$lc = List::Compare->new( { lists => [ \@a0, \@a1 ], accelerated => 1 } );
$LR = $lc->is_LsubsetR();
ok($LR, "lists: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "lists: left is subset of right");
$RL = $lc->is_RsubsetL();
ok(! $RL, "lists: right is not subset of left");
$RL = $lc->is_BsubsetA();
ok(! $RL, "lists: right is not subset of left");
$lc = List::Compare->new( \@a0, \@a1, \@a2 );
$LR = $lc->is_LsubsetR();
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_LsubsetR(0,1);
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_LsubsetR(1,2);
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_LsubsetR(0,2);
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_AsubsetB();
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_AsubsetB(0,1);
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_AsubsetB(1,2);
ok($LR, "multiple: left is subset of right");
$LR = $lc->is_AsubsetB(0,2);
ok($LR, "multiple: left is subset of right");

Subject: | 50_lcf_subset.t |

# perl
#$Id$
# 50_lcf_subset.t
use strict;
use Test::More qw(no_plan); # tests => 51;
use List::Compare::Functional qw(is_LsubsetR is_RsubsetL);
my @a0 = ( qw| alpha | );
my @a1 = ( qw| alpha beta | );
my @a2 = ( qw| alpha beta gamma | );
my ($LR, $RL);
$LR = is_LsubsetR( [ \@a0, \@a1 ] );
ok($LR, "simple: left is subset of right");
$RL = is_RsubsetL( [ \@a0, \@a1 ] );
ok(! $RL, "simple: right is not subset of left");
$LR = is_LsubsetR( [ \@a1, \@a0 ] );
ok(! $LR, "simple: left is not subset of right");
$RL = is_RsubsetL( [ \@a1, \@a0 ] );
ok($RL, "right is subset of left");
$LR = is_LsubsetR( { lists => [ \@a0, \@a1 ] } );
ok($LR, "hashref lists: left is subset of right");
$RL = is_RsubsetL( { lists => [ \@a0, \@a1 ] } );
ok(! $RL, "hashref lists: right is not subset of left");
$LR = is_LsubsetR( { lists => [ \@a1, \@a0 ] } );
ok(! $LR, "hashref lists: left is not subset of right");
$RL = is_RsubsetL( { lists => [ \@a1, \@a0 ] } );
ok($RL, "right is subset of left");
$LR = is_LsubsetR( [ \@a0, \@a1 ], [ 0,1 ] );
ok($LR, "2 indices arrayref: left is subset of right");
$LR = is_LsubsetR( [ \@a1, \@a0 ], [ 0,1 ] );
ok(! $LR, "2 indices arrayref: left is not subset of right");
$LR = is_LsubsetR( [ \@a0, \@a1, \@a2 ], [ 1,2 ] );
ok($LR, "3 indices arrayref: left is subset of right");
$LR = is_LsubsetR( [ \@a2, \@a1, \@a0 ], [ 1,2 ] );
ok(! $LR, "3 indices arrayref: left is not subset of right");
$LR = is_LsubsetR( { lists => [ \@a0, \@a1 ], pair => [ 0,1 ] } );
ok($LR, "lists pair 2 indices: left is subset of right");
$LR = is_LsubsetR( { lists => [ \@a1, \@a0 ], pair => [ 0,1 ] } );
ok(! $LR, "lists pair 2 indices: left is not subset of right");
$LR = is_LsubsetR( { lists => [ \@a0, \@a1, \@a2 ], pair => [ 1,2 ] } );
ok($LR, "lists pair 3 indices: left is subset of right");
$LR = is_LsubsetR( { lists => [ \@a2, \@a1, \@a0 ], pair => [ 1,2 ] } );
ok(! $LR, "lists pair 3 indices: left is not subset of right");

Subject: | lcf_is_LsubsetR.v0.50.failures.txt |

$ prove -vb t/50_lcf_subset.t
t/50_lcf_subset.t ..
not ok 1 - simple: left is subset of right
ok 2 - simple: right is not subset of left
ok 3 - simple: left is not subset of right
ok 4 - right is subset of left
not ok 5 - hashref lists: left is subset of right
ok 6 - hashref lists: right is not subset of left
ok 7 - hashref lists: left is not subset of right
ok 8 - right is subset of left
not ok 9 - 2 indices arrayref: left is subset of right
ok 10 - 2 indices arrayref: left is not subset of right
not ok 11 - 3 indices arrayref: left is subset of right
# Failed test 'simple: left is subset of right'
# at t/50_lcf_subset.t line 15.
# Failed test 'hashref lists: left is subset of right'
# at t/50_lcf_subset.t line 28.
# Failed test '2 indices arrayref: left is subset of right'
# at t/50_lcf_subset.t line 41.
# Failed test '3 indices arrayref: left is subset of right'
# at t/50_lcf_subset.t line 47.
ok 12 - 3 indices arrayref: left is not subset of right
not ok 13 - lists pair 2 indices: left is subset of right
ok 14 - lists pair 2 indices: left is not subset of right
not ok 15 - lists pair 3 indices: left is subset of right
# Failed test 'lists pair 2 indices: left is subset of right'
# at t/50_lcf_subset.t line 54.
# Failed test 'lists pair 3 indices: left is subset of right'
# at t/50_lcf_subset.t line 60.
ok 16 - lists pair 3 indices: left is not subset of right
1..16
# Looks like you failed 6 tests of 16.
Dubious, test returned 6 (wstat 1536, 0x600)
Failed 6/16 subtests
Test Summary Report
-------------------
t/50_lcf_subset.t (Wstat: 1536 Tests: 16 Failed: 6)
Failed tests: 1, 5, 9, 11, 13, 15
Non-zero exit status: 6
Files=1, Tests=16, 0 wallclock secs ( 0.01 usr 0.00 sys + 0.01 cusr 0.00 csys = 0.02 CPU)
Result: FAIL