Newer
Older
// SPDX-License-Identifier: LGPL-3.0-or-later
// Copyright © 2020-2021 Florian Fischer
#include <cassert> // for assert
#include <cerrno> // for ETIME
#include <chrono> // for microseconds, duration_cast, operator-
#include <compare> // for operator>=, strong_ordering
#include <cstdint> // for int32_t
#include <cstdlib> // for exit, EXIT_SUCCESS
#include "io/Future.hpp" // for AlarmFuture
using emper::io::AlarmFuture;
void emperTest() {
AlarmFuture::Timespec ts = {.tv_sec = 1, .tv_nsec = 0};
AlarmFuture alarm(ts);
auto start = std::chrono::high_resolution_clock::now();
int32_t res = alarm.submitAndWait();
auto end = std::chrono::high_resolution_clock::now();
// timeouts return -ETIME if they trigger
assert(res == -ETIME);
assert(std::chrono::duration_cast<std::chrono::microseconds>(end - start) >=
std::chrono::seconds(1));
exit(EXIT_SUCCESS);
}