packages feed

base64-bytestring 0.1.1.1 → 0.1.1.3

raw patch · 5 files changed

+127/−5 lines, 5 filesdep ~bytestringPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: bytestring

API changes (from Hackage documentation)

Files

Data/ByteString/Base64.hs view
@@ -1,4 +1,7 @@-{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 702+{-# LANGUAGE Trustworthy #-}+#endif  -- | -- Module      : Data.ByteString.Base64
Data/ByteString/Base64/URL.hs view
@@ -1,4 +1,7 @@-{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 702+{-# LANGUAGE Trustworthy #-}+#endif  -- | -- Module      : Data.ByteString.Base64.URL
base64-bytestring.cabal view
@@ -1,5 +1,5 @@ name:                base64-bytestring-version:             0.1.1.1+version:             0.1.1.3 synopsis:            Fast base64 encoding and deconding for ByteStrings description:         Fast base64 encoding and deconding for ByteStrings homepage:            https://github.com/bos/base64-bytestring@@ -29,7 +29,7 @@    build-depends:     base == 4.*,-    bytestring == 0.9.*+    bytestring >= 0.9.0    ghc-options: -Wall -funbox-strict-fields   ghc-prof-options: -auto-all
benchmarks/BM.hs view
@@ -3,7 +3,7 @@ import Criterion.Main import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.Base64 as B-import qualified Data.ByteString.Base64 as U+import qualified Data.ByteString.Base64.URL as U  sized name orig =     bgroup name [
+ tests/Tests.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE OverloadedStrings #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Main (main) where++import Test.Framework (Test, defaultMain, testGroup)+import Test.Framework.Providers.QuickCheck2 (testProperty)+import Test.Framework.Providers.HUnit (testCase)++import Test.QuickCheck (Arbitrary(..))++import Control.Monad (liftM)+import qualified Data.ByteString.Base64 as Base64+import qualified Data.ByteString.Base64.URL as Base64URL+import Data.ByteString (ByteString)+import Data.ByteString.Char8 ()+import qualified Data.ByteString as B+import Test.HUnit hiding (Test)+++main :: IO ()+main = defaultMain tests++tests :: [Test]+tests = [ +    testGroup "Base64" [+        testProperty "decodeEncode" $+          genericDecodeEncode Base64.encode Base64.decode+      , testProperty "decodeEncode Lenient" $+          genericDecodeEncode Base64.encode+                              (liftM Right Base64.decodeLenient)+      , testGroup "base64-string tests" base64_string_tests +    ]+  , testGroup "Base64URL" [+        testProperty "decodeEncode" $+          genericDecodeEncode Base64URL.encode Base64URL.decode+      , testProperty "decodeEncode Lenient" $+          genericDecodeEncode Base64URL.encode+                              (liftM Right Base64URL.decodeLenient)+      , testGroup "base64-string tests" base64url_string_tests +    ]+  ]++instance Arbitrary ByteString where+  arbitrary = liftM B.pack arbitrary++-- | Decoding an encoded sintrg should produce the original string.+genericDecodeEncode :: (ByteString -> ByteString)+                    -> (ByteString -> Either String ByteString)+                    -> ByteString -> Bool+genericDecodeEncode enc dec x = case dec (enc x) of+                                  Left  _  -> False+                                  Right x' -> x == x'+  +--+-- Unit tests from base64-string+-- Copyright (c) Ian Lynagh, 2005, 2007.+--++base64_string_tests :: [Test]+base64_string_tests = +  base64_string_test Base64.encode Base64.decode testData +++  base64_string_test Base64.encode decodeURL testData+  where decodeURL :: ByteString -> Either String ByteString+        decodeURL = liftM Right Base64.decodeLenient+        testData :: [(ByteString, ByteString)]+        testData = [("",                "")+                   ,("\0",              "AA==")+                   ,("\255",            "/w==")+                   ,("E",               "RQ==")+                   ,("Ex",              "RXg=")+                   ,("Exa",             "RXhh")+                   ,("Exam",            "RXhhbQ==")+                   ,("Examp",           "RXhhbXA=")+                   ,("Exampl",          "RXhhbXBs")+                   ,("Example",         "RXhhbXBsZQ==")+                   ,("Ex\0am\254ple",   "RXgAYW3+cGxl")+                   ,("Ex\0am\255ple",   "RXgAYW3/cGxl")+                   ]++-- | Same as the base64_string_tests but using the alternative alphabet+base64url_string_tests :: [Test]+base64url_string_tests =+  base64_string_test Base64URL.encode Base64URL.decode testData +++  base64_string_test Base64URL.encode decodeURL testData+  where decodeURL :: ByteString -> Either String ByteString+        decodeURL = liftM Right Base64URL.decodeLenient+        testData :: [(ByteString, ByteString)]+        testData = [("",                "")+                   ,("\0",              "AA==")+                   ,("\255",            "_w==")+                   ,("E",               "RQ==")+                   ,("Ex",              "RXg=")+                   ,("Exa",             "RXhh")+                   ,("Exam",            "RXhhbQ==")+                   ,("Examp",           "RXhhbXA=")+                   ,("Exampl",          "RXhhbXBs")+                   ,("Example",         "RXhhbXBsZQ==")+                   ,("Ex\0am\254ple",   "RXgAYW3-cGxl")+                   ,("Ex\0am\255ple",   "RXgAYW3_cGxl")+                   ]++-- | Generic test given encod enad decode funstions and a+-- list of (plain, encoded) pairs+base64_string_test :: (ByteString -> ByteString)+                   -> (ByteString -> Either String ByteString)+                   -> [(ByteString, ByteString)] -> [Test]+base64_string_test enc dec testData = concat+      [ [ testCase ("base64-string: Encode " ++ show plain)+                   (encoded_plain @?= encoded),+          testCase ("base64-string: Decode " ++ show plain)+                   (decoded_encoded @?= Right plain) ]+      | (plain, encoded) <- testData,+        let encoded_plain = enc plain+            decoded_encoded = dec encoded+      ]