Skip to main content

maolan_engine/
kind.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash, Copy, Serialize, Deserialize)]
4#[serde(rename_all = "lowercase")]
5pub enum Kind {
6    Audio,
7    MIDI,
8}
9
10#[cfg(test)]
11mod tests {
12    use super::*;
13
14    #[test]
15    fn kind_audio_equality() {
16        assert_eq!(Kind::Audio, Kind::Audio);
17        assert_ne!(Kind::Audio, Kind::MIDI);
18    }
19
20    #[test]
21    fn kind_midi_equality() {
22        assert_eq!(Kind::MIDI, Kind::MIDI);
23        assert_ne!(Kind::MIDI, Kind::Audio);
24    }
25
26    #[test]
27    fn kind_clone() {
28        let audio = Kind::Audio;
29        let cloned = audio;
30        assert_eq!(audio, cloned);
31    }
32
33    #[test]
34    fn kind_copy() {
35        let audio = Kind::Audio;
36        let copied = audio;
37        assert_eq!(audio, copied);
38    }
39
40    #[test]
41    fn kind_debug_format() {
42        let audio = Kind::Audio;
43        let midi = Kind::MIDI;
44        assert!(format!("{:?}", audio).contains("Audio"));
45        assert!(format!("{:?}", midi).contains("MIDI"));
46    }
47
48    #[test]
49    fn kind_hash_consistency() {
50        use std::collections::HashSet;
51
52        let mut set = HashSet::new();
53        set.insert(Kind::Audio);
54        set.insert(Kind::MIDI);
55        set.insert(Kind::Audio);
56
57        assert_eq!(set.len(), 2);
58    }
59}