packages feed

synthesizer-core-0.9: test/DocTest/Synthesizer/Plain/Oscillator.hs

-- Do not edit! Automatically created with doctest-extract from src/Synthesizer/Plain/Oscillator.hs
{-# LINE 36 "src/Synthesizer/Plain/Oscillator.hs" #-}

module DocTest.Synthesizer.Plain.Oscillator where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 37 "src/Synthesizer/Plain/Oscillator.hs" #-}
import     qualified Synthesizer.Plain.Oscillator as Osci
import     qualified Synthesizer.Basic.Wave       as Wave

import     qualified Test.QuickCheck as QC

import     qualified Number.Ratio as Ratio
import     NumericPrelude.Numeric
import     NumericPrelude.Base
import     Prelude ()

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Synthesizer.Plain.Oscillator:74: "
{-# LINE 74 "src/Synthesizer/Plain/Oscillator.hs" #-}
 DocTest.property(
{-# LINE 74 "src/Synthesizer/Plain/Oscillator.hs" #-}
        
   let waves =
         ("saw", Wave.saw) :
         ("square", Wave.square) :
         ("triangle", Wave.triangle) :
         [] in
   QC.forAllShow (QC.elements waves) fst $
   \(_,wave) freq phases0 ->
   let phases = map (% Ratio.denominator (freq::Rational)) phases0
   in Osci.phaseMod wave freq phases ==
      Osci.shapeMod (Wave.phaseOffset wave) zero freq phases
  )