packages feed

hw-uri-0.1.1.5: test/HaskellWorks/Data/Uri/Internal/ListSpec.hs

{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE OverloadedStrings #-}

module HaskellWorks.Data.Uri.Internal.ListSpec
  ( spec
  ) where

import Control.Monad
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec

import qualified Data.List                           as L
import qualified HaskellWorks.Data.Uri.Internal.List as L
import qualified Hedgehog.Gen                        as G
import qualified Hedgehog.Range                      as R

{-# ANN module ("HLint: ignore Redundant do"        :: String) #-}
{-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}
{-# ANN module ("HLint: ignore Redundant bracket"   :: String) #-}

spec :: Spec
spec = describe "HaskellWorks.Data.Uri.Internal.ListSpec" $ do
  it "splitBy" $ requireProperty $ do
    as <- forAll $ G.list (R.linear 1 3) (G.string (R.linear 0 3) G.alpha)
    when (as /= [""]) $ do
      annotateShow $ L.intercalate "/" as
      annotateShow $ L.splitBy (== '/') $ L.intercalate "/" as
      L.splitBy (== '/') (L.intercalate "/" as) === as