packages feed

tensort-0.2.0.1: test/SortSpec.hs

module SortSpec
  ( result_is_sorted_bits,
    result_is_sorted_records,
    result_is_sorted_records_short,
    result_is_sorted_custom_bitsize,
  )
where

import Data.Tensort.Tensort (tensortBN)
import Data.Tensort.Utils.Check (isSorted)
import Data.Tensort.Utils.Types (Bit, Record, SortAlg, Sortable (..))
import Test.QuickCheck

result_is_sorted_bits :: ([Bit] -> [Bit]) -> [Bit] -> Property
result_is_sorted_bits sort unsortedList =
  within
    100000
    ( (length unsortedList < 10) ==>
        isSorted (SortBit (sort unsortedList))
    )

result_is_sorted_records :: SortAlg -> [Record] -> Property
result_is_sorted_records sort unsortedList =
  within
    100000
    ( (length unsortedList < 10) ==>
        isSorted (sort (SortRec unsortedList))
    )

result_is_sorted_records_short :: SortAlg -> [Record] -> Property
result_is_sorted_records_short sort unsortedList =
  within
    100000
    ( (length unsortedList < 6) ==>
        isSorted (sort (SortRec unsortedList))
    )

result_is_sorted_custom_bitsize :: Int -> [Bit] -> Property
result_is_sorted_custom_bitsize n unsortedList =
  within
    100000
    ( (length unsortedList < 15) && (n > 1) ==>
        isSorted (SortBit (tensortBN n unsortedList))
    )