Добавил коменты

This commit is contained in:
2024-12-05 19:20:41 +03:00
parent 14d853c878
commit 4982ace7a6

View File

@@ -1,27 +1,33 @@
import Test.QuickCheck
import Lib
-- Если два числа равны по модулю, то их разность делится на модуль
propCongruentDifference :: Int -> Int -> Int -> Property
propCongruentDifference a b m =
m /= 0 ==> isCongruent a b m == ((a - b) `mod` m == 0)
-- Равенство по модулю является симметричным
propCongruentSymmetric :: Int -> Int -> Int -> Property
propCongruentSymmetric a b m =
m /= 0 ==> isCongruent a b m == isCongruent b a m
-- Если одно число равно другому, то они равны по любому модулю
propCongruentEqualNumbers :: Int -> Int -> Property
propCongruentEqualNumbers a m =
m /= 0 ==> isCongruent a a m == True
-- Все элементы результата удовлетворяют предикату
propFilterByPredicateSatisfiesPredicate :: Fun Int Bool -> [Int] -> Bool
propFilterByPredicateSatisfiesPredicate (Fun _ predicate) xs =
all predicate (filterByPredicate predicate xs)
-- Длина результата не превышает длину исходного списка
propFilterByPredicateLength :: Fun Int Bool -> [Int] -> Bool
propFilterByPredicateLength (Fun _ predicate) xs =
length (filterByPredicate predicate xs) <= length xs
-- Если предикат всегда возвращает True, то результат совпадает с исходным списком
propFilterByPredicateAlwaysTrue :: [Int] -> Bool
propFilterByPredicateAlwaysTrue xs =
filterByPredicate (\_ -> True) xs == xs