integrationTests :: Test
integrationTests =
  testGroup "integration tests"
  [ testGroup (show roots)
    [ testGroup (show mapStrat)
      [ testGroup ("unroll in haskell: " ++ show unrollInHaskell)
        [ testCase "pendulum" $ compareIntegration (Proxy :: Proxy 80) (Proxy :: Proxy 3) dirCollOpts pendOde pendX0 pendP tf
        ]
      | unrollInHaskell <- [True, False]
      , let dirCollOpts =
              def
              { mapStrategy = mapStrat
              , collocationRoots = roots
              , unrollMapInHaskell = unrollInHaskell
              }
      ]
    | mapStrat <- [Unroll, Serial, OpenMP]
    ]
  | roots <- [Radau, Legendre]
  ]
  where
    tf = 3.0
integrationTests :: Test
integrationTests =
  testGroup "integration tests"
  [ testGroup (show roots)
    [ testGroup (show mapStrat)
      [ testGroup ("unroll in haskell: " ++ show unrollInHaskell)
        [ testCase "pendulum" $ compareIntegration (Proxy :: Proxy 80) (Proxy :: Proxy 3) dirCollOpts pendOde pendX0 pendP tf
        ]
      | unrollInHaskell <- [True, False]
      , let dirCollOpts =
              def
              { mapStrategy = mapStrat
              , collocationRoots = roots
              , unrollMapInHaskell = unrollInHaskell
              }
      ]
    | mapStrat <- [Unroll, Serial, OpenMP]
    ]
  | roots <- [Radau, Legendre]
  ]
  where
    tf = 3.0
integrationTests =
  testGroup "integration tests"
  [ testGroup (show roots)
    [ testGroup (show mapStrat)
      [ testGroup ("unroll in haskell: " ++ show unrollInHaskell)
        [ testCase "pendulum" $ compareIntegration (Proxy :: Proxy 80) (Proxy :: Proxy 3) dirCollOpts pendOde pendX0 pendP tf
        ]
      | unrollInHaskell <- [True, False]
      , let dirCollOpts =
              def
              { mapStrategy = mapStrat
              , collocationRoots = roots
              , unrollMapInHaskell = unrollInHaskell
              }
      ]
    | mapStrat <- [Unroll, Serial, OpenMP]
    ]
  | roots <- [Radau, Legendre]
  ]
  where
    tf = 3.0