packages feed

binary-ext-2.0: test/Data/Conduit/Parsers/Text/Parser/Spec.hs

--
-- Copyright 2017 Warlock <internalmike@gmail.com>
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
--     http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--

module Data.Conduit.Parsers.Text.Parser.Spec
  ( tests
  ) where

import Data.Conduit
import qualified Data.Conduit.Combinators as N
import Data.Functor.Identity
import qualified Data.Text as S (Text)
import Test.HUnit.Base hiding (Label)
import Data.Conduit.Parsers.Binary.Get hiding (runGet)
import Data.Conduit.Parsers.Text.Parser

tests :: Test
tests = TestList
  [ TestCase testLinesRead
  ]

testLinesRead :: Assertion
testLinesRead = do
  let !r = runIdentity $ N.yieldMany testInput1 $$ runParser parser1
  assertEqual "" (Right ('t', 'x')) r

parser1 :: Parser () (Char, Char)
parser1 = do
  0 <- linesRead
  0 <- columnsRead
  c1 <- pChar
  0 <- linesRead
  1 <- columnsRead
  skipEndOfLine
  1 <- linesRead
  0 <- columnsRead
  skipCharIs 'a'
  1 <- linesRead
  1 <- columnsRead
  skipCharIs 'u'
  1 <- linesRead
  2 <- columnsRead
  skipEndOfLine
  2 <- linesRead
  0 <- columnsRead
  c2 <- pCharIsNot 'b'
  2 <- linesRead
  1 <- columnsRead
  endOfInput
  return (c1, c2)

testInput1 :: [S.Text]
testInput1 =
  [ "t\n"
  , "au\nx"
  , ""
  ]