packages feed

siphash-1.0.0: Tests/Tests.hs

{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where

import Control.Applicative
import Control.Monad

import Test.Framework (Test, defaultMain, testGroup)
import Test.Framework.Providers.QuickCheck2 (testProperty)

import Test.QuickCheck
import Test.QuickCheck.Test
import Test.Framework.Providers.QuickCheck2 (testProperty)

import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as B
import Crypto.MAC.SipHash

assertEq expected got
	| expected == got = True
	| otherwise       = error ("expected: " ++ show expected ++ " got: " ++ show got)

vectors =
    [ ( SipKey 0x0706050403020100 0x0f0e0d0c0b0a0908
      , "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e"
      , SipHash 0xa129ca6149be45e5
      )
    ]

katTests v = map (testProperty "kat" . makeTest) v
    where makeTest (key,msg,tag) = assertEq tag $ hash key msg

tests =
    [ testGroup "KAT" $ katTests vectors
    ]

main = defaultMain tests