klavier_core/
sharp_flat.rs1#[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}