Adapter-Async
view release on metacpan or search on metacpan
lib/Adapter/Async/OrderedList.pm view on Meta::CPAN
The adapter raises these:
=over 4
=item * item_changed - the given item has been modified. by default only applies to elements that were marked as visible.
=item * splice - changes to the array which remove or add elements
=item * move - an existing element moves to a new position (some adapters may not be able to differentiate between this and splice: if in doubt, use splice instead, don't report as a move unless it's guaranteed to be existing items)
index, length, offset (+/-)
=back
The view raises these:
=over 4
=item * visible - indicates visibility of one or more items. change events will start being sent for these items.
visible => [1,2,3,4,5,6]
lib/Adapter/Async/OrderedList.pod view on Meta::CPAN
The adapter raises these:
=over 4
=item * item_changed - the given item has been modified. by default only applies to elements that were marked as visible.
=item * splice - changes to the array which remove or add elements
=item * move - an existing element moves to a new position (some adapters may not be able to differentiate between this and splice: if in doubt, use splice instead, don't report as a move unless it's guaranteed to be existing items)
index, length, offset (+/-)
=back
The view raises these:
=over 4
=item * visible - indicates visibility of one or more items. change events will start being sent for these items.
visible => [1,2,3,4,5,6]
t/00-report-prereqs.t view on Meta::CPAN
if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
push @dep_errors, "$mod is not installed ($req_string)";
}
}
}
if ( @reports ) {
push @full_reports, "=== $title ===\n\n";
my $ml = _max( map { length $_->[0] } @reports );
my $wl = _max( map { length $_->[1] } @reports );
my $hl = _max( map { length $_->[2] } @reports );
if ($type eq 'modules') {
splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl];
push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports;
}
else {
splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
}
use Adapter::Async::OrderedList::Array;
my $array = new_ok('Adapter::Async::OrderedList::Array');
is($array->count->get, 0, 'starts empty');
# Test an insert
$array->bus->subscribe_to_event(
splice => sub {
my ($ev, $idx, $len, $data) = @_;
is($idx, 0, 'splice event for insert had expected index');
is($len, 0, 'zero length');
is_deeply($data, ['x'], 'and our expected data');
$ev->unsubscribe;
}
);
is(exception {
$array->insert(0, ['x'])->get
}, undef, 'can insert item');
is($array->count->get, 1, 'now have one item');
is_deeply($array->get(
items => [0],
my ($idx, $item) = @_;
is($item, 'x', 'had expected item in callback');
}
)->get, ['x'], 'now have one item');
# Now for an append
$array->bus->subscribe_to_event(
splice => sub {
my ($ev, $idx, $len, $data) = @_;
is($idx, 1, 'splice event for append had expected index');
is($len, 0, 'zero length');
is_deeply($data, [qw(y z)], 'and our expected data');
$ev->unsubscribe;
}
);
is(exception {
$array->append(0, [qw(y z)])->get
}, undef, 'can append two more items');
is($array->count->get, 3, 'count is now 3');
{
my @expected = qw(x y z);
}
)->get, [qw(x y z)], 'have our 3 items');
is_deeply(\@expected, [(undef) x 3], 'callback fired for all expected items');
}
# now we move
$array->bus->subscribe_to_event(
move => sub {
my ($ev, $idx, $len, $offset) = @_;
is($idx, 2, 'move event had expected index');
is($len, 1, 'correct length');
is($offset, -1, 'correct offset');
$ev->unsubscribe;
}
);
is(exception {
$array->move(2, 1, -1)->get
}, undef, 'can move last element back by one');
is($array->count->get, 3, 'count unchanged');
is_deeply($array->get(
items => [0..2],
)->get, [qw(x z y)], 'elements were reordered');
# and move in the other direction
$array->bus->subscribe_to_event(
move => sub {
my ($ev, $idx, $len, $offset) = @_;
is($idx, 0, 'move event had expected index');
is($len, 1, 'correct length');
is($offset, 1, 'correct offset');
$ev->unsubscribe;
}
);
is(exception {
$array->move(0, 1, 1)->get
}, undef, 'can move first element forward by one');
is($array->count->get, 3, 'count unchanged');
is_deeply($array->get(
( run in 0.485 second using v1.01-cache-2.11-cpan-65fba6d93b7 )