В моей кодовой базе C++ есть класс PassiveBuzzer, который программно эмулирует поведение активного зуммера, управляемого по линии ШИМ. Его можно настроить с помощью шаблонов, с периодом и рабочим циклом, например, с линиями ШИМ. Конструктор берет частоту, на которой он гудит, когда он "включен". Конструктор также принимает объект типа Linux::PWM::Line, который является производным от интерфейса PWM::Line. Таким образом, я могу легко издеваться над этим объектом в модульных тестах.
Чтобы включать и выключать пассивный зуммер, я сейчас использую timerfd (с классом-оболочкой C++).
Однако это не позволяет мне качественно протестировать поведение моего класса, поскольку Timer создается внутри класса PassiveBuzzer и не передается ему.
Я хотел бы это сделать иметь возможность тестировать класс PassiveBuzzer и получать детерминированные результаты (независимые от нагрузки системы и других факторов).
Каковы распространенные способы разрешить детерминированное тестирование классов, которые зависят вовремя, чтобы вызвать поведение? Как я могу выделить время вне класса?
Подробнее здесь: https://stackoverflow.com/questions/784 ... al-to-code