summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2012-03-10 15:51:52 +0000
committerSergei Trofimovich <slyfox@gentoo.org>2012-03-10 15:51:52 +0000
commit0cd1df0aae41f6e8e7fa5531f3b8c3862f8cc84e (patch)
treef3bbf868b8d78044747e09f5a0583082a8331b31 /dev-haskell/base64-bytestring
parentMoving dev-php/php-codecoverage to dev-php/PHP_CodeCoverage (diff)
downloadgentoo-2-0cd1df0aae41f6e8e7fa5531f3b8c3862f8cc84e.tar.gz
gentoo-2-0cd1df0aae41f6e8e7fa5531f3b8c3862f8cc84e.tar.bz2
gentoo-2-0cd1df0aae41f6e8e7fa5531f3b8c3862f8cc84e.zip
Initial version. Fast base64 encoding and deconding for ByteStrings for haskell. A depend for app-text/pandoc-1.9.
(Portage version: 2.2.0_alpha90_p1/cvs/Linux x86_64)
Diffstat (limited to 'dev-haskell/base64-bytestring')
-rw-r--r--dev-haskell/base64-bytestring/ChangeLog11
-rw-r--r--dev-haskell/base64-bytestring/base64-bytestring-0.1.1.1.ebuild40
-rw-r--r--dev-haskell/base64-bytestring/files/Tests.hs116
-rw-r--r--dev-haskell/base64-bytestring/metadata.xml11
4 files changed, 178 insertions, 0 deletions
diff --git a/dev-haskell/base64-bytestring/ChangeLog b/dev-haskell/base64-bytestring/ChangeLog
new file mode 100644
index 000000000000..80304c9dd83b
--- /dev/null
+++ b/dev-haskell/base64-bytestring/ChangeLog
@@ -0,0 +1,11 @@
+# ChangeLog for dev-haskell/base64-bytestring
+# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/dev-haskell/base64-bytestring/ChangeLog,v 1.1 2012/03/10 15:51:52 slyfox Exp $
+
+*base64-bytestring-0.1.1.1 (10 Mar 2012)
+
+ 10 Mar 2012; Sergei Trofimovich <slyfox@gentoo.org>
+ +base64-bytestring-0.1.1.1.ebuild, +files/Tests.hs, +metadata.xml:
+ Initial version. Fast base64 encoding and deconding for ByteStrings for
+ haskell. A depend for app-text/pandoc-1.9.
+
diff --git a/dev-haskell/base64-bytestring/base64-bytestring-0.1.1.1.ebuild b/dev-haskell/base64-bytestring/base64-bytestring-0.1.1.1.ebuild
new file mode 100644
index 000000000000..ec3d4ef02c61
--- /dev/null
+++ b/dev-haskell/base64-bytestring/base64-bytestring-0.1.1.1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-haskell/base64-bytestring/base64-bytestring-0.1.1.1.ebuild,v 1.1 2012/03/10 15:51:52 slyfox Exp $
+
+# ebuild generated by hackport 0.2.13
+
+EAPI="3"
+
+CABAL_FEATURES="lib profile haddock hscolour hoogle"
+inherit haskell-cabal
+
+DESCRIPTION="Fast base64 encoding and deconding for ByteStrings"
+HOMEPAGE="https://github.com/bos/base64-bytestring"
+SRC_URI="http://hackage.haskell.org/packages/archive/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+
+RDEPEND=">=dev-lang/ghc-6.10.1"
+DEPEND="${RDEPEND}
+ >=dev-haskell/cabal-1.8
+ test? (
+ dev-haskell/hunit
+ >=dev-haskell/quickcheck-2.4.0.1
+ dev-haskell/test-framework
+ dev-haskell/test-framework-hunit
+ dev-haskell/test-framework-quickcheck2
+ )
+ "
+
+src_prepare() {
+ cp "${FILESDIR}/Tests.hs" tests \
+ || die "Could not copy missing Tests.hs"
+}
+
+src_configure() {
+ cabal_src_configure $(use test && use_enable test tests) #395351
+}
diff --git a/dev-haskell/base64-bytestring/files/Tests.hs b/dev-haskell/base64-bytestring/files/Tests.hs
new file mode 100644
index 000000000000..da661f52382f
--- /dev/null
+++ b/dev-haskell/base64-bytestring/files/Tests.hs
@@ -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
+ ]
diff --git a/dev-haskell/base64-bytestring/metadata.xml b/dev-haskell/base64-bytestring/metadata.xml
new file mode 100644
index 000000000000..c07246e99cef
--- /dev/null
+++ b/dev-haskell/base64-bytestring/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>haskell</herd>
+ <maintainer>
+ <email>haskell@gentoo.org</email>
+ </maintainer>
+ <longdescription>
+ Fast base64 encoding and deconding for ByteStrings
+ </longdescription>
+</pkgmetadata>