eurorack_oxide_utils/
lib.rs1#![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}