public void TestIirFrequencyResponse() { var a = new[] { 1.005324035839730, -1.979734945559880, 0.994675964160273 }; var b = new[] { 1.009467623312100, -1.979734945559880, 0.990532376687905 }; double[] frequencies = { 20, 500, 1000, 1500, 20000 }; Complex[] target = { new Complex(1.00000174610533e+000, -1.16574212797254e-003), new Complex(1.00193212578060e+000, -38.7298412403863e-003), new Complex(1.77827941003874e+000, -1.72105381914270e-012), new Complex(1.00618373847305e+000, 69.0973060921694e-003), new Complex(1.00000048223708e+000, 612.629540369582e-006) }; var result = Dsp.IirFrequencyResponse(a, b, frequencies, 44100).ToReadOnlyList(); FilterAssert.ListsAreReasonablyClose(result, target); Assert.That(Dsp.IirFrequencyResponse(a, b, Enumerable.Empty <double>().ToReadOnlyList(), 44100).ToReadOnlyList().Count == 0); Assert.Throws <ArgumentNullException>(() => Dsp.IirFrequencyResponse(null, b, frequencies, 44100).ToReadOnlyList()); Assert.Throws <ArgumentNullException>(() => Dsp.IirFrequencyResponse(a, null, frequencies, 44100).ToReadOnlyList()); Assert.Throws <ArgumentNullException>(() => Dsp.IirFrequencyResponse(a, b, null, 44100).ToReadOnlyList()); Assert.Throws <ArgumentOutOfRangeException>(() => Dsp.IirFrequencyResponse(a, b, frequencies, -1).ToReadOnlyList()); Assert.Throws <Exception>(() => Dsp.IirFrequencyResponse(Enumerable.Empty <double>().ToReadOnlyList(), b, frequencies, 44100).ToReadOnlyList()); Assert.Throws <Exception>(() => Dsp.IirFrequencyResponse(new [] { 0.0 }, b, frequencies, 44100).ToReadOnlyList()); }