module Tidal.PatternB where 

import Criterion.Main
import Tidal.Inputs
import Sound.Tidal.Pattern

arc1 = Arc 3 5 
arc2 = Arc 4 6
arc3 = Arc 0 1
arc4 = Arc 1 2

withQueryTimeB :: [Benchmark] 
withQueryTimeB = 
  [ bgroup "withQueryTime" [
      bench "wqt whnf" $ whnf withQueryTime (*2) 
    , bench "wqt2 whnf" $ whnf withQueryTime (+1)
    , bench "wqt nf" $ nf withQueryTime (*2) ]
  ]

withResultArcB :: [Benchmark]
withResultArcB = 
  [ bgroup "withResultArc" [
      bench "wqa med" $ whnf (withResultArc arcFunc) wqaMed
    , bench "wqa big" $ whnf (withResultArc arcFunc) wqaBig ]
  ]

withQueryArcB :: [Benchmark]
withQueryArcB = 
  [ bgroup "withQueryArc" [
      bench "wqa med" $ whnf (withQueryArc arcFunc) wqaMed
    , bench "wqa big" $ whnf (withQueryArc arcFunc) wqaBig ]
  ]

subArcB :: [Benchmark]
subArcB = 
  [ bgroup "subArc" [ 
      bench "intersecting" $ whnf (subArc arc1) arc2
    , bench "non-intersecting" $ whnf (subArc arc3) arc4 ]
  ]

sectB :: Benchmark 
sectB = bench "sect" $ whnf (sect arc1) arc2

hullB :: Benchmark 
hullB = bench "hull" $ whnf (hull arc1) arc2