Browse Source

Tests: make integral transform tests deterministic (by seed)

la-knuth
Christoph Ruegg 14 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>
/// Continuous uniform distribution.
/// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1);
private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary>
/// Naive transforms real sine correctly.
@ -87,7 +93,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[Test]
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();

10
src/UnitTests/IntegralTransformsTests/HartleyTest.cs

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

14
src/UnitTests/IntegralTransformsTests/InverseTransformTest.cs

@ -43,7 +43,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary>
/// Continuous uniform distribution.
/// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1);
private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary>
/// Verify if is reversible complex.
@ -58,7 +64,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
Func<Complex[], Complex[]> forward,
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];
samples.CopyTo(work, 0);
@ -84,7 +90,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
Func<double[], double[]> forward,
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];
samples.CopyTo(work, 0);
@ -187,7 +193,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[Test]
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];
samples.CopyTo(work, 0);

14
src/UnitTests/IntegralTransformsTests/MatchingNaiveTransformTest.cs

@ -43,7 +43,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary>
/// Continuous uniform distribution.
/// </summary>
private readonly IContinuousDistribution _uniform = new ContinuousUniform(-1, 1);
private IContinuousDistribution GetUniform(int seed)
{
return new ContinuousUniform(-1, 1)
{
RandomSource = new Random(seed)
};
}
/// <summary>
/// Verify matches naive complex.
@ -102,7 +108,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void FourierRadix2MatchesNaiveOnRandom(FourierOptions options)
{
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(
samples,
@ -152,7 +158,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void FourierBluesteinMatchesNaiveOnRandomPowerOfTwo(FourierOptions options)
{
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(
samples,
@ -177,7 +183,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
public void FourierBluesteinMatchesNaiveOnRandomNonPowerOfTwo(FourierOptions options)
{
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(
samples,

12
src/UnitTests/IntegralTransformsTests/ParsevalTheoremTest.cs

@ -44,7 +44,13 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
/// <summary>
/// Continuous uniform distribution.
/// </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>
/// Fourier default transform satisfies parsevals theorem.
@ -54,7 +60,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[TestCase(0x7FF)]
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();
@ -77,7 +83,7 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests
[TestCase(0x1F)]
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();

Loading…
Cancel
Save