packages feed

hw-prim-0.6.3.1: test/HaskellWorks/Data/FoldableSpec.hs

{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}

{-# LANGUAGE ScopedTypeVariables #-}

module HaskellWorks.Data.FoldableSpec (spec) where

import Data.Maybe
import HaskellWorks.Data.Foldable
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec

import qualified Hedgehog.Gen   as G
import qualified Hedgehog.Range as R

{- HLINT ignore "Redundant do" -}

spec :: Spec
spec = describe "HaskellWorks.Data.FoldableSpec" $ do
  it "foldFirst" $ requireProperty $ do
    as <- forAll $ G.list (R.linear 0 10) (G.int R.constantBounded)
    foldFirst as === listToMaybe as
  it "foldLast" $ requireProperty $ do
    as <- forAll $ G.list (R.linear 0 10) (G.int R.constantBounded)
    foldLast as === listToMaybe (reverse as)