packages feed

synthesizer-core-0.9: test/DocTest/Synthesizer/Basic/Wave.hs

-- Do not edit! Automatically created with doctest-extract from src/Synthesizer/Basic/Wave.hs
{-# LINE 110 "src/Synthesizer/Basic/Wave.hs" #-}

module DocTest.Synthesizer.Basic.Wave where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 111 "src/Synthesizer/Basic/Wave.hs" #-}
import     qualified Synthesizer.Basic.Wave  as Wave
import     qualified Synthesizer.Basic.Phase as Phase

import     qualified Test.QuickCheck as QC

import     NumericPrelude.Numeric
import     NumericPrelude.Base
import     Prelude ()

zeroDCOffset     :: Wave.T Double Double -> QC.Property
zeroDCOffset     wave =
       QC.forAll (QC.choose (100,600)) $ \periodInt ->
       let period = fromIntegral periodInt
           xs = take periodInt $ map Phase.fromRepresentative $
                map (/period) $ iterate (1+) 0.5
       in  abs (sum (map (Wave.apply wave) xs))  <  period / fromInteger 100

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Synthesizer.Basic.Wave:215: "
{-# LINE 215 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 215 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.sine
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:224: "
{-# LINE 224 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 224 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.cosine
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:239: "
{-# LINE 239 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 239 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.fastSine2
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:261: "
{-# LINE 261 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 261 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.fastSine3
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:283: "
{-# LINE 283 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 283 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.fastSine4
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:417: "
{-# LINE 417 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 417 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.saw
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:430: "
{-# LINE 430 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 430 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.sawCos
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:535: "
{-# LINE 535 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 535 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.square
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:594: "
{-# LINE 594 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 594 "src/Synthesizer/Basic/Wave.hs" #-}
      zeroDCOffset Wave.triangle
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:1003: "
{-# LINE 1003 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 1003 "src/Synthesizer/Basic/Wave.hs" #-}
      QC.forAll (QC.choose (-1,1)) $ zeroDCOffset . Wave.squareBalanced
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:1030: "
{-# LINE 1030 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 1030 "src/Synthesizer/Basic/Wave.hs" #-}
      QC.forAll (QC.choose (0,1)) $ zeroDCOffset . Wave.trapezoid
  )
 DocTest.printPrefix "Synthesizer.Basic.Wave:1078: "
{-# LINE 1078 "src/Synthesizer/Basic/Wave.hs" #-}
 DocTest.property(
{-# LINE 1078 "src/Synthesizer/Basic/Wave.hs" #-}
        
   QC.forAll (QC.choose (0,1)) $ \w ->
   QC.forAll (QC.choose (-1,1)) $ \r ->
   zeroDCOffset $ Wave.trapezoidBalanced w r
  )