Size: a a a

2021 April 22

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Как написать гребанные тесты для функции с рандомайзером?
источник

R

Roman in C++ Together 2.0
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails: чтобы у тебя не ругалось на неопределенную ссылку, следует линковать реалзацию.. Самый простой вариант - это сложить интерфейс и рализацию в либу
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: А. Я просто в cmake файл добавляю.
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Я иногда про него забываю.
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Вот и туплю.
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails:
например:
у нас есть приложение Govno, в котором у тебя есть govno.cpp (библиотечная реализация чего-то) include/govno.h, и main.cpp (само прилоежине, использующее это говно).
Тебе надо покрыть тестами это говно.
Делаешь так:

add_library(govnolib src/govno.cpp)
target_include_directories(govnolib PUBLIC include) # чтобы инклуды пахали

add_executable(govno src/main.cpp)
target_link_libraries(govno govnolib) # линкусется к реализации и наследует инклуды
# tests

add_executable(govnotest test/test_govno.cpp)
target_link_libraries(govnotest govnolib)
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Ясно... А просто файлы нельзя добавить в add executable?
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails: можно, конечно, но нарушается инкапсуляция
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails: на уровне физических компонентов
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: что-то на заумном. ладно.
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Я не пойму как написать тесты для методов, где используется рандомайзер.
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails: ты хочешь проверить, что у тебя рандомайзер имеет нужную энтропию?
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Давай я лучше расскажу, что делает метод, и что я хочу в нем проверить. У меня есть Genes, где есть метод reproduction, этот метод с определенной вероятностью, которая которая смотрится по числу, которое выдал рандомайзер от unifrom_int_distribution<0, 100> и оно должно быть меньше шанса мутации для этого экземпляра класса Genes (вот к примеру шанс мутации 10, выпало число 7, у нас будет измененм один параметр), выбор параметра мутации производится через рандомайзер. Я хочу проверить, что определенный параметр после мутации не равен параметру у родителя (метод возвращает объект класса Genes, так что родитель здесь больше в биологическом смысле).
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails: надо замокать мутации
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails: чтобы они например гарантирванно мутировали твои гены
источник

m

mefest in C++ Together 2.0
они вроде не обязательно должны мутировать
источник

M

Matrix Telegram Brid... in C++ Together 2.0
alexfails:
и проверить два варианта:

1. гарантированная мутация поменяла твои гены;
2. гарантированная НЕ-мутация ничего не поменяла
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Вот. Как это сделать?
источник

M

Matrix Telegram Brid... in C++ Together 2.0
Princess Luna: Я думал что seed фикксируется, но выяснилось, что нет
источник