packages feed

second-transfer-0.10.0.1: tests/tests-hs-src/Tests/TestIOCalbks.hs

{-# LANGUAGE OverloadedStrings #-}
module Tests.TestIOCalbks where

import           Control.Lens

import qualified Data.ByteString                     as B
import qualified Data.ByteString.Lazy                as LB
import qualified Data.ByteString.Builder             as Bu
import           Data.Maybe                          (isJust)

import           Test.HUnit

import           SecondTransfer.IOCallbacks.Types
import           SecondTransfer.IOCallbacks.Coupling

import           SecondTransfer                      (Headers)
import           SecondTransfer.Http1.Parse
import qualified SecondTransfer.Utils.HTTPHeaders    as He


testPair :: Test
testPair = TestCase $ do
  (ioap, iobp) <- popIOCallbacksIntoExistance
  ioa <- handshake ioap
  iob <- handshake iobp
  (ioa ^. pushAction_IOC) "Hello world"
  n <- (iob ^. pullAction_IOC) $ B.length "Hello world"
  assertEqual "testTransitsInPair" n "Hello world"


testPair2 :: Test
testPair2 = TestCase $ do
  (ioap, iobp) <- popIOCallbacksIntoExistance
  ioa <- handshake ioap
  iob <- handshake iobp
  (ioa ^. pushAction_IOC) "Hello world"
  n <- (iob ^. pullAction_IOC) $ B.length "Hello world" - 1
  assertEqual "testTransitsInPair" n "Hello worl"
  (ioa ^. pushAction_IOC) "xebo"

  nn <- (iob ^. pullAction_IOC) $ B.length "dxebo"
  assertEqual "testTransitsInPair2" nn "dxebo"


testPair3 :: Test
testPair3 = TestCase $ do
  (ioap, iobp) <- popIOCallbacksIntoExistance
  ioa <- handshake ioap
  iob <- handshake iobp
  (ioa ^. pushAction_IOC) "Hello world"
  n <- (iob ^. pullAction_IOC) $ B.length "Hello world" - 1
  assertEqual "testTransitsInPair" n "Hello worl"
  nn <- (iob ^. bestEffortPullAction_IOC) False
  assertBool "testTransitsInPair2" (B.length nn > 0)