packages feed

synthesizer-core-0.9: test/DocTest/Synthesizer/Generic/Signal.hs

-- Do not edit! Automatically created with doctest-extract from src/Synthesizer/Generic/Signal.hs
{-# LINE 72 "src/Synthesizer/Generic/Signal.hs" #-}

module DocTest.Synthesizer.Generic.Signal where

import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest

{-# LINE 73 "src/Synthesizer/Generic/Signal.hs" #-}
import     qualified Synthesizer.Storable.Signal as SigSt
import     Synthesizer.Generic.Signal (delay, delayLoopOverlap)
import     Synthesizer.Generic.Filter.NonRecursive (amplify)
import     qualified Algebra.Additive as Additive
import     Data.Function (fix)
import     qualified Test.QuickCheck as QC

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Synthesizer.Generic.Signal:749: "
{-# LINE 749 "src/Synthesizer/Generic/Signal.hs" #-}
 DocTest.example(
{-# LINE 749 "src/Synthesizer/Generic/Signal.hs" #-}
    delayLoopOverlap 5 (amplify 0.5) [1::Float]
  )
  [ExpectedLine [LineChunk "[1.0]"]]
 DocTest.printPrefix "Synthesizer.Generic.Signal:751: "
{-# LINE 751 "src/Synthesizer/Generic/Signal.hs" #-}
 DocTest.example(
{-# LINE 751 "src/Synthesizer/Generic/Signal.hs" #-}
    delayLoopOverlap 5 (amplify 0.5) [1,0,0,0,0::Float]
  )
  [ExpectedLine [LineChunk "[1.0,0.0,0.0,0.0,0.0]"]]
 DocTest.printPrefix "Synthesizer.Generic.Signal:753: "
{-# LINE 753 "src/Synthesizer/Generic/Signal.hs" #-}
 DocTest.example(
{-# LINE 753 "src/Synthesizer/Generic/Signal.hs" #-}
    delayLoopOverlap 5 (amplify 0.5) [1,0,0,0,0,0::Float]
  )
  [ExpectedLine [LineChunk "[1.0,0.0,0.0,0.0,0.0,0.5]"]]
 DocTest.printPrefix "Synthesizer.Generic.Signal:755: "
{-# LINE 755 "src/Synthesizer/Generic/Signal.hs" #-}
 DocTest.example(
{-# LINE 755 "src/Synthesizer/Generic/Signal.hs" #-}
    delayLoopOverlap 5 (amplify 0.5) [1,0,0,0,0,0,0,0,0::Float]
  )
  [ExpectedLine [LineChunk "[1.0,0.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0]"]]
 DocTest.printPrefix "Synthesizer.Generic.Signal:758: "
{-# LINE 758 "src/Synthesizer/Generic/Signal.hs" #-}
 DocTest.property(
{-# LINE 758 "src/Synthesizer/Generic/Signal.hs" #-}
        
   QC.forAll (QC.choose (1,10)) $ \time ->
   QC.forAll (QC.choose (1,10)) $ \cs ->
   QC.forAll (QC.choose (0.5,1.0::Float)) $ \gain ->
   \xs ->
   delayLoopOverlap time (amplify gain) xs
   ==
   (SigSt.toList $
    delayLoopOverlap time (amplify gain) $
    SigSt.fromList (SigSt.chunkSize cs) xs)
  )
 DocTest.printPrefix "Synthesizer.Generic.Signal:770: "
{-# LINE 770 "src/Synthesizer/Generic/Signal.hs" #-}
 DocTest.property(
{-# LINE 770 "src/Synthesizer/Generic/Signal.hs" #-}
        
   let delayLoopOverlapProduce time proc xs =
         fix (zipWith (Additive.+) xs . delay Additive.zero time . proc)
   in QC.forAll (QC.choose (1,10)) $ \time ->
      QC.forAll (QC.choose (0.5,1.0)) $ \gain ->
      \xs ->
      delayLoopOverlap time (amplify gain) xs
      ==
      delayLoopOverlapProduce time (amplify gain) (xs :: [Float])
  )