packages feed

natskell-0.0.0.1: test/Unit/OkSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module OkSpec (spec) where

import           Control.Monad
import qualified Data.ByteString   as BS
import           Parser.API
    ( ParseStep (Emit)
    , ParsedMessage (ParsedOk)
    , parse
    )
import           Parser.Attoparsec (parserApi)
import           Test.Hspec
import           Text.Printf
import           Types.Ok

spec :: Spec
spec = do
  cases

explicitCases :: [(BS.ByteString, Ok)]
explicitCases = [("+OK\r\n", Ok)]

cases = parallel $ do
  describe "generic parser" $ do
    forM_ explicitCases $ \(input, want) ->
      it (printf "correctly parses explicit case %s" (show input)) $ do
        let output = parse parserApi input
        output `shouldBe` Emit (ParsedOk want) ""