Browse Source

Tests: make integral transform tests deterministic (by seed)

pull/38/head
Christoph Ruegg 15 years ago
parent
commit
e6ac48bf5f
  1. 10
      src/UnitTests/IntegralTransformsTests/FourierTest.cs
  2. 10
      src/UnitTests/IntegralTransformsTests/HartleyTest.cs
  3. 14
      src/UnitTests/IntegralTransformsTests/InverseTransformTest.cs
  4. 14
      src/UnitTests/IntegralTransformsTests/MatchingNaiveTransformTest.cs
  5. 12
      src/UnitTests/IntegralTransformsTests/ParsevalTheoremTest.cs

10
src/UnitTests/IntegralTransformsTests/FourierTest.cs

@ -43,7 +43,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary> /// <summary>
/// Continuous uniform distribution. /// Continuous uniform distribution.
/// </summary> /// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1); private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary> /// <summary>
/// Naive transforms real sine correctly. /// Naive transforms real sine correctly.
@ -87,7 +93,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[Test] [Test]
public void Radix2ThrowsWhenNotPowerOfTwo() public void Radix2ThrowsWhenNotPowerOfTwo()
{ {
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, 0x7F); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x7F);
var dft = new DiscreteFourierTransform(); var dft = new DiscreteFourierTransform();

10
src/UnitTests/IntegralTransformsTests/HartleyTest.cs

@ -43,7 +43,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary> /// <summary>
/// Continuous uniform distribution. /// Continuous uniform distribution.
/// </summary> /// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1); private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary> /// <summary>
/// Verify if matches DFT. /// Verify if matches DFT.
@ -80,7 +86,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void NaiveMatchesDft(HartleyOptions hartleyOptions, FourierOptions fourierOptions) public void NaiveMatchesDft(HartleyOptions hartleyOptions, FourierOptions fourierOptions)
{ {
var dht = new DiscreteHartleyTransform(); var dht = new DiscreteHartleyTransform();
var samples = SignalGenerator.Random(x => x, _uniform, 0x80); var samples = SignalGenerator.Random(x => x, GetUniform(1), 0x80);
VerifyMatchesDft( VerifyMatchesDft(
samples, samples,

14
src/UnitTests/IntegralTransformsTests/InverseTransformTest.cs

@ -43,7 +43,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary> /// <summary>
/// Continuous uniform distribution. /// Continuous uniform distribution.
/// </summary> /// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1); private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary> /// <summary>
/// Verify if is reversible complex. /// Verify if is reversible complex.
@ -58,7 +64,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
Func<Complex[], Complex[]> forward, Func<Complex[], Complex[]> forward,
Func<Complex[], Complex[]> inverse) Func<Complex[], Complex[]> inverse)
{ {
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, count); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), count);
var work = new Complex[samples.Length]; var work = new Complex[samples.Length];
samples.CopyTo(work, 0); samples.CopyTo(work, 0);
@ -84,7 +90,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
Func<double[], double[]> forward, Func<double[], double[]> forward,
Func<double[], double[]> inverse) Func<double[], double[]> inverse)
{ {
var samples = SignalGenerator.Random(x => x, _uniform, count); var samples = SignalGenerator.Random(x => x, GetUniform(1), count);
var work = new double[samples.Length]; var work = new double[samples.Length];
samples.CopyTo(work, 0); samples.CopyTo(work, 0);
@ -187,7 +193,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[Test] [Test]
public void FourierDefaultTransformIsReversible() public void FourierDefaultTransformIsReversible()
{ {
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, 0x7FFF); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x7FFF);
var work = new Complex[samples.Length]; var work = new Complex[samples.Length];
samples.CopyTo(work, 0); samples.CopyTo(work, 0);

14
src/UnitTests/IntegralTransformsTests/MatchingNaiveTransformTest.cs

@ -43,7 +43,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary> /// <summary>
/// Continuous uniform distribution. /// Continuous uniform distribution.
/// </summary> /// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1); private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary> /// <summary>
/// Verify matches naive complex. /// Verify matches naive complex.
@ -102,7 +108,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void FourierRadix2MatchesNaiveOnRandom(FourierOptions options) public void FourierRadix2MatchesNaiveOnRandom(FourierOptions options)
{ {
var dft = new DiscreteFourierTransform(); var dft = new DiscreteFourierTransform();
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, 0x80); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x80);
VerifyMatchesNaiveComplex( VerifyMatchesNaiveComplex(
samples, samples,
@ -152,7 +158,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void FourierBluesteinMatchesNaiveOnRandomPowerOfTwo(FourierOptions options) public void FourierBluesteinMatchesNaiveOnRandomPowerOfTwo(FourierOptions options)
{ {
var dft = new DiscreteFourierTransform(); var dft = new DiscreteFourierTransform();
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, 0x80); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x80);
VerifyMatchesNaiveComplex( VerifyMatchesNaiveComplex(
samples, samples,
@ -177,7 +183,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void FourierBluesteinMatchesNaiveOnRandomNonPowerOfTwo(FourierOptions options) public void FourierBluesteinMatchesNaiveOnRandomNonPowerOfTwo(FourierOptions options)
{ {
var dft = new DiscreteFourierTransform(); var dft = new DiscreteFourierTransform();
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, 0x7F); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), 0x7F);
VerifyMatchesNaiveComplex( VerifyMatchesNaiveComplex(
samples, samples,

12
src/UnitTests/IntegralTransformsTests/ParsevalTheoremTest.cs

@ -44,7 +44,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary> /// <summary>
/// Continuous uniform distribution. /// Continuous uniform distribution.
/// </summary> /// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1); private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new System.Random(seed)
};
}
/// <summary> /// <summary>
/// Fourier default transform satisfies parsevals theorem. /// Fourier default transform satisfies parsevals theorem.
@ -54,7 +60,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[TestCase(0x7FF)] [TestCase(0x7FF)]
public void FourierDefaultTransformSatisfiesParsevalsTheorem(int count) public void FourierDefaultTransformSatisfiesParsevalsTheorem(int count)
{ {
var samples = SignalGenerator.Random((u, v) => new Complex(u, v), _uniform, count); var samples = SignalGenerator.Random((u, v) => new Complex(u, v), GetUniform(1), count);
var timeSpaceEnergy = (from s in samples select s.MagnitudeSquared()).Mean(); var timeSpaceEnergy = (from s in samples select s.MagnitudeSquared()).Mean();
@ -77,7 +83,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[TestCase(0x1F)] [TestCase(0x1F)]
public void HartleyDefaultNaiveSatisfiesParsevalsTheorem(int count) public void HartleyDefaultNaiveSatisfiesParsevalsTheorem(int count)
{ {
var samples = SignalGenerator.Random(x => x, _uniform, count); var samples = SignalGenerator.Random(x => x, GetUniform(1), count);
var timeSpaceEnergy = (from s in samples select s * s).Mean(); var timeSpaceEnergy = (from s in samples select s * s).Mean();

Loading…
Cancel
Save