mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 07:19:45 +03:00
test: timer: Test that a timer can be restarted before it expires
The Timer API allows restarting a timer before it expires. Add a corresponding test. The test fails as the Timer class doesn't comply with its API documentation. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
9c6794164d
commit
dfe1d89441
1 changed files with 24 additions and 4 deletions
|
@ -21,13 +21,14 @@ class ManagedTimer : public Timer
|
|||
{
|
||||
public:
|
||||
ManagedTimer()
|
||||
: Timer()
|
||||
: Timer(), count_(0)
|
||||
{
|
||||
timeout.connect(this, &ManagedTimer::timeoutHandler);
|
||||
}
|
||||
|
||||
void start(int msec)
|
||||
{
|
||||
count_ = 0;
|
||||
start_ = std::chrono::steady_clock::now();
|
||||
expiration_ = std::chrono::steady_clock::time_point();
|
||||
|
||||
|
@ -40,12 +41,19 @@ public:
|
|||
return abs(std::chrono::duration_cast<std::chrono::milliseconds>(duration).count());
|
||||
}
|
||||
|
||||
bool hasFailed()
|
||||
{
|
||||
return isRunning() || count_ != 1 || jitter() > 50;
|
||||
}
|
||||
|
||||
private:
|
||||
void timeoutHandler(Timer *timer)
|
||||
{
|
||||
expiration_ = std::chrono::steady_clock::now();
|
||||
count_++;
|
||||
}
|
||||
|
||||
unsigned int count_;
|
||||
std::chrono::steady_clock::time_point start_;
|
||||
std::chrono::steady_clock::time_point expiration_;
|
||||
};
|
||||
|
@ -74,7 +82,7 @@ protected:
|
|||
|
||||
dispatcher->processEvents();
|
||||
|
||||
if (timer.isRunning() || timer.jitter() > 50) {
|
||||
if (timer.hasFailed()) {
|
||||
cout << "Timer expiration test failed" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
@ -87,7 +95,7 @@ protected:
|
|||
timer.start(4295);
|
||||
dispatcher->processEvents();
|
||||
|
||||
if (timer.isRunning() || timer.jitter() > 50) {
|
||||
if (timer.hasFailed()) {
|
||||
cout << "Timer expiration test failed" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
@ -102,11 +110,23 @@ protected:
|
|||
|
||||
dispatcher->processEvents();
|
||||
|
||||
if (timer.isRunning() || timer.jitter() > 50) {
|
||||
if (timer.hasFailed()) {
|
||||
cout << "Timer restart test failed" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
/* Timer restart before expiration. */
|
||||
timer.start(50);
|
||||
timer.start(100);
|
||||
timer.start(150);
|
||||
|
||||
dispatcher->processEvents();
|
||||
|
||||
if (timer.hasFailed()) {
|
||||
cout << "Timer restart before expiration test failed" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
/* Two timers. */
|
||||
timer.start(1000);
|
||||
timer2.start(300);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue