From f5fb4f27b4e9cecdc3afc2facc8e39717ea20524 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Tue, 26 Apr 2016 08:56:21 -0400 Subject: Initial commit This is just dataenc-0.14.0.7 from hackage with the upper bound on 'base' changed in dataenc.cabal. I couldn't find a git repo to fork, so I used 'stack unpack' --- test-src/DataencUT.hs | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 test-src/DataencUT.hs (limited to 'test-src/DataencUT.hs') diff --git a/test-src/DataencUT.hs b/test-src/DataencUT.hs new file mode 100644 index 0000000..af91a0f --- /dev/null +++ b/test-src/DataencUT.hs @@ -0,0 +1,225 @@ +{-# OPTIONS_GHC -XTemplateHaskell #-} +{- + - Copyright : (c) 2007 Magnus Therning + - License : BSD3 + -} + +module DataencUT + where + +import Test.HUnit +import Control.Monad +import System.Exit +import Data.Maybe +import qualified Test.Framework.Providers.API as TFAPI +import Test.Framework.TH +import Test.Framework.Providers.HUnit + +import Codec.Binary.DataEncoding +import qualified Codec.Binary.Yenc as Yenc + +-- {{{1 checkAssertions +checkAssertions (suite, desc, enc, dec, codec) = do + enc @=? encode codec dec + dec @=? fromJust (decode codec enc) + +-- {{{1 uuencode tests +uuTestData = + [ ("uu", "empty", "", [], uu) + , ("uu", "\\0", "``", [0], uu) + , ("uu", "\\255", "_P", [255], uu) + , ("uu", "AA", "04$", [65, 65], uu) + , ("uu", "AAA", "04%!", [65, 65, 65], uu) + , ("uu", "AAAA", "04%!00", [65, 65, 65, 65], uu) + , ("uu", "Example", "17AA;7!L90", [69,120,97,109,112,108,101], uu) + ] +case_uuTests = mapM_ checkAssertions uuTestData + +case_uuTests2 = do + "EI2" @=? unchop uu (chop uu 1 "EI2") + "EI3-" @=? unchop uu (chop uu 1 "EI3-") + "EI3-EE" @=? unchop uu (chop uu 1 "EI3-EE") + [0..255] @=? fromJust (decode uu $ unchop uu $ chop uu 1 $ encode uu [0..255]) + [0..255] @=? fromJust (decode uu $ unchop uu $ chop uu 61 $ encode uu [0..255]) + [0..255] @=? fromJust (decode uu $ unchop uu $ chop uu 100 $ encode uu [0..255]) + +case_uuTestsFail = do + Nothing @=? decode uu "A" + Nothing @=? decode uu "aa" + +-- {{{1 xxencode tests +xxTestData = + [ ("xx", "empty", "", [], xx) + , ("xx", "\\0", "++", [0], xx) + , ("xx", "\\255", "zk", [255], xx) + , ("xx", "AA", "EI2", [65, 65], xx) + , ("xx", "AAA", "EI3-", [65, 65, 65], xx) + , ("xx", "AAAA", "EI3-EE", [65, 65, 65, 65], xx) + , ("xx", "Example", "FLVVPL-gNE", [69,120,97,109,112,108,101], xx) + ] +case_xxTest = mapM_ checkAssertions xxTestData + +case_xxTests2 = do + "EI2" @=? unchop xx (chop xx 1 "EI2") + "EI3-" @=? unchop xx (chop xx 1 "EI3-") + "EI3-EE" @=? unchop xx (chop xx 1 "EI3-EE") + [0..255] @=? fromJust (decode xx $ unchop xx $ chop xx 1 $ encode xx [0..255]) + [0..255] @=? fromJust (decode xx $ unchop xx $ chop xx 61 $ encode xx [0..255]) + [0..255] @=? fromJust (decode xx $ unchop xx $ chop xx 100 $ encode xx [0..255]) + +case_xxTestsFail = do + Nothing @=? decode xx "A" + Nothing @=? decode xx "''" + +-- {{{1 base85 tests +base85TestData = + [ ("base85", "empty", "", [], base85) + , ("base85", "f", "Ac", [102], base85) + , ("base85", "fo", "Ao@", [102,111], base85) + , ("base85", "foo", "AoDS", [102,111,111], base85) + , ("base85", "foob", "AoDTs", [102,111,111,98], base85) + , ("base85", "fooba", "AoDTs@/", [102,111,111,98,97], base85) + , ("base85", "foobar", "AoDTs@<)", [102,111,111,98,97,114], base85) + , ("base85", "\0", "!!", [0], base85) + , ("base85", "foob\0\0\0\0ar", "AoDTszEW", [102,111,111,98,0,0,0,0,114], base85) + , ("base85", "Example", "7<0x1f><0x20><0x7e><0x7f><0xff>", "\\x00\\x1F ~\\x7F\\xFF", [0x00, 0x1f, 0x20, 0x7e, 0x7f, 0xff], py) + , ("py", "\"\'\\", "\\\"\\'\\\\", [34, 39, 92], py) + ] +case_pyTests = mapM_ checkAssertions pyTestData + +case_pyTestsFail = do + Nothing @=? decode py "\\z" + +-- {{{1 url encoding +urlTestData = + [ ("url", "empty", "", [], url) + , ("url", "aA", "aA", [97, 65], url) + , ("url", "~ ", "~%20", [126, 0x20], url) + ] +case_urlTests = mapM_ checkAssertions urlTestData + +case_urlTestsFail = do + Nothing @=? decode url "%ga" + Nothing @=? decode url "%%" + +-- {{{1 all the tests +allTests = $(testGroupGenerator) -- cgit v1.2.3