packages feed

linear-base-0.8.1: test-examples/Test/Simple/Quicksort.hs

{-# LANGUAGE OverloadedStrings #-}

module Test.Simple.Quicksort (quicksortTests) where

import Data.List (sort)
import Hedgehog
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import Simple.Quicksort (quicksortUsingArray, quicksortUsingList)
import Test.Tasty
import Test.Tasty.Hedgehog (testPropertyNamed)

quicksortTests :: TestTree
quicksortTests =
  testGroup
    "quicksort tests"
    [ testPropertyNamed "sort xs === quicksortUsingArray xs" "testQuicksortUsingArray" testQuicksortUsingArray,
      testPropertyNamed "sort xs === quicksortUsingList xs" "testQuicksortUsingList" testQuicksortUsingList
    ]

testQuicksortUsingArray :: Property
testQuicksortUsingArray = property $ do
  xs <- forAll $ Gen.list (Range.linear 0 1000) (Gen.int $ Range.linear 0 100)
  sort xs === quicksortUsingArray xs

testQuicksortUsingList :: Property
testQuicksortUsingList = property $ do
  xs <- forAll $ Gen.list (Range.linear 0 1000) (Gen.int $ Range.linear 0 100)
  sort xs === quicksortUsingList xs