File: WordListTest.hs

package info (click to toggle)
haskell-crypto 4.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 344 kB
  • sloc: haskell: 2,949; makefile: 2
file content (43 lines) | stat: -rw-r--r-- 1,529 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{-# LANGUAGE ScopedTypeVariables, PatternSignatures,
             FlexibleInstances, UndecidableInstances,
             TypeSynonymInstances #-}

import Data.LargeWord (Word128, Word192, Word256, LargeKey)
import Codec.Utils (listFromOctets, listToOctets)
import Data.Word (Word8, Word32, Word64)
import Test.QuickCheck

main :: IO ()
main = sequence_ $ map test checks where
    test :: (String, IO ()) -> IO ()
    test (s, t) = do putStrLn $ "Checking " ++ s
                     putStr "        "
                     t

checks :: [(String, IO ())]
checks = [
    ("Word32",
     quickCheck (\(w :: [Word32]) -> (listFromOctets . listToOctets) w == w)),
    ("Word64",
     quickCheck (\(w :: [Word64]) -> (listFromOctets . listToOctets) w == w)),
    ("Word128",
     quickCheck (\(w :: [Word128]) -> (listFromOctets . listToOctets) w == w)),
    ("Word192",
     quickCheck (\(w :: [Word192]) -> (listFromOctets . listToOctets) w == w)),
    ("Word256",
     quickCheck (\(w :: [Word256]) -> (listFromOctets . listToOctets) w == w))]

instance Arbitrary Word128 where
        arbitrary = do
                x <- vector (128 `div` 8) :: Gen [Word8]
                return $ head $ listFromOctets x

instance Arbitrary Word192 where
        arbitrary = do
                x <- vector (192 `div` 8) :: Gen [Word8]
                return $ head $ listFromOctets x

instance Arbitrary Word256 where
        arbitrary = do
                x <- vector (256 `div` 8) :: Gen [Word8]
                return $ head $ listFromOctets x