The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use warnings;

use Test::More;    # plan is down at bottom

eval 'use Test::Differences';    # display convenience
my $deeply = $@ ? \&is_deeply : \&eq_or_diff;

BEGIN { use_ok('Music::Canon') }
my $mc = Music::Canon->new;

$deeply->(
  [ $mc->steps( 60, 62, ($mc->get_modal_scale_in)[0] ) ],
  # one interval, no chrome, last interval was major second
  [ 1, 0, 0, 2 ],
  'C-Major One Step Up'
);

$deeply->(
  [ $mc->steps( 60, 66, ($mc->get_modal_scale_in)[0] ) ],
  # Four intervals (as counter walked past F# to G), one semitone chromatic,
  # last interval was major second (F->G). (Subsequent uses may need to adjust
  # the steps, depending on how intervals are counted.)
  [ 4, 1, 0, 2 ],
  'C-Major Tritone Up'
);

plan tests => 3;