/
02-key.t
78 lines (66 loc) · 2.17 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
use v6;
use Test;
use ABC;
plan *;
{
my %key = key_signature("D");
is %key.elems, 2, "D has two sharps";
is %key<F>, "^", "F is sharp";
is %key<C>, "^", "C is sharp";
}
{
my %key = key_signature("Dmix");
is %key.elems, 1, "Dmix has one sharp";
is %key<F>, "^", "F is sharp";
}
{
my %key = key_signature("Am");
is %key.elems, 0, "Am has no sharps or flats";
}
{
my %key = key_signature("Ddor");
is %key.elems, 0, "Ddor has no sharps or flats";
}
{
my %key = key_signature("Ador");
is %key.elems, 1, "Ador has one sharp";
is %key<F>, "^", "F is sharp";
}
{
my %key = key_signature("Amix");
is %key.elems, 2, "Amix has two sharps";
is %key<F>, "^", "F is sharp";
is %key<C>, "^", "C is sharp";
}
{
my %key = key_signature("C#m");
is %key.elems, 4, "C#m has four sharps";
is %key<F>, "^", "F is sharp";
is %key<C>, "^", "C is sharp";
is %key<G>, "^", "G is sharp";
is %key<D>, "^", "D is sharp";
}
{
my %key = key_signature("C#");
is %key.elems, 7, "C# has seven sharps";
is %key<F>, "^", "F is sharp";
is %key<C>, "^", "C is sharp";
is %key<G>, "^", "G is sharp";
is %key<D>, "^", "D is sharp";
is %key<A>, "^", "A is sharp";
is %key<E>, "^", "E is sharp";
is %key<B>, "^", "B is sharp";
}
{
my %key = key_signature("C#m");
is apply_key_signature(%key, ("f" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "^f", "f => ^f";
is apply_key_signature(%key, ("C" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "^C", "C => ^C";
is apply_key_signature(%key, ("G" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "^G", "G => ^G";
is apply_key_signature(%key, ("d" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "^d", "d => ^d";
is apply_key_signature(%key, ("_f" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "_f", "_f => _f";
is apply_key_signature(%key, ("=C" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "=C", "=C => =C";
is apply_key_signature(%key, ("^G" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "^G", "^G => ^G";
is apply_key_signature(%key, ("^^d" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "^^d", "^^d => ^^d";
is apply_key_signature(%key, ("b'" ~~ m/ <ABC::pitch> /).<ABC::pitch>), "b'", "b' => b'";
}
done_testing;