From ec1b2a62facf5bf1534da0f4b0fdec2f4e48980b Mon Sep 17 00:00:00 2001 From: Matt McPherrin <git@mcpherrin.ca> Date: Wed, 15 Jul 2015 21:20:38 -0700 Subject: [PATCH] Expand the sine test case for a few more frequencies --- src/lib.rs | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c0f28e6..7e91122 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,28 +68,30 @@ fn zero_data() { } #[test] -fn one_sine() { +fn sine() { let mut buf = [0; 8000]; - // Generate a 1 second sine wave at 1800 hz - // Using 8khz sample rate: Generate 8k samples, - // map them into our second (zero to one): - let step = 1. / 8000.; - for sample in (0 .. 8000) { - let time = sample as f32 * step; - buf[sample] = ((time * 1800. * 2. * PI).sin()*std::i16::MAX as f32) as i16; - } + for &freq in [697., 1200., 1800., 1633.].iter() { + // Generate a 1 second sine wave at freq hz + // Using 8khz sample rate: Generate 8k samples, + // map them into our second (zero to one): - let p = Parameters::new(1800., 8000., 256); - let mag1800 = p.start().add(&buf[0..256]).finish_mag(); - println!("1800: {}", mag1800); - for freq in (0 .. 30).map(|x| (x * 100) as f32) { - let p = Parameters::new(freq, 8000., 256); + let step = 1. / 8000.; + for sample in (0 .. 8000) { + let time = sample as f32 * step; + buf[sample] = ((time * freq * 2. * PI).sin()*std::i16::MAX as f32) as i16; + } + + let p = Parameters::new(freq, 8000., 8000); let mag = p.start().add(&buf[0..256]).finish_mag(); - println!("{}: {}", freq, mag); - if freq != 1800. { - assert!(mag1800 > 10.*mag); + for testfreq in (0 .. 30).map(|x| (x * 100) as f32) { + let p = Parameters::new(testfreq, 8000., 8000); + let testmag = p.start().add(&buf[0..256]).finish_mag(); + println!("{:4}: {:12.3}", testfreq, testmag); + if (freq-testfreq).abs() > 100. { + println!("{} > 10*{}", mag, testmag); + assert!(mag > 10.*testmag); + } } } - } -- GitLab