binaural_beat_generator_cli/modules/frequency/
beat_frequency.rs1use crate::modules::frequency::frequency_common::ToFrequency;
4
5#[derive(Debug, Clone, Copy, PartialEq)]
7pub enum BeatFrequency {
8 Delta,
10 Theta,
12 Alpha,
14 Beta,
16 Gamma,
18 Custom(f32),
20}
21
22impl ToFrequency for BeatFrequency {
24 fn to_hz(&self) -> f32 {
25 match self {
26 BeatFrequency::Delta => 2.0,
28 BeatFrequency::Theta => 6.0,
29 BeatFrequency::Alpha => 10.0,
30 BeatFrequency::Beta => 20.0,
31 BeatFrequency::Gamma => 40.0,
32 BeatFrequency::Custom(hz) => *hz,
33 }
34 }
35}
36
37#[cfg(test)]
38mod test {
39 use super::*;
40
41 macro_rules! test_beat_frequency_to_integer_cases {
42 ($($name:ident:($a:expr, $expected:expr),)*) => {
43 $(
44 #[test]
45 fn $name() {
46 assert_eq!(BeatFrequency::to_hz($a),$expected)
47 }
48 )*
49 };
50 }
51
52 test_beat_frequency_to_integer_cases! {
53 test_beat_freuency_delta_enum_to_integer: (&BeatFrequency::Delta, 2.0),
54 test_beat_freuency_theta_enum_to_integer: (&BeatFrequency::Theta, 6.0),
55 test_beat_freuency_alpha_enum_to_integer: (&BeatFrequency::Alpha, 10.0),
56 test_beat_freuency_beta_enum_to_integer: (&BeatFrequency::Beta, 20.0),
57 test_beat_freuency_gamma_enum_to_integer: (&BeatFrequency::Gamma, 40.0),
58 test_beat_freuency_custom_enum_to_integer: (&BeatFrequency::Custom(99.9), 99.9),
59 }
60}