packages feed

kademlia-1.1.0.0: test/Types.hs

{-|
Module      : Types
Description : Tests for Network.Kademlia.Types

Tests specific to Network.Kademlia.Types.
-}

module Types where

import Test.QuickCheck

import qualified Data.ByteString as B
import Data.Bits (testBit)

import TestTypes
import Network.Kademlia.Types

-- | Checks wether toByteStruct converts corretctly
toByteStructCheck :: IdType -> Bool
toByteStructCheck id = foldl foldingFunc True [0..length converted - 1]
    where converted = toByteStruct id
          words = B.unpack . toBS $ id
          foldingFunc b i = b && (converted !! i == access words i)
          access ws i = testBit (ws !! (i `div` 8)) (i `mod` 8)

-- | Checks wether fromByteStruct converts corretctly
fromByteStructCheck :: IdType -> Bool
fromByteStructCheck id = id == (fromByteStruct . toByteStruct $ id)