Генерация отсортированных данных с помощью test.check

Я хотел бы использовать test.check для генерации отсортированных данных временных рядов в форме

[ [timestamp value] [timestamp value] ..]

где отметка времени, пары значений находятся в порядке возрастания отметки времени.

Я могу легко генерировать такие данные в случайном порядке с

(gen/tuple timestamp gen/int) где timestamp например (gen/choose 1412664660 1423419720)

Как я должен идти о генерации отсортированных данных?

1 ответ

Решение

Так дошло до меня, когда я чистил зубы..

Когда я задал вопрос, я подумал "на один уровень ниже" о данных, которые я хочу сгенерировать.

(gen/tuple timestamp gen/int) генерирует отдельные кортежи и мои попытки сделать (gen/fmap sort .. ) на них не работал, потому что он просто отсортировал содержимое кортежей. Мне нужно сгенерировать векторы этих кортежей... и fmap sort на тех конечно работает:

(def entry (gen/tuple timestamp gen/int))
(def timeseries (gen/fmap sort (gen/vector entry)))
Другие вопросы по тегам