ember/tests/TestTimeFrame.cpp
Erik Ogenvik 10ea28f05b Process IO handlers for at least 2ms each frame.
This makes sure that the client is up to date with data sent from the server, while at the same
time protecting against too much data.
2020-01-24 00:43:28 +01:00

71 lines
1.8 KiB
C++

#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/TestResult.h>
#include "framework/TimeFrame.h"
#include <chrono>
#include <thread>
namespace Ember
{
class TimeFrameTestCase: public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(TimeFrameTestCase);
CPPUNIT_TEST(testElapsedTime);
CPPUNIT_TEST(testRemainingTime);
CPPUNIT_TEST_SUITE_END()
;
public:
void testElapsedTime()
{
TimeFrame tested = TimeFrame(std::chrono::microseconds(10));
auto start = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::microseconds(5));
auto local_elapsed = (std::chrono::steady_clock::now() - start);
auto elapsed = tested.getElapsedTime();
CPPUNIT_ASSERT(elapsed >= local_elapsed);
}
void testRemainingTime()
{
TimeFrame tested = TimeFrame(std::chrono::microseconds(10));
std::this_thread::sleep_for(std::chrono::microseconds(5));
auto remaining = tested.getRemainingTime();
CPPUNIT_ASSERT(remaining <= std::chrono::microseconds(5));
}
void testRemainingTimeTruncAtZero()
{
TimeFrame tested = TimeFrame(std::chrono::microseconds(2));
std::this_thread::sleep_for(std::chrono::microseconds(5));
CPPUNIT_ASSERT(tested.getRemainingTime() == std::chrono::microseconds(0));
}
};
}
CPPUNIT_TEST_SUITE_REGISTRATION( Ember::TimeFrameTestCase);
int main(int argc, char **argv)
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest(registry.makeTest());
// Shows a message as each test starts
CppUnit::BriefTestProgressListener listener;
runner.eventManager().addListener(&listener);
bool wasSuccessful = runner.run("", false);
return !wasSuccessful;
}