packages feed

apiary-0.16.0: test/Method.hs

{-# LANGUAGE OverloadedStrings #-}
module Method where

import Test.Framework
import Test.Framework.Providers.HUnit
import Test.HUnit hiding (Test)

import Data.Apiary.Method
import qualified Data.ByteString as S

stdMethods :: [S.ByteString]
stdMethods =
    [ "GET"
    , "POST"
    , "HEAD"
    , "PUT"
    , "DELETE"
    , "TRACE"
    , "CONNECT"
    , "OPTIONS"
    , "PATCH"
    ]

methodTests :: Test
methodTests = testGroup "Method"
    [ testCase "renderMethod . parseMethod == id" $
        mapM_ (\s -> 
            let s' = (renderMethod . parseMethod) s
            in assertBool (show s ++ " /= " ++ show s') $ s == s'
        ) ("YAMADA" : "neko" : "POSTa" : "DELET" : "CONNECt" : stdMethods)

    , testCase "parseMethod" $ do
        let assertMethod s t = assertBool (show s) $ parseMethod s == t
            assertNS s = assertMethod s (NonStandard s)
        assertMethod "GET"     GET
        assertMethod "POST"    POST
        assertMethod "HEAD"    HEAD
        assertMethod "PUT"     PUT
        assertMethod "DELETE"  DELETE
        assertMethod "TRACE"   TRACE
        assertMethod "CONNECT" CONNECT
        assertMethod "OPTIONS" OPTIONS
        assertMethod "PATCH"   PATCH
        assertNS "YAMADA"
        assertNS "neko"
        assertNS "POSTa"
        assertNS "DELET"
        assertNS "CONNECt"

    ]