packages feed

derive-storable-0.1.1.0: test/Spec/Foreign/Storable/Generic/ToolsSpec.hs

module Foreign.Storable.Generic.ToolsSpec where

--Tested modules
import Foreign.Storable.Generic.Tools

import Test.Hspec
import Test.QuickCheck

spec :: Spec 
spec = do 
    describe "getFilling" $ do
        it "getFilling [(2,2),(4,4),(1,1),(2,2)] == [Size 2, Padding 2, Size 4, Size 1, Padding 1, Size 2]" $ do
            getFilling [(2,2),(4,4),(1,1),(2,2)] `shouldBe` [Size 2, Padding 2, Size 4, Size 1, Padding 1, Size 2]
        it "getFilling [] = []" $ do
            getFilling [] `shouldBe` []
    describe "calcSize" $ do
        it "calcSize [] = 0" $ do
            calcSize [] `shouldBe` 0
        it "is equal to sum of padding" $ do
            let summer (Padding a) = a
                summer (Size    a) = a
            property $ do
                ls <- generate $ listOf $ suchThat arbitrary (\(a,b) -> a > 0 && b > 0)
                calcSize ls `shouldBe` (sum $ map summer $ getFilling ls)
    describe "calcOffsets" $ do
        it "calcOffsets [(2,2),(4,4),(1,1),(2,2)] == [0,4,8,10]" $ do
            calcOffsets [(2,2),(4,4),(1,1),(2,2)] `shouldBe` [0,4,8,10]
        it "calcOffsets [] = []" $ do
            calcOffsets [] `shouldBe` []