< Summary

Information
Class: MusicTheory.Theory.Pitch.Accidental
Assembly: MusicTheory
File(s): /home/runner/work/MusicTheory/MusicTheory/Theory/Pitch/AccidentalNotation.cs
Line coverage
90%
Covered lines: 37
Uncovered lines: 4
Coverable lines: 41
Total lines: 56
Line coverage: 90.2%
Branch coverage
85%
Covered branches: 24
Total branches: 28
Branch coverage: 85.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Semitones()100%11100%
get_Notation()100%11100%
get_AccidentalValue()100%11100%
ToString()85.71%292889.47%

File(s)

/home/runner/work/MusicTheory/MusicTheory/Theory/Pitch/AccidentalNotation.cs

#LineLine coverage
 1namespace MusicTheory.Theory.Pitch
 2{
 3
 4    public enum AccidentalNotation
 5    {
 6        Unicode, // ♯, ♭, 𝄪
 7        ASCII,   // #, b, ##
 8        ASCII_X  // #, b, x
 9    }
 10
 6411    public readonly record struct Accidental(int Semitones)
 12    {
 5213        public static AccidentalNotation Notation { get; set; } = AccidentalNotation.Unicode;
 6314        public int AccidentalValue => Math.Clamp(Semitones, -3, +3);
 15
 2616        public override string ToString() => Notation switch
 2617        {
 1018            AccidentalNotation.Unicode => this.AccidentalValue switch
 1019            {
 120                -3 => "♭♭♭",
 121                -2 => "♭♭",
 222                -1 => "♭",
 123                0 => "",
 324                1 => "♯",
 125                2 => "𝄪",
 126                3 => "♯𝄪",
 027                _ => ""
 1028            },
 2629
 830            AccidentalNotation.ASCII => this.AccidentalValue switch
 831            {
 132                -3 => "bbb",
 133                -2 => "bb",
 134                -1 => "b",
 135                0 => "",
 236                1 => "#",
 137                2 => "##",
 138                3 => "###",
 039                _ => ""
 840            },
 841            AccidentalNotation.ASCII_X => this.AccidentalValue switch
 842            {
 143                -3 => "bbb",
 144                -2 => "bb",
 145                -1 => "b",
 146                0 => "",
 247                1 => "#",
 148                2 => "x",
 149                3 => "#x",
 050                _ => ""
 851            },
 052            _ => ""
 2653        };
 54    }
 55
 56}