arrayfire-0.7.1.0: test/ArrayFire/UtilSpec.hs
{-# LANGUAGE TypeApplications #-}
module ArrayFire.UtilSpec where
import qualified ArrayFire as A
import Data.Complex
import Data.Int
import Data.Proxy
import Data.Word
import Foreign.C.Types
import System.Directory
import Test.Hspec
spec :: Spec
spec =
describe "Util spec" $ do
it "Should get size of" $ do
A.getSizeOf (Proxy @Int) `shouldBe` 8
A.getSizeOf (Proxy @Int64) `shouldBe` 8
A.getSizeOf (Proxy @Int32) `shouldBe` 4
A.getSizeOf (Proxy @Int16) `shouldBe` 2
A.getSizeOf (Proxy @Word) `shouldBe` 8
A.getSizeOf (Proxy @Word64) `shouldBe` 8
A.getSizeOf (Proxy @Word32) `shouldBe` 4
A.getSizeOf (Proxy @Word16) `shouldBe` 2
A.getSizeOf (Proxy @Word8) `shouldBe` 1
A.getSizeOf (Proxy @CBool) `shouldBe` 1
A.getSizeOf (Proxy @Double) `shouldBe` 8
A.getSizeOf (Proxy @Float) `shouldBe` 4
A.getSizeOf (Proxy @(Complex Float)) `shouldBe` 8
A.getSizeOf (Proxy @(Complex Double)) `shouldBe` 16
it "Should get version" $ do
(major, minor, patch) <- A.getVersion
major `shouldBe` 3
minor `shouldSatisfy` (>= 8)
patch `shouldSatisfy` (>= 0)
it "Should get revision" $ do
x <- A.getRevision
x `shouldSatisfy` (not . null)
it "Should save / read array" $ do
let arr = A.constant @Int [1,1,1,1] 10
idx <- A.saveArray "key" arr "file.array" False
doesFileExist "file.array" `shouldReturn` True
(`shouldBe` idx) =<< A.readArrayKeyCheck "file.array" "key"
(`shouldBe` arr) =<< A.readArrayIndex "file.array" idx
(`shouldBe` arr) =<< A.readArrayKey "file.array" "key"
removeFile "file.array"