{-# LANGUAGE DataKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
module Main where
import Test.Tasty
import Data.Matrix.Static.LinearAlgebra
import qualified Data.Matrix.Static.Dense as D
import qualified Data.Matrix.Static.Sparse as S
import Data.Singletons
import Data.Vector.Storable (Storable)
import GHC.TypeNats (KnownNat)
import Control.Monad.IO.Class (liftIO)
import Test.Tasty.QuickCheck
instance (Arbitrary a, KnownNat m, KnownNat n) => Arbitrary (Matrix m n a) where
arbitrary = D.fromList <$> vector (m*n)
where
m = fromIntegral $ fromSing (sing :: Sing m)
n = fromIntegral $ fromSing (sing :: Sing n)
shrink _v = []
{-
propTranspose :: Matrix 50 100 Double -> Bool
propTranspose m = D.transpose (D.transpose m) == m &&
D.convertAny (S.transpose $ S.transpose (D.convertAny m)) == m
-}
main :: IO ()
main = defaultMain $ testGroup "Main"
[ testProperty "" square
]