synthesizer-core-0.9: test/Test/Sound/Synthesizer/Generic/Cut.hs
module Test.Sound.Synthesizer.Generic.Cut (tests) where
import qualified Synthesizer.Generic.Cut as CutG
import qualified Synthesizer.Generic.Signal as SigG
import qualified Synthesizer.Storable.Signal as SigSt
import qualified Synthesizer.ChunkySize.Signal as SigChunky
import qualified Synthesizer.ChunkySize as ChunkySize
import qualified Data.StorableVector as SV
import qualified Data.StorableVector.Lazy.Pattern as SVP
import qualified Synthesizer.State.Signal as SigS
import qualified Data.EventList.Relative.BodyTime as EventList
import qualified Number.NonNegative as NonNeg
import qualified Number.NonNegativeChunky as Chunky
import qualified Numeric.NonNegative.Wrapper as NonNeg98
import Data.Tuple.HT (mapSnd, )
import Test.QuickCheck (Property, property)
import NumericPrelude.Numeric
import NumericPrelude.Base
import Prelude ()
dropMarginRemLength :: NonNeg.Int -> NonNeg.Int -> [Int] -> Bool
dropMarginRemLength nn nm xs =
let n = NonNeg.toNumber nn
m = NonNeg.toNumber nm
(k,ys) = CutG.dropMarginRem n m xs
in length xs - m == length ys - k
dropMarginRemState :: NonNeg.Int -> NonNeg.Int -> [Int] -> Bool
dropMarginRemState nn nm xs =
let n = NonNeg.toNumber nn
m = NonNeg.toNumber nm
in CutG.dropMarginRem n m (SigS.fromList xs)
==
mapSnd SigS.fromList (CutG.dropMarginRem n m xs)
dropMarginRemSV :: NonNeg.Int -> NonNeg.Int -> [Int] -> Bool
dropMarginRemSV nn nm xs =
let n = NonNeg.toNumber nn
m = NonNeg.toNumber nm
in CutG.dropMarginRem n m (SV.pack xs)
==
mapSnd SV.pack (CutG.dropMarginRem n m xs)
dropMarginRemSVL :: NonNeg.Int -> NonNeg.Int -> ChunkySize.T -> [Int] -> Bool
dropMarginRemSVL nn nm pat xs =
let n = NonNeg.toNumber nn
m = NonNeg.toNumber nm
in CutG.dropMarginRem n m
(CutG.take (CutG.length pat) xs)
==
mapSnd SigG.toList
(CutG.dropMarginRem n m
(SigChunky.fromState pat $
SigG.toState xs :: SigSt.T Int))
dropMarginRemChunkySize ::
NonNeg.Int -> NonNeg.Int -> ChunkySize.T -> Int -> Bool
dropMarginRemChunkySize nn nm pat x =
let n = NonNeg.toNumber nn
m = NonNeg.toNumber nm
in CutG.dropMarginRem n m pat
==
mapSnd
(ChunkySize.fromStorableVectorSize . SVP.length)
(CutG.dropMarginRem n m
(SVP.replicate (ChunkySize.toStorableVectorSize pat) x))
dropMarginRemPiecewise ::
NonNeg.Int -> NonNeg.Int -> ChunkySize.T -> Int -> Bool
dropMarginRemPiecewise nn nm pat x =
let n = NonNeg.toNumber nn
m = NonNeg.toNumber nm
in CutG.dropMarginRem n m pat
==
mapSnd
(Chunky.fromChunks .
map (\size -> ChunkySize.LazySize $ NonNeg98.toNumber size) .
EventList.getTimes)
(CutG.dropMarginRem n m
(EventList.fromPairList $ map ((,) x) $
map (\(ChunkySize.LazySize size) -> NonNeg98.fromNumber size) $
Chunky.toChunks pat))
tests :: [(String, Property)]
tests =
("dropMarginRemLength", property dropMarginRemLength) :
("dropMarginRemState", property dropMarginRemState) :
("dropMarginRemSV", property dropMarginRemSV) :
("dropMarginRemSVL", property dropMarginRemSVL) :
("dropMarginRemChunkySize", property dropMarginRemChunkySize) :
("dropMarginRemPiecewise", property dropMarginRemPiecewise) :
[]