App-Sandy
view release on metacpan or search on metacpan
t/lib/TestsFor/App/Sandy/PieceTable.pm view on Meta::CPAN
package TestsFor::App::Sandy::PieceTable;
# ABSTRACT: Tests for 'App::Sandy::PieceTable' class
use App::Sandy::Base 'test';
#use Data::Dumper;
use base 'TestsFor';
sub startup : Tests(startup) {
my $test = shift;
$test->SUPER::startup;
my $class = ref $test;
$class->mk_classdata('default_attr');
$class->mk_classdata('default_seq');
$class->mk_classdata('default_table');
}
sub setup : Tests(setup) {
my $test = shift;
$test->SUPER::setup;
my $seq = "A large span of text";
my %default_attr = (orig => \$seq);
$test->default_seq(\$seq);
$test->default_attr(\%default_attr);
$test->default_table($test->class_to_test->new(%default_attr));
}
sub constructor : Tests(2) {
my $test = shift;
my $class = $test->class_to_test;
my $table = $test->default_table;
my %default_attr = %{ $test->default_attr };
while (my ($attr, $value) = each %default_attr) {
can_ok $table, $attr;
is $table->$attr, $value,"The value for $attr shold be correct";
}
}
sub delete : Test(4) {
my $test = shift;
my $table = $test->default_table;
my $seq = $test->default_seq;
# Try to remove "large "
$table->delete(2, 6);
# diag Dumper($table->piece_table);
my @pieces = (
{ pos => 0, len => 2 },
{ pos => 8, len => 12 }
);
my $piece_table = $table->piece_table;
for (my $i = 0; $i < @pieces; $i++) {
is $pieces[$i]{pos}, $piece_table->[$i]{pos},
"table[$i]: pos should be equal to $pieces[$i]{pos}";
is $pieces[$i]{len}, $piece_table->[$i]{len},
"table[$i]: len should be equal to $pieces[$i]{len}";
}
}
sub delete_at_end : Test(3) {
my $test = shift;
my $table = $test->default_table;
my $seq = $test->default_seq;
# Try to delete the five last characters
my $pos_last = length($$seq) - 5;
$table->delete($pos_last, 5);
my @pieces = (
{ pos => 0, len => $pos_last },
);
( run in 0.795 second using v1.01-cache-2.11-cpan-98e64b0badf )