From 4982ace7a631138caf49719bc415b84bf169d9a5 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Thu, 5 Dec 2024 19:20:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab4/test/Spec.hs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lab4/test/Spec.hs b/lab4/test/Spec.hs index ab58924..274b9d3 100644 --- a/lab4/test/Spec.hs +++ b/lab4/test/Spec.hs @@ -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