4 use POE::XS::Queue::Array ();
5 use POE::Queue::Array ();
9 my @items = map [ $_, $_ ], map rand(1000), 1..1000;
11 # test queues for timing adjust_priority
15 for my $impl (qw(POE::XS::Queue::Array POE::Queue::Array)) {
16 my $queue = $impl->new;
18 my @ids = map $queue->enqueue(@$_), @items;
20 $adjust{$impl} = $queue;
21 $adjust_ids{$impl} = \@ids;
23 for my $index (0..999) {
24 $adjust_val[$index] = rand(100) - 50;
29 xs_big => sub { big('POE::XS::Queue::Array') },
30 perl_big => sub { big('POE::Queue::Array') },
31 xs_enqueue => sub { enqueue('POE::XS::Queue::Array') },
32 perl_enqueue => sub { enqueue('POE::Queue::Array') },
33 xs_adjust => sub { adjust('POE::XS::Queue::Array') },
34 perl_adjust => sub { adjust('POE::Queue::Array') },
37 # does general queue work
41 my $queue = $class->new;
43 my @ids = map $queue->enqueue(@$_), @items;
45 for my $id (@ids[1..100]) {
46 $queue->adjust_priority($id, sub { 1 }, -5);
48 my %remove = map { $_ => 1 } @ids[-100..-1];
49 $queue->remove_items(sub { $remove{$_[0]} });
51 for my $id (@ids[-200..-101]) {
52 $queue->remove_item($id, sub { 1 });
55 $queue->remove_items(sub { 0 });
57 $queue->dequeue_next while $queue->get_item_count;
64 my $queue = $class->new;
66 my @ids = map $queue->enqueue(@$_), @items;
69 # adjust the priorities on a bunch of items
73 my $queue = $adjust{$class};
76 for my $id (@{$adjust_ids{$class}}) {
77 $queue->adjust_priority($id, sub { 1 }, $adjust_val[$index]);