{-# LANGUAGE UnicodeSyntax #-}
module ALife.Creatur.Genetics.CrossoverQC
(
test
) where
import ALife.Creatur.Genetics.Crossover (crossover, cutAndSplice)
import Data.Eq.Unicode ((≡))
import Test.Framework as TF (Test, testGroup)
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.QuickCheck (Property, property)
prop_cutAndSplice_preserves_sum_of_lengths ∷
Int → Int → (String, String) → Property
prop_cutAndSplice_preserves_sum_of_lengths n m (as, bs) =
property $ length as' + length bs' ≡ length as + length bs
where (as', bs') = cutAndSplice n m (as, bs)
prop_crossover_preserves_sum_of_lengths ∷ Int → (String, String) → Property
prop_crossover_preserves_sum_of_lengths n (as, bs) =
property $ length as' + length bs' ≡ length as + length bs
where (as', bs') = crossover n (as, bs)
test ∷ Test
test = testGroup "QuickCheck ALife.Creatur.Genetics.CrossoverQC"
[
testProperty "prop_cutAndSplice_preserves_sum_of_lengths"
prop_cutAndSplice_preserves_sum_of_lengths,
testProperty "prop_crossover_preserves_sum_of_lengths"
prop_crossover_preserves_sum_of_lengths
]