From a97e64378a3d638f85fd85af07e110a5fa1a2695 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Fri, 19 May 2023 07:13:10 +0100
Subject: [PATCH] tests: new unit tests

---
 src/apu.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/src/apu.rs b/src/apu.rs
index b22d7fb8..fbb331b2 100644
--- a/src/apu.rs
+++ b/src/apu.rs
@@ -931,3 +931,51 @@ impl Default for Apu {
         Self::new(44100, 1.0, GameBoy::CPU_FREQ)
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_trigger_ch1() {
+        let mut apu = Apu::default();
+        apu.ch1_wave_length = 1024;
+        apu.trigger_ch1();
+
+        assert_eq!(apu.ch1_timer, 4096);
+        assert_eq!(apu.ch1_envelope_sequence, 0);
+        assert_eq!(apu.ch1_sweep_sequence, 0);
+    }
+
+    #[test]
+    fn test_trigger_ch2() {
+        let mut apu = Apu::default();
+        apu.ch2_wave_length = 1024;
+        apu.trigger_ch2();
+
+        assert_eq!(apu.ch2_timer, 4096);
+        assert_eq!(apu.ch2_envelope_sequence, 0);
+    }
+
+    #[test]
+    fn test_trigger_ch3() {
+        let mut apu = Apu::default();
+        apu.ch3_wave_length = 1024;
+        apu.trigger_ch3();
+
+        assert_eq!(apu.ch3_timer, 3);
+        assert_eq!(apu.ch3_position, 0);
+    }
+
+    #[test]
+    fn test_trigger_ch4() {
+        let mut apu = Apu::default();
+        apu.ch4_divisor = 3;
+        apu.ch4_clock_shift = 2;
+        apu.trigger_ch4();
+
+        assert_eq!(apu.ch4_timer, 192);
+        assert_eq!(apu.ch4_lfsr, 0x7ff1);
+        assert_eq!(apu.ch4_envelope_sequence, 0);
+    }
+}
-- 
GitLab