@serioga ^^^
значит просто перечисляешь нужные тесты в каждой реализации, если набор тестов разный
набор тестов одинаковый
и вообще, смотря что за тест он же может и не использовать реализацию
разный контекст
еще раз 😃
есть протокол
есть 2 реализации
я хочу наложить на реализации некоторые ограничения
которые нельзя выразить clojure.spec например
> я хочу наложить на реализации некоторые ограничения про это ничего не было сказано
да
т.е. скажем, у меня есть протокол для генерации идентификаторов
и там один метод
я сделал в рамках того, что обсуждалось
я хочу, чтобы все его реализации возвращали pos-in?
и принимали как параметр пространство в котором нужно генерировать id
и это пространство - keyword
пока просто
а теперь у меня есть более сложный протокол
и я хочу проверить, что реализация правильно работает в многопоточном окружении
и это уже именно проверки кодом
> и принимали как параметр пространство в котором нужно генерировать id заведи ещё одну динамическую переменную, для пространства генерации айди
ты не понял =(
вот смотри
у тебя есть вилка и розетка
электрические
я понял, что у тебя постоянно усложняются условия задачи
есть их “протокол” - стандарт
и я хочу проверять реализует ли этот стандарт реализацию
выдерживает ли розетка ток, указанный в стандарте
выдерживает ли она удары молотком
и т.п.
@serioga тесты решают эту задачу? или я неправильный инструмент выбрал?
я вижу, что вариант с ns-hook позволяет как угодно перековырять поведение тестов и надстроить сверху всё-что угодно. то есть проблему написать любую сложную машинерию не вижу
смотри
есть ns-hook
программные тесты не решают задачу ударов молотком
в нем вызываются несколько тестов
и каждый этот тест нужно завернуть в фикстуру
или ты предлагаешь как-то так:
(defn test-suite []
(*wrapper* test-bar)
(*wrapper* test-baz))
я предлагаю написать так, как требует задача
но я вижу, что твою задачу я до конца не знаю
test-suite
нужен только для того, чтобы было идентичное тестирование для обоих реализаций
если тестирование не идентичное, то у каждой реализации в ns-hook пишется что-то своё, с использованием тестов из протокольной части
давай так, у тебя есть время/желание продолжать?
то есть я просто проверил способ переиспользования тестов реализациями, не более того
> давай так, у тебя есть время/желание продолжать? ну, только если ты по прежнему видешь какую-то неразрешимую проблему, которую ты хотел бы решить ну и не сейчас, конечно, а вечером или на выходных
можно даже голосом
вопрос остался - да попробую сделать маленький пример чтобы было с чем работать
вечер - это во сколько?
после 19 CET
примерно как в предыдущии дни было
> попробую сделать маленький пример давай проект на гитхабе, желательно lein based
https://github.com/darkleaf/protocol-testing сам протокол, обвязка, тесты еще будут рефакториться, это не предмет вопроса. вопрос в том, как убрать дублирование в тестах + https://github.com/darkleaf/protocol-testing/blob/master/test/protocol_testing/storage_fake_test.clj + https://github.com/darkleaf/protocol-testing/blob/master/test/protocol_testing/storage_impl_test.clj
тебе как, патч дать или pull request?
@kuzmin_m ^^^^
PR