Yampa-0.9.2: tests/AFRPTestsDelay.hs
{- $Id: AFRPTestsDelay.hs,v 1.2 2003/11/10 21:28:58 antony Exp $
******************************************************************************
* A F R P *
* *
* Module: AFRPTestsDelay *
* Purpose: Test cases for delays *
* Authors: Antony Courtney and Henrik Nilsson *
* *
* Copyright (c) Yale University, 2003 *
* *
******************************************************************************
-}
module AFRPTestsDelay (delay_tr, delay_trs) where
import FRP.Yampa
import AFRPTestsCommon
------------------------------------------------------------------------------
-- Test cases for delays
------------------------------------------------------------------------------
delay_t0 = testSF1 (delay 0.0 undefined)
delay_t0r =
[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,
15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0]
delay_t1 = testSF1 (delay 0.0001 17)
delay_t1r =
[17.0,0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,
15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0]
delay_t2 = testSF2 (delay 0.0001 17)
delay_t2r =
[17.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,2.0,
3.0,3.0,3.0,3.0,3.0,4.0,4.0,4.0,4.0]
delay_t3 = testSF1 (time
>>> arr (\t -> sin (0.5 * t * pi + pi))
>>> loop (arr (\(x1,x2) -> let x' = max x1 x2 in (x',x'))
>>> second (delay 0.0001 0.0)))
delay_t3r =
take 25
(let xs = [ sin (0.5 * t * pi + pi) | t <- [0.0, 0.25 ..] ]
in tail (scanl max 0 xs))
dts_t4 = take 15 (repeat 0.1)
++ [0.5, 0.5]
++ take 15 (repeat 0.1)
++ [2.0]
++ take 20 (repeat 0.1)
input_t4 = (0, [ (dt, Just i) | (dt, i) <- zip dts_t4 [1..] ])
delay_t4, delay_t4r :: [Int]
delay_t4 = take 100 (embed (delay 1.05 (-1)) input_t4)
delay_t4r =
[ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -- 0.0 s -- 0.9 s
-1, 0, 1, 2, 3, 4, -- 1.0 s -- 1.5 s
9, 14, 15, 15, 15, 15, -- 2.0 s -- 2.9 s
15, 16, 16, 16, 16, 16, 17, 18, 19, 20, -- 3.0 s -- 3.9 s
21, -- 4.0 s
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -- 6.0 s -- 6.9 s
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -- 7.0 s -- 7.9 s
42 -- 8.0 s
]
delay_t5 = take 100 (drop 6 (embed sf (deltaEncode 0.1 (repeat ()))))
where
sf = time >>> arr (\t -> sin (2*pi*t)) >>> delay 0.55 (-1.0)
delay_t5r = take 100 (drop 6 (embed sf (deltaEncode 0.1 (repeat ()))))
where
sf = time >>> arr (\t -> sin (2*pi*(t-0.6)))
delay_trs =
[ delay_t0 ~= delay_t0r,
delay_t1 ~= delay_t1r,
delay_t2 ~= delay_t2r,
delay_t3 ~= delay_t3r,
delay_t4 == delay_t4r,
delay_t5 ~= delay_t5r
]
delay_tr = and delay_trs