Описание тега quickcheck

QuickCheck - это библиотека Haskell для тестирования программного обеспечения. Он генерирует тестовые примеры и проверяет их на соответствие утверждениям, предоставленным программистом.
1 ответ

Создание произвольного экземпляра для нового типа, который использует Maybe

Я хочу создать Arbitrary экземпляр для следующего нового типа, чтобы использовать его для QuickCheck: newtype Wrapmaybe a = Wrapmaybe {getMaybe :: Maybe a} deriving (Eq, Show) Я знаю что Arbitrary экземпляр для Maybe можно записать следующим образом…
17 окт '16 в 15:01
1 ответ

Где я могу определить произвольные экземпляры?

Я не могу понять, где определить Arbitrary экземпляры для моего типа данных. Если я положу его в пакет, то пакет должен иметь QuickCheck как зависимость. Если я добавлю его в тесты, то другие пакеты не смогут использовать этот экземпляр. Если я поме…
2 ответа

Невозможно определить пользовательский экземпляр `Arbitrary` для`Char`, так как он уже существует

Я попытался выполнить Введение в Quickcheck и хотел проверить свою функцию, которая принимает строки, содержащие цифры. Для этого я определил Arbitrary экземпляр для Char: instance Arbitrary Char where arbitrary = choose ('0', '9') Но GHC жалуется н…
11 апр '15 в 12:25
1 ответ

Haskell: свойство QuickCheck не проходит тесты с использованием последствий

У меня есть следующее свойство, которое я хочу проверить с помощью quickcheck: prop_zip xs ys = length xs == length ys ==> unzip (zip xs ys) == (xs,ys) Несмотря на то, что в соответствии с определением zip и unzip кажется логически правильным, чт…
10 фев '14 в 11:05
1 ответ

Проблема с использованием quickCheckAll и GHC 7.10.1 RC1

Следующий пример компилируется с GHC 7.8.4 и QuickCheck 2.7.6: {-# LANGUAGE TemplateHaskell #-} import Test.QuickCheck prop_id :: Eq a => a -> Bool prop_id x = x == x -- Hack to make $quickCheckAll work under GHC >= 7.8. return [] main :: I…
10 янв '15 в 14:41
3 ответа

Как использовать 'oneof' в quickCheck (Haskell)

Я пытаюсь написать реквизит, который изменяет судоку, а затем проверяет, все ли еще действует. Однако я не уверен, как правильно использовать функцию oneof. Можете ли вы дать мне несколько советов, пожалуйста? prop_candidates :: Sudoku -> Bool pr…
1 ответ

Как напечатать тестовое семя в тестовой среде Haskell?

test-framework Документы утверждают, что он поддерживает "Отчет о затравке, использованной при неудачном запуске QuickCheck, так что вы можете воспроизвести сбой в случае необходимости". Однако вывод по умолчанию не отображает это, и я не могу найти…
09 фев '16 в 15:44
1 ответ

Быстрая проверка, определяющая произвольные экземпляры с использованием функции, результат которой зависит от ее аргументов

У меня есть функция arbExample генерировать случайный Example тип данных, который зависит от ряда функций. Я пытаюсь сделать некоторое тестирование свойства, делая quickCheck prop_exampleпроблема в том, что я не знаю, как определить Arbitrary экземп…
22 ноя '14 в 02:53
0 ответов

Сжатие типов и значений вместе без экспоненциального увеличения

Предположим, у меня есть пара структур данных; один представляет тип, а другой значение: data Schema = Leaf | PairOf Schema Schema | ListOf Schema data ValueOf (schema :: Schema) where LeafElem :: String -> ValueOf 'Leaf PairElem :: ValueOf x -&g…
2 ответа

"кулинарная книга" для преобразования из QuickCheck1 в QuickCheck2?

Существует ли кулинарная книга для преобразования из QuickCheck1 в QuickCheck2? Как некоторые примеры, defaultConfig ( заменено на Args) а также trivial были удалены и CoArbitrary представил. Я прочитал, что нового в QuickCheck 2 (с единственным отв…
23 май '12 в 01:34
1 ответ

Quickcheck генератор карт

Итак, я взломал это: prop = forAll genCards $ \cards -> collect (go cards == True) $ isFlush cards == go cards go cards = (length . nub . map (\w -> last w)) cards == 1 genCard :: Gen String genCard = elements[ "1C", "2C", "3C", "4C", "5C", "6…
16 авг '18 в 22:55
2 ответа

Отображение функций, используемых в свойствах QuickCheck

Я пытаюсь написать свойство QuickCheck, которое принимает одну или несколько функций в качестве входных данных. Для простоты рассмотрим свойство, позволяющее проверить, что состав функций эквивалентен последовательному приложению функций и тестируем…
06 мар '11 в 04:05
2 ответа

Использование Haskell QuickCheck для проверки валидатора TCP-порта

Я пытаюсь использовать QuickCheck (впервые) для проверки функции, которая проверяет номера портов TCP: validatePort :: Int -> Either String Int validatePort port = if port > 0 && port <= 65535 then Right port else Left "Port must be…
01 сен '13 в 13:22
0 ответов

junit-quickcheck: как писать генераторы идиоматическим способом

При написании генератора для junit-quickcheck легко использовать Ctor или же Fields методы отражения предоставляются. Но применение отражения непосредственно к моим бизнес-моделям не позволяет мне ограничивать сгенерированные данные (если я не черед…
25 июл '17 в 07:10
2 ответа

Есть ли монадическая версия Arbitrary для использования с QuickCheck?

Когда я хочу проверить чистый код, используя QuickCheck Мне часто приходится писать Arbitrary пример. Чтобы проверить монадический код, я могу использовать Test.QuickCheck.Monadic как описано в этой статье. Мой вопрос: существует ли какой-то канонич…
2 ответа

Тест QuickCheck случайно зависает

Я новичок в Хаскеле. Я играю с тестами QuickCheck, пытаюсь протестировать простую функцию calculateStrengthSingle (см. источник тестируемого ниже) # Fighter.hs module Fighter ( Quantity(Quantity) , Fighter(TeamPlayer, LoneWolf, Polymorph) , Strength…
12 авг '13 в 20:43
1 ответ

Почему этот тест QuickCheck с полиморфной подписью проходит, когда он должен провалиться?

Учитывая следующий тестовый код с использованием QuickCheck, я ожидаю, что prop_Max errMax должен потерпеть неудачу как определение errMax это неверно. Это происходит, когда я использую данную подпись для prop_Max с конкретным типом Int, Однако, ког…
04 окт '14 в 13:22
1 ответ

Тестирование генератора случайных чисел с использованием QuickCheck

Я написал генератор случайных чисел для создания доски тральщика. Он возвращает Gen Board, где Board - мой собственный определенный тип данных. Я хочу проверить, что он делает то, что должен. Поскольку это генератор, я не могу использовать функции, …
09 дек '14 в 14:20
0 ответов

QuickCheck вместе с haskell-mode в emacs, ^H

При использовании QuickCheck вместе с haskell-mode в emacs вывод начинается с (продолжая до значения по умолчанию 100 тестов): (0 tests)^H^H^H^H^H^H^H^H^H ^H^H^H^H^H^H^H^H^H(1 test) где ^H (Control H) - терминальное представление UNIX для backspace.…
21 дек '15 в 17:01
1 ответ

QuickCheck 2 пакетной обработки

Batch модуль QuickCheck был удален с версией 2 ( 1.2.0.1 все еще есть). Из-за этого я всегда чувствую mapM_-создание нескольких тестов вместе - отчасти хак. Я пропускаю функцию преемника в QuickCheck 2? Существует ли канонический способ группировки …
23 ноя '12 в 17:35