@@ -6,11 +6,12 @@
66module Servant.API.ContentTypesSpec where
77
88import Control.Applicative
9+import Control.Arrow
910import Data.Aeson
1011import Data.Function (on)
1112import Data.Proxy
1213
13−import Data.ByteString.Char8
14+import Data.ByteString.Char8 (ByteString, append, pack)
1415import qualified Data.ByteString.Lazy as BSL
1516import Data.List (maximumBy)
1617import Data.Maybe (fromJust, isJust, isNothing)
@@ -19,6 +20,7 @@ import Data.String.Conversions (cs)
1920import qualified Data.Text as TextS
2021import qualified Data.Text.Lazy as TextL
2122import GHC.Generics
23+import Network.URL (importParams, exportParams)
2224import Test.Hspec
2325import Test.QuickCheck
2426import Test.QuickCheck.Instances ()
@@ -44,6 +46,14 @@ spec = describe "Servant.API.ContentTypes" $ do
4446 let p = Proxy :: Proxy FormUrlEncoded
4547 property $ \x -> fromByteString p (toByteString p x) == Right (x::[(TextS.Text,TextS.Text)])
4648
49+ it "has fromByteString reverse exportParams (Network.URL)" $ do
50+ let p = Proxy :: Proxy FormUrlEncoded
51+ property $ \x -> (fromByteString p . cs . exportParams . map (cs *** cs) $ x) == Right (x::[(TextS.Text,TextS.Text)])
52+
53+ it "has importParams (Network.URL) reverse toByteString" $ do
54+ let p = Proxy :: Proxy FormUrlEncoded
55+ property $ \x -> (fmap (map (cs *** cs)) . importParams . cs . toByteString p $ x) == Just (x::[(TextS.Text,TextS.Text)])
56+
4757 describe "The PlainText Content-Type type" $ do
4858
4959 it "has fromByteString reverse toByteString (lazy Text)" $ do