{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wall #-}
module Main where
import GHC.Exts (IsList (..))
import qualified Hedgehog as H
import NumHask.Array.Fixed
import NumHask.Array.Shape
import NumHask.Hedgehog
import NumHask.Prelude as P
import Test.DocTest
import qualified Prelude
genAIntegral :: forall a m r. (HasShape r, H.MonadGen m, Additive a, Bounded a, ToInteger a, FromInteger a) => m (Array (r :: [Nat]) a)
genAIntegral = fromList <$> replicateM (fromIntegral n) integral_
where
n = product $ shapeVal $ toShape @r
genARational :: forall a m r. (H.MonadGen m, HasShape r, Field a, Subtractive a, ToRatio a Integer, FromRatio a Integer) => m (Array (r :: [Nat]) a)
genARational = fromList <$> replicateM (fromIntegral n) negUniform
where
n = product $ shapeVal $ toShape @r
main :: IO ()
main = do
putStrLn ("NumHask.Array.Fixed DocTest turned on" :: Text)
doctest ["src/NumHask/Array/Fixed.hs"]
putStrLn ("NumHask.Array.Shape DocTest turned on" :: Text)
doctest ["src/NumHask/Array/Shape.hs"]
putStrLn ("NumHask.Array.Dynamic DocTest turned on" :: Text)
doctest ["src/NumHask/Array/Dynamic.hs"]
bVInt <-
assertProps
"Vector Int 6"
(Prelude.fromInteger 100)
(genAIntegral :: H.Gen (Vector 6 Int))
numhaskProps
bMInt <-
assertProps
"Matrix '[3,4] Int"
(Prelude.fromInteger 100)
(genAIntegral :: H.Gen (Array '[3, 4] Int))
numhaskProps
unless
(bVInt && bMInt)
exitFailure
numhaskProps ::
forall a.
( Show a,
Eq a,
Subtractive a
) =>
H.Gen a ->
[(H.PropertyName, H.Property)]
numhaskProps g =
mconcat $
(\x -> x g)
<$> [ isAdditive,
isSubtractive
]