1#!/usr/bin/perl
2
3use v5.10;
4use strict;
5use warnings;
6
7use Test::More;
8
9use Future;
10use Future::Queue;
11
12# push before shift
13{
14   my $queue = Future::Queue->new;
15
16   $queue->push( "ITEM" );
17
18   my $f = $queue->shift;
19   ok( $f->is_done, '$queue->shift already ready' );
20   is( $f->result, "ITEM", '$queue->shift->result' );
21}
22
23# shift before push
24{
25   my $queue = Future::Queue->new;
26
27   my $f = $queue->shift;
28   ok( !$f->is_done, '$queue->shift not yet ready' );
29
30   $queue->push( "ITEM" );
31
32   ok( $f->is_done, '$queue->shift now ready after push' );
33   is( $f->result, "ITEM", '$queue->shift->result' );
34}
35
36done_testing;
37