real-dice-0.1.0.0: test/RealDice/Util/PrimeSpec.hs
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
{-# HLINT ignore "Use camelCase" #-}
module RealDice.Util.PrimeSpec
( result_is_less_than_or_equal_to_input,
result_is_prime,
next_largest_prime_is_larger_than_input,
inputs_lower_than_1_return_0,
result_equals_result_from_equivalent_function,
)
where
import Data.Numbers.Primes (isPrime)
import RealDice.Util.Prime (greatestPrimeNotGreaterThan)
import Test.QuickCheck
result_is_prime :: Int -> Property
result_is_prime n = n > 1 ==> isPrime (greatestPrimeNotGreaterThan n)
result_is_less_than_or_equal_to_input :: Int -> Property
result_is_less_than_or_equal_to_input n =
n > 1 ==> greatestPrimeNotGreaterThan n <= n
next_largest_prime_is_larger_than_input :: Int -> Property
next_largest_prime_is_larger_than_input n = do
let result = greatestPrimeNotGreaterThan n
n > 1 ==> n < head (filter isPrime [result + 1, result + 2 ..])
inputs_lower_than_1_return_0 :: Int -> Property
inputs_lower_than_1_return_0 n = n < 1 ==> greatestPrimeNotGreaterThan n == 0
result_equals_result_from_equivalent_function :: Int -> Property
result_equals_result_from_equivalent_function n =
n > 1 ==>
greatestPrimeNotGreaterThan n == head (filter isPrime [n, n - 1 ..])