Rendering Engine 0.2.0
Modular Graphics Rendering Engine | v0.2.0
Loading...
Searching...
No Matches
app_clock_tests.cpp
Go to the documentation of this file.
1#include <iostream>
2#include <cstdint>
3#include <thread>
4#include <chrono>
5#include "gtest/gtest.h"
6#include <random>
7
10
11using ::testing::EmptyTestEventListener;
12using ::testing::InitGoogleTest;
13using ::testing::Test;
14using ::testing::TestEventListeners;
15using ::testing::TestInfo;
16using ::testing::TestPartResult;
17using ::testing::TestSuite;
18using ::testing::UnitTest;
19
20using namespace rendering_engine;
21
22TEST(AppClockTest, AppClockTest1)
23{
24 // Usage of AppClock and AppTime;
25 AppClock appClock;
26 AppTime appTime;
27
28 appClock.Reset();
29
30 unsigned int const numOfIter = 10U;
31
32 std::random_device randomDevice;
33 std::default_random_engine randomGenerator(randomDevice());
34 std::uniform_int_distribution<int> probDistribution(5000, 15000);
35
36 for( unsigned int i = 0U; i < numOfIter; ++i )
37 {
38 // Here we simulate some work per frame
39 auto const sleepFor = probDistribution(randomGenerator);
40 std::chrono::milliseconds delay{ std::chrono::milliseconds (sleepFor) };
41 std::this_thread::sleep_for(std::chrono::milliseconds{ delay });
42
43 // Now we update our time
44 appClock.UpdateAppTime(appTime);
45
46 auto const delayTimeMilliseconds = std::chrono::duration_cast<std::chrono::duration<float>>(delay).count();
47 auto const elapsedTimeMilliseconds = appTime.ElapsedAppTimeMilliseconds();
48 std::cout << "Delay: " << delayTimeMilliseconds << "Elapsed app time: " << elapsedTimeMilliseconds << std::endl;
49
50 EXPECT_TRUE(delayTimeMilliseconds <= elapsedTimeMilliseconds);
51 }
52}
53
54TEST(AppClockTest, TotalTime)
55{
56 // Usage of AppClock and AppTime;
57 AppClock appClock;
58 AppTime appTime;
59
60 appClock.Reset();
61
62 unsigned int const numOfIter = 10U;
63
64 std::random_device randomDevice;
65 std::default_random_engine randomGenerator(randomDevice());
66 std::uniform_int_distribution<int> probDistribution(5000, 15000);
67
68 float prevTotalElapsedTime = 0.0f;
69
70 for( unsigned int i = 0U; i < numOfIter; ++i )
71 {
72 // Here we simulate some work per frame
73 auto const sleepFor = probDistribution(randomGenerator);
74 std::chrono::milliseconds delay{ std::chrono::milliseconds (sleepFor) };
75 std::this_thread::sleep_for(std::chrono::milliseconds{ delay });
76
77 // Now we update our time
78 appClock.UpdateAppTime(appTime);
79
80 auto const delayTimeMilliseconds = std::chrono::duration_cast<std::chrono::duration<float>>(delay).count();
81 auto const elapsedTimeMilliseconds = appTime.ElapsedAppTimeMilliseconds();
82 std::cout << "Delay: " << delayTimeMilliseconds << "Elapsed app time: " << elapsedTimeMilliseconds << std::endl;
83
84 std::cout << "Total elapsed time is: " << appTime.TotalAppTimeMilliseconds() << std::endl;
85
86 EXPECT_TRUE(prevTotalElapsedTime <= appTime.TotalAppTimeMilliseconds());
87 prevTotalElapsedTime = appTime.TotalAppTimeMilliseconds();
88 }
89
90}
High-resolution clock for updating application time.
TEST(AppClockTest, AppClockTest1)
Provides time tracking for the application runtime.
Provides high-resolution timing for frame updates.
Definition app_clock.hpp:50
void Reset()
Resets the clock to the current system time.
Definition app_clock.cpp:31
void UpdateAppTime(AppTime &appTime)
Updates the given AppTime instance with elapsed and total durations.
Definition app_clock.cpp:38
Manages current, total, and elapsed time for the application.
Definition app_time.hpp:36
const float TotalAppTimeMilliseconds() const
Returns total accumulated time in milliseconds (float).
Definition app_time.cpp:28
const float ElapsedAppTimeMilliseconds() const
Returns elapsed time since the last frame in milliseconds (float).
Definition app_time.cpp:38