comfort-fftw-0.0: test/Test/Numeric/FFTW/Shape.hs
module Test.Numeric.FFTW.Shape where
import qualified Numeric.FFTW.Shape as Spectrum
import Numeric.FFTW.Shape
(SymmetrySingleton(Even,Odd), ShiftSingleton(Exact,Halfway))
import Test.Numeric.FFTW.Common (prefix)
import qualified Data.Array.Comfort.Shape.Test as ShapeTest
import qualified Test.QuickCheck as QC
import Control.Applicative ((<$>))
genHalf :: Int -> QC.Gen (Spectrum.Half Int)
genHalf n = Spectrum.Half <$> QC.choose (0,n)
genSymmetric ::
(Spectrum.Symmetry symmetry) =>
(Spectrum.Shift shiftTime) =>
(Spectrum.Shift shiftSpectrum) =>
Spectrum.SymmetrySingleton symmetry ->
Spectrum.ShiftSingleton shiftTime ->
Spectrum.ShiftSingleton shiftSpectrum ->
Int -> QC.Gen (Spectrum.Symmetric symmetry shiftTime shiftSpectrum Int)
genSymmetric symmetry shiftTime shiftSpectrum n =
Spectrum.Symmetric symmetry shiftTime shiftSpectrum <$> QC.choose (0,n)
tests :: [(String, QC.Property)]
tests =
prefix "Half"
(ShapeTest.tests $ genHalf 100) ++
prefix "Half Even Exact Exact"
(ShapeTest.tests $ genSymmetric Even Exact Exact 100) ++
prefix "Half Even Halfway Exact"
(ShapeTest.tests $ genSymmetric Even Halfway Exact 100) ++
prefix "Half Even Exact Halfway"
(ShapeTest.tests $ genSymmetric Even Exact Halfway 100) ++
prefix "Half Even Halfway Halfway"
(ShapeTest.tests $ genSymmetric Even Halfway Halfway 100) ++
prefix "Half Odd Exact Exact"
(ShapeTest.tests $ genSymmetric Odd Exact Exact 100) ++
prefix "Half Odd Halfway Exact"
(ShapeTest.tests $ genSymmetric Odd Halfway Exact 100) ++
prefix "Half Odd Exact Halfway"
(ShapeTest.tests $ genSymmetric Odd Exact Halfway 100) ++
prefix "Half Odd Halfway Halfway"
(ShapeTest.tests $ genSymmetric Odd Halfway Halfway 100) ++
[]