The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use strict;
use Test;
use Statistics::Basic qw(:all ignore_env);

plan tests => 12;

my $i = Statistics::Basic::Vector->new([ 1 .. 30 ]);
my $j = Statistics::Basic::ComputedVector->new( $i );
   $j->set_filter(sub { grep {$_<= 3} @_ });

ok( $j->query_size, 3 );
ok( $j, "[1, 2, 3]" );

$i->insert( 2 );

ok( $j->query_size, 3 );
ok( $j, "[2, 3, 2]" );

my $S  = computed(1,2,3); $S->set_filter(sub {map {$_+1} @_ });
my $Sr = $S->query;

{ my $Sr2 = $S->query;
  my @Sr2 = $S->query;
  ok( "@Sr2", "@$Sr2" );
  ok( "@Sr2", "@$Sr" );
}

$S->insert(7);
$S->ginsert(9);

{ my $Sr2 = $S->query;
  my @Sr2 = $S->query;
  ok( "@Sr2", "@$Sr2" );
  ok( "@Sr2", "@$Sr" );
}

$S->set_vector($i);

{ my $Sr2 = $S->query;
  my @Sr2 = $S->query;
  ok( "@Sr2", "@$Sr2" );
  ok( "@Sr2", "@$Sr" );
}

$S->set_vector([1,2,3,5]);

{ my $Sr2 = $S->query;
  my @Sr2 = $S->query;
  ok( "@Sr2", "@$Sr2" );
  ok( "@Sr2", "@$Sr" );
}