klavier_core/
sharp_flat.rs

1#[derive(serde::Deserialize, serde::Serialize)]
2#[derive(Debug, PartialEq, Copy, Clone, Eq, Hash)]
3pub enum SharpFlat {
4    Sharp,
5    DoubleSharp,
6    Flat,
7    DoubleFlat,
8    Natural,
9    Null,
10}
11
12impl SharpFlat {
13    pub const fn offset(self: Self) -> i32 {
14        match self {
15            Self::Sharp => 1,
16            Self::DoubleSharp => 2,
17            Self::Flat => -1,
18            Self::DoubleFlat => -2,
19            Self::Natural => 0,
20            Self::Null => 0,
21        }
22    }
23}
24
25#[cfg(test)]
26mod tests {
27    use crate::sharp_flat::SharpFlat;
28
29    #[test]
30    fn offset_is_valid() {
31        assert_eq!(SharpFlat::Sharp.offset(), 1);
32        assert_eq!(SharpFlat::DoubleSharp.offset(), 2);
33        assert_eq!(SharpFlat::Flat.offset(), -1);
34        assert_eq!(SharpFlat::DoubleFlat.offset(), -2);
35        assert_eq!(SharpFlat::Natural.offset(), 0);
36        assert_eq!(SharpFlat::Null.offset(), 0);
37    }
38}