Чтобы добавлять сообщения и комментарии, .

@ndtimofeev:
ndtimofeev

А вот как бы мне нагенерить… типов. Положим у меня есть полиморфная сумма типов, полиморфное произведение типов и несколько штук листов. Всё это соединённое в произвольном порядке должно порождать некий тип удовлетворяющий определённому набору классов. Вопрос в том как бы мне случайным образом генерировать генераторы таких типов, чтобы сгенерированные ими значения пускать в тесты. Задача в том, чтобы потестировать Generic-код.

@ndtimofeev:
ndtimofeev

Я правильно понимаю, что generic arbitrary ещё не завезли в QuickCheck? Доколе? И где взять реализацию того шумно обсуждаемого алгоритма?

@segfault:
segfault

А не припомнит ли кто, как там пакет назывался с готовыми пропертями для проверки категорных законов инстансов Functor, Applicative, Monoid, Monad ?

@PineappleZombie:
PineappleZombie

Написал простенький набор тестов. Узнал много нового

@Dema:
Dema

Подскажите, не так давно видел библиотечку генератор properties для QuickCheck'а. Ей даёшь на вход функцию, она возвращает список properties. Типа даёшь f a b -> a+b, оно возвращает f a b == f b a, f 0 a == f a 0 и т.д. Вроде где-то на hackage, а найти не могу

@segfault:
segfault

github.com
такие дела

@trapdoor:
trapdoor

quickCheck (\a b c -> a + (b + c) == (a + b) + (c :: Float))

@qnikst:
qnikst

а что разве quickcheck генерирует "возрастающие" вектора если делать тест вида
quickCheck (foo :: [Int] -> Bool) ?

Если да, то это не круто как-то.

@qnikst:
qnikst

хочу сделать тест для quickchek check x = q1_rev12312 == q1_current идеи? Плагины могут помочь, это вообще реально? ну и тоже самое для criterion, но это уже не обязательно.

@segfault:
segfault

А что такое shrink в тайплассе Arbitrary ? Какая то магия с генерацией тестовых значений на основе обратной связи от теста, типа если где-то фейлится то значения в этой области значений будут генерироваться плотнее, только как он работает я не понял.

@qnikst:
qnikst

как нагенерировать байтстринги с заданными свойствами такими как длина (это в общем-то понятно) и процентное соотношение определённого символа

@qnikst:
qnikst

вот у меня возник вопрос по использованию quickcheck, как правильно строить тесты и какие тесты нужны. Например есть BinarySearchTree (собственно на этом примере и хотелось бы рассмотреть), тут явно видно инвариант в структуре, и можно его проверять после каждого изменения, но очевидно, что этого теста не достаточно.