packages feed

align-audio-0.0.0.2: test/Test/Correlate.hs

-- Do not edit! Automatically created with doctest-extract from src/Correlate.hs
{-# LINE 16 "src/Correlate.hs" #-}

module Test.Correlate where

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

{-# LINE 17 "src/Correlate.hs" #-}
import     qualified Test.QuickCheck as QC
import     qualified Data.StorableVector.Lazy as SVL
import     Data.Monoid ((<>))

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Correlate:28: "
{-# LINE 28 "src/Correlate.hs" #-}
 DocTest.example(
{-# LINE 28 "src/Correlate.hs" #-}
    map ceilingFFTSize [1..40]
  )
  [ExpectedLine [LineChunk "[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,18,20,20,22,22,24,24,26,26,28,28,30,30,32,32,36,36,36,36,40,40,40,40]"]]
 DocTest.printPrefix "Correlate:30: "
{-# LINE 30 "src/Correlate.hs" #-}
 DocTest.property(
{-# LINE 30 "src/Correlate.hs" #-}
      \n -> n <= ceilingFFTSize n
  )
 DocTest.printPrefix "Correlate:31: "
{-# LINE 31 "src/Correlate.hs" #-}
 DocTest.property(
{-# LINE 31 "src/Correlate.hs" #-}
      \(QC.Positive n) -> ceilingFFTSize n * 8 <= n * 9
  )
 DocTest.printPrefix "Correlate:53: "
{-# LINE 53 "src/Correlate.hs" #-}
 DocTest.property(
{-# LINE 53 "src/Correlate.hs" #-}
        
   \(QC.NonNegative preX, QC.NonNegative postX) ->
   \(QC.NonNegative preY, QC.NonNegative postY) ->
   \(QC.NonEmpty xs) ->
   all (0/=)  xs QC.==>

   preX - preY
   QC.===
   let v = SVL.pack SVL.defaultChunkSize xs in
   let pad n = SVL.replicate SVL.defaultChunkSize n (0::Float) in
   determineLag
      (pad preX <> v <> pad postX)
      (pad preY <> v <> pad postY)
  )