/t/Teto-Queue.t
http://github.com/motemen/Teto · Raku · 47 lines · 35 code · 12 blank · 0 comment · 3 complexity · a9f58a2e8e3c7c46d583f0ddb2114d11 MD5 · raw file
- use strict;
- use lib 'lib';
- use Test::More tests => 3;
- use Test::Deep;
- use Teto::Track;
- use Coro;
- use_ok 'Teto::Queue';
- subtest basic => sub {
- my $queue = new_ok 'Teto::Queue', [ track_fh => do { my $s = ''; open my $fh, '>', \$s; $fh } ];
- cmp_deeply $queue->tracks, [];
- $queue->add_track(Teto::Track->from_url('http://www.nicovideo.jp/watch/sm12441199'));
- cmp_deeply $queue->tracks, [ isa('Teto::Track') & methods(video_id => 'sm12441199') ];
- async {
- my $track = $queue->wait_for_track;
- isa_ok $track, 'Teto::Track';
- };
- cede;
- };
- subtest signal => sub {
- my $queue = Teto::Queue->new(track_fh => do { my $s = ''; open my $fh, '>', \$s; $fh });
- my @coros;
- my ($waiting, $track);
- push @coros, async {
- $waiting++;
- $track = $queue->wait_for_track;
- cmp_deeply $track, isa('Teto::Track') & methods(video_id => 'sm9'), 'got added track';
- };
- cede;
- ok !$track, 'track not got';
- push @coros, async {
- $queue->add_track(Teto::Track->from_url('http://www.nicovideo.jp/watch/sm9'));
- };
- $_->join for @coros;
- done_testing(2);
- };