packages feed

neural-0.3.0.1: test/Data/FixedSize/VolumeSpec.hs

{-# LANGUAGE DataKinds #-}

module Data.FixedSize.VolumeSpec (spec) where

import Test.Hspec
import Data.Utils

spec :: Spec
spec = do
    indexSpec
    generateSpec

indexSpec :: Spec
indexSpec = describe "(!?)" $ do

    let v = generate id :: Volume 1 2 3 (Int, Int, Int)

    it "should give the specified element of the volume if the index is valid" $ do
        v !? (0, 0, 0) `shouldBe` Just (0, 0, 0)
        v !? (0, 1, 2) `shouldBe` Just (0, 1, 2)

    it "should return Nothing for an invalid index" $ do
        v !? (0, 0, 3) `shouldBe` Nothing
        v !? (1, 0, 0) `shouldBe` Nothing

generateSpec :: Spec
generateSpec = describe "generate" $

    it "should generate a volume" $ do

        let v =  generate id :: Volume 1 1 3 (Int, Int, Int)
        show v `shouldBe` "Volume (Matrix [[[(0,0,0),(0,0,1),(0,0,2)]]])"