Files
rtorrent/test/helpers/test_main_thread.h
T
2026-04-22 23:02:05 +09:00

65 lines
1.7 KiB
C++

#ifndef TEST_HELPERS_TEST_MAIN_THREAD_H
#define TEST_HELPERS_TEST_MAIN_THREAD_H
#include <memory>
#include "test/helpers/test_fixture.h"
#include "test/helpers/test_thread.h"
#include "torrent/common.h"
#include "torrent/system/thread.h"
class TestMainThread : public torrent::system::Thread {
public:
static std::unique_ptr<TestMainThread> create();
static std::unique_ptr<TestMainThread> create_with_mock();
const char* name() const override { return "rtorrent test main"; }
void init_thread() override;
void cleanup_thread() override;
void test_set_cached_time(std::chrono::microseconds t) { set_cached_time(365 * 24h + t); }
void test_add_cached_time(std::chrono::microseconds t) { set_cached_time(cached_time() + t); }
void test_process_events_without_cached_time() { process_events_without_cached_time(); }
private:
TestMainThread() = default;
void call_events() override;
std::chrono::microseconds next_timeout() override;
};
class TestFixtureWithMainThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
class TestFixtureWithMainAndDiskThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
class TestFixtureWithMainAndTrackerThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
class TestFixtureWithMockAndMainThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
#endif // TEST_HELPERS_TEST_MAIN_THREAD_H