File: YencTest.hs

package info (click to toggle)
haskell-sandi 0.3.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 336 kB
  • ctags: 54
  • sloc: haskell: 1,569; ansic: 1,501; makefile: 2
file content (59 lines) | stat: -rw-r--r-- 2,192 bytes parent folder | download
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{-# OPTIONS_GHC -XTemplateHaskell #-}
-- Copyright: (c) Magnus Therning, 2013
-- License: BSD3, found in the LICENSE file

module Codec.Binary.YencTest where

import Codec.TestUtils
import qualified Codec.Binary.Yenc as Y

import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BSC
import Data.Word (Word8)

import Test.Tasty
import Test.Tasty.TH
import Test.Tasty.QuickCheck
import Test.Tasty.HUnit

case_enc_foobar :: IO ()
case_enc_foobar = do
    BS.empty                          @=? Y.encode BS.empty
    BS.pack [144]                     @=? Y.encode (BSC.pack "f")
    BS.pack [144,153]                 @=? Y.encode (BSC.pack "fo")
    BS.pack [144,153,153]             @=? Y.encode (BSC.pack "foo")
    BS.pack [144,153,153,140]         @=? Y.encode (BSC.pack "foob")
    BS.pack [144,153,153,140,139]     @=? Y.encode (BSC.pack "fooba")
    BS.pack [144,153,153,140,139,156] @=? Y.encode (BSC.pack "foobar")

case_enc_specials :: IO ()
case_enc_specials = do
    -- expanded chars
    BS.pack [61,64]  @=? Y.encode (BS.pack [214])
    BS.pack [61,74]  @=? Y.encode (BS.pack [224])
    BS.pack [61,77]  @=? Y.encode (BS.pack [227])
    BS.pack [61,125] @=? Y.encode (BS.pack [19])

case_dec_foobar :: IO ()
case_dec_foobar = do
    Right BS.empty            @=? Y.decode BS.empty
    Right (BSC.pack "f")      @=? Y.decode (BS.pack [144])
    Right (BSC.pack "fo")     @=? Y.decode (BS.pack [144,153])
    Right (BSC.pack "foo")    @=? Y.decode (BS.pack [144,153,153])
    Right (BSC.pack "foob")   @=? Y.decode (BS.pack [144,153,153,140])
    Right (BSC.pack "fooba")  @=? Y.decode (BS.pack [144,153,153,140,139])
    Right (BSC.pack "foobar") @=? Y.decode (BS.pack [144,153,153,140,139,156])

case_dec_specials :: IO ()
case_dec_specials = do
    -- expanded chars
    Right (BS.pack [214]) @=? Y.decode (BS.pack [61,64])
    Right (BS.pack [224]) @=? Y.decode (BS.pack [61,74])
    Right (BS.pack [227]) @=? Y.decode (BS.pack [61,77])
    Right (BS.pack [19])  @=? Y.decode (BS.pack [61,125])

prop_encdec :: [Word8] -> Bool
prop_encdec ws = (BS.pack ws) == (fromRight $ Y.decode $ Y.encode $ BS.pack ws)

tests :: TestTree
tests = $(testGroupGenerator)