forked from LastOfTheCarelessMen/ABC
-
Notifications
You must be signed in to change notification settings - Fork 5
/
02-key.t
94 lines (82 loc) · 2.86 KB
/
02-key.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use v6;
use Test;
use ABC::Grammar;
use ABC::Utils;
use ABC::KeyInfo;
{
my $key = ABC::KeyInfo.new("D");
is $key.key.elems, 2, "D has two sharps";
is $key.key<F>, "^", "F is sharp";
is $key.key<C>, "^", "C is sharp";
ok !$key.clef.defined || $key.clef eq "treble" , "no clef defined";
is $key.octave-shift, 0, "octave-shift is 0";
}
{
my $key = ABC::KeyInfo.new("D bass");
is $key.key.elems, 2, "D has two sharps";
is $key.key<F>, "^", "F is sharp";
is $key.key<C>, "^", "C is sharp";
is $key.clef, "bass", "Recognized bass clef";
}
{
my $key = ABC::KeyInfo.new("Dmix");
is $key.key.elems, 1, "Dmix has one sharp";
is $key.key<F>, "^", "F is sharp";
}
{
my $key = ABC::KeyInfo.new("Am");
is $key.key.elems, 0, "Am has no sharps or flats";
}
{
my $key = ABC::KeyInfo.new("Ddor");
is $key.key.elems, 0, "Ddor has no sharps or flats";
}
{
my $key = ABC::KeyInfo.new("Ador");
is $key.key.elems, 1, "Ador has one sharp";
is $key.key<F>, "^", "F is sharp";
}
{
my $key = ABC::KeyInfo.new("Amix");
is $key.key.elems, 2, "Amix has two sharps";
is $key.key<F>, "^", "F is sharp";
is $key.key<C>, "^", "C is sharp";
}
{
my $key = ABC::KeyInfo.new("C#m");
is $key.key.elems, 4, "C#m has four sharps";
is $key.key<F>, "^", "F is sharp";
is $key.key<C>, "^", "C is sharp";
is $key.key<G>, "^", "G is sharp";
is $key.key<D>, "^", "D is sharp";
}
{
my $key = ABC::KeyInfo.new("C#");
is $key.key.elems, 7, "C# has seven sharps";
is $key.key<F>, "^", "F is sharp";
is $key.key<C>, "^", "C is sharp";
is $key.key<G>, "^", "G is sharp";
is $key.key<D>, "^", "D is sharp";
is $key.key<A>, "^", "A is sharp";
is $key.key<E>, "^", "E is sharp";
is $key.key<B>, "^", "B is sharp";
}
{
my $key = ABC::KeyInfo.new("C ^f _b");
is $key.key.elems, 2, "C ^f _b has two thingees";
is $key.key<F>, "^", "F is sharp";
is $key.key<B>, "_", "B is flat";
}
{
my $key = ABC::KeyInfo.new("C#m");
is apply_key_signature($key.key, ABC::Grammar.parse("f", :rule<pitch>)), "^f", "f => ^f";
is apply_key_signature($key.key, ABC::Grammar.parse("C", :rule<pitch>)), "^C", "C => ^C";
is apply_key_signature($key.key, ABC::Grammar.parse("G", :rule<pitch>)), "^G", "G => ^G";
is apply_key_signature($key.key, ABC::Grammar.parse("d", :rule<pitch>)), "^d", "d => ^d";
is apply_key_signature($key.key, ABC::Grammar.parse("_f", :rule<pitch>)), "_f", "_f => _f";
is apply_key_signature($key.key, ABC::Grammar.parse("=C", :rule<pitch>)), "=C", "=C => =C";
is apply_key_signature($key.key, ABC::Grammar.parse("^G", :rule<pitch>)), "^G", "^G => ^G";
is apply_key_signature($key.key, ABC::Grammar.parse("^^d", :rule<pitch>)), "^^d", "^^d => ^^d";
is apply_key_signature($key.key, ABC::Grammar.parse("b'", :rule<pitch>)), "b'", "b' => b'";
}
done-testing;