forked from Green-Sky/tomato
Green Sky
a3126d581b
82460b212 feat: add ngc events 24b54722a fix: Ensure we have allocators available for the error paths. 48dbcfebc cleanup: Remove redundant `-DSODIUM_EXPORT` from definitions. 0cef46ee9 cleanup: Fix a few more clang-tidy warnings. 0c5b918e9 cleanup: Fix a few more clang-tidy warnings. 4d3c97f49 cleanup: Enforce stricter identifier naming using clang-tidy. a549807df refactor: Add `mem` module to allow tests to override allocators. 6133fb153 chore: Add devcontainer setup for codespaces. 620e07ecd chore: Set a timeout for tests started using Conan c0ec33b16 chore: Migrate Windows CI from Appveyor to Azure DevOps 8ed47f3ef fix incorrect documentation a1e245841 docs: Fix doxygen config and remove some redundant comments. b0f633185 chore: Fix the Android CI job 7469a529b fix: Add missing `#include <array>`. 2b1a6b0d2 add missing ngc constants getter declarations and definitions 2e02d5637 chore: Add missing module dependencies. REVERT: 67badf694 feat: add ngc events git-subtree-dir: external/toxcore/c-toxcore git-subtree-split: 82460b2124216af1ac9d63060de310a682a2fd15
71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
#include "mono_time.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
namespace {
|
|
|
|
TEST(MonoTime, UnixTimeIncreasesOverTime)
|
|
{
|
|
const Memory *mem = system_memory();
|
|
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
|
|
ASSERT_NE(mono_time, nullptr);
|
|
|
|
mono_time_update(mono_time);
|
|
uint64_t const start = mono_time_get(mono_time);
|
|
|
|
while (start == mono_time_get(mono_time)) {
|
|
mono_time_update(mono_time);
|
|
}
|
|
|
|
uint64_t const end = mono_time_get(mono_time);
|
|
EXPECT_GT(end, start);
|
|
|
|
mono_time_free(mem, mono_time);
|
|
}
|
|
|
|
TEST(MonoTime, IsTimeout)
|
|
{
|
|
const Memory *mem = system_memory();
|
|
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
|
|
ASSERT_NE(mono_time, nullptr);
|
|
|
|
uint64_t const start = mono_time_get(mono_time);
|
|
EXPECT_FALSE(mono_time_is_timeout(mono_time, start, 1));
|
|
|
|
while (start == mono_time_get(mono_time)) {
|
|
mono_time_update(mono_time);
|
|
}
|
|
|
|
EXPECT_TRUE(mono_time_is_timeout(mono_time, start, 1));
|
|
|
|
mono_time_free(mem, mono_time);
|
|
}
|
|
|
|
TEST(MonoTime, CustomTime)
|
|
{
|
|
const Memory *mem = system_memory();
|
|
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
|
|
ASSERT_NE(mono_time, nullptr);
|
|
|
|
uint64_t test_time = current_time_monotonic(mono_time) + 42137;
|
|
|
|
mono_time_set_current_time_callback(
|
|
mono_time, [](void *user_data) { return *static_cast<uint64_t *>(user_data); }, &test_time);
|
|
mono_time_update(mono_time);
|
|
|
|
EXPECT_EQ(current_time_monotonic(mono_time), test_time);
|
|
|
|
uint64_t const start = mono_time_get(mono_time);
|
|
|
|
test_time += 7000;
|
|
|
|
mono_time_update(mono_time);
|
|
EXPECT_EQ(mono_time_get(mono_time) - start, 7);
|
|
|
|
EXPECT_EQ(current_time_monotonic(mono_time), test_time);
|
|
|
|
mono_time_free(mem, mono_time);
|
|
}
|
|
|
|
} // namespace
|