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}