worldforge/apps/ember/tests/TestTimeFrame.cpp

66 lines
1.8 KiB
C++
Raw Permalink Normal View History

2012-11-14 23:03:35 +01:00
#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>
2012-11-14 23:03:35 +01:00
namespace Ember {
class TimeFrameTestCase : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(TimeFrameTestCase);
2012-11-14 23:03:35 +01:00
CPPUNIT_TEST(testElapsedTime);
CPPUNIT_TEST(testRemainingTime);
CPPUNIT_TEST_SUITE_END();
2012-11-14 23:03:35 +01:00
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));
2012-11-14 23:03:35 +01:00
auto local_elapsed = (std::chrono::steady_clock::now() - start);
auto elapsed = tested.getElapsedTime();
2012-11-14 23:03:35 +01:00
CPPUNIT_ASSERT(elapsed >= local_elapsed);
}
void testRemainingTime() {
TimeFrame tested = TimeFrame(std::chrono::microseconds(10));
std::this_thread::sleep_for(std::chrono::microseconds(5));
2012-11-14 23:03:35 +01:00
auto remaining = tested.getRemainingTime();
CPPUNIT_ASSERT(remaining <= std::chrono::microseconds(5));
2012-11-14 23:03:35 +01:00
}
void testRemainingTimeTruncAtZero() {
TimeFrame tested = TimeFrame(std::chrono::microseconds(2));
std::this_thread::sleep_for(std::chrono::microseconds(5));
2012-11-14 23:03:35 +01:00
CPPUNIT_ASSERT(tested.getRemainingTime() == std::chrono::microseconds(0));
2012-11-14 23:03:35 +01:00
}
};
}
CPPUNIT_TEST_SUITE_REGISTRATION( Ember::TimeFrameTestCase);
int main(int argc, char** argv) {
2012-11-14 23:03:35 +01:00
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry& registry = CppUnit::TestFactoryRegistry::getRegistry();
2012-11-14 23:03:35 +01:00
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;
}