Audio-TinySoundFont
view release on metacpan or search on metacpan
t/030-builder.t view on Meta::CPAN
use strict;
use Test::More;
use FindBin qw/$Bin/;
use Audio::TinySoundFont;
use autodie;
use List::Util qw/sum/;
use Try::Tiny;
{
my $tsf = Audio::TinySoundFont->new("$Bin/tiny.sf2");
my $SR = $tsf->SAMPLE_RATE;
my @script_a = (
{
preset => '',
note => 59,
},
{
preset => '',
note => 60,
},
);
my @script_b = (
{
preset => '',
note => 61,
at => 1,
for => 3,
},
{
preset => '',
note => 62,
at => 2,
for => 0.5
},
);
my @script_c = (
{
preset => '',
note => 63,
at => 5 * $SR,
for => 1 * $SR,
in_seconds => 0,
},
);
my $builder = $tsf->new_builder( [@script_a] );
is( scalar @{ $builder->play_script }, 2, 'new with items did add items' );
isnt( $builder->play_script->[0], $script_a[0], 'play_script[0] is not a ref to the original' );
isnt( $builder->play_script->[1], $script_a[1], 'play_script[1] is not a ref to the original' );
$builder = $tsf->new_builder;
is( scalar @{ $builder->play_script }, 0, 'new without items did not add items' );
my $error;
try { $builder->set( [] ) } catch { $error = $_ };
is( $error, undef, 'set with empty script without error' );
is( scalar @{ $builder->play_script }, 0, 'set did not add items' );
try { $builder->set( [@script_a] ) } catch { $error = $_ };
is( $error, undef, 'set with simple script without error' );
is( scalar @{ $builder->play_script }, 2, 'set did not add items' );
try { $builder->add( [@script_b] ) } catch { $error = $_ };
is( $error, undef, 'add with simple script without error' );
is( scalar @{ $builder->play_script }, 4, 'add added items' );
isnt( $builder->play_script->[0], $script_a[0], 'play_script[0] is not a ref to the original' );
( run in 1.016 second using v1.01-cache-2.11-cpan-d8267643d1d )