eurorack_oxide_utils/
lib.rs

1//! Utility library providing Eurorack related helper functions.
2#![no_std]
3
4pub mod voct;
5
6#[macro_use]
7mod macros;
8
9#[cfg(test)]
10mod tests {
11    use super::voct::*;
12
13    #[test]
14    fn test_voct_hz() {
15        let cases = [
16            (1.0, 32.703),
17            (2.0, 65.406),
18            (3.0, 130.812),
19            (4.0, 261.624),
20            (5.0, 523.248),
21        ];
22
23        for (v, freq) in &cases {
24            let voct = VOct(*v);
25            assert_eq!(voct.hz(), *freq);
26        }
27    }
28
29    #[test]
30    fn test_mvoct_hz() {
31        let cases = [
32            (1000.0, 32.703),
33            (2000.0, 65.406),
34            (3000.0, 130.812),
35            (4000.0, 261.624),
36            (5000.0, 523.248),
37        ];
38
39        for (v, freq) in &cases {
40            let voct = MvOct(*v);
41            assert_eq!(voct.hz(), *freq);
42        }
43    }
44
45    #[test]
46    fn test_voct_ms() {
47        let cases = [(1.0, 30), (2.0, 15), (3.0, 7), (4.0, 3), (5.0, 1)];
48
49        for (v, period) in &cases {
50            let voct = VOct(*v);
51            assert_eq!(voct.ms(), *period);
52        }
53    }
54
55    #[test]
56    fn test_voct_us() {
57        let cases = [
58            (1.0, 30578),
59            (2.0, 15289),
60            (3.0, 7644),
61            (4.0, 3822),
62            (5.0, 1911),
63        ];
64
65        for (v, period) in &cases {
66            let voct = VOct(*v);
67            assert_eq!(voct.us(), *period);
68        }
69    }
70
71    #[test]
72    fn test_mvoct_ms() {
73        let cases = [
74            (1000.0, 30),
75            (2000.0, 15),
76            (3000.0, 7),
77            (4000.0, 3),
78            (5000.0, 1),
79        ];
80
81        for (v, period) in &cases {
82            let voct = MvOct(*v);
83            assert_eq!(voct.ms(), *period);
84        }
85    }
86
87    #[test]
88    fn test_mvoct_us() {
89        let cases = [
90            (1000.0, 30578),
91            (2000.0, 15289),
92            (3000.0, 7644),
93            (4000.0, 3822),
94            (5000.0, 1911),
95        ];
96
97        for (v, freq) in &cases {
98            let voct = MvOct(*v);
99            assert_eq!(voct.us(), *freq);
100        }
101    }
102}