summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorGravatar Narr the Reg2024-01-01 13:56:31 -0600
committerGravatar GitHub2024-01-01 13:56:31 -0600
commitaa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c (patch)
tree3f7ca8e93b7bc523b8dd357ec43d302fd794b37c /src/tests
parentMerge pull request #12466 from liamwhite/sh2 (diff)
parentcore_timing: block advance thread while clearing and signal after (diff)
downloadyuzu-aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c.tar.gz
yuzu-aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c.tar.xz
yuzu-aa9ff2ffc2d9c3c1b7d6f4f6a7170acda7e17e9c.zip
Merge pull request #12454 from liamwhite/ct-stuff
core_timing: minor refactors
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/core/core_timing.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/tests/core/core_timing.cpp b/src/tests/core/core_timing.cpp
index f08afbf9a..81898a1d3 100644
--- a/src/tests/core/core_timing.cpp
+++ b/src/tests/core/core_timing.cpp
@@ -16,20 +16,16 @@
16 16
17namespace { 17namespace {
18// Numbers are chosen randomly to make sure the correct one is given. 18// Numbers are chosen randomly to make sure the correct one is given.
19constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}};
20constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}}; 19constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}};
21std::array<s64, 5> delays{}; 20std::array<s64, 5> delays{};
22 21std::bitset<5> callbacks_ran_flags;
23std::bitset<CB_IDS.size()> callbacks_ran_flags;
24u64 expected_callback = 0; 22u64 expected_callback = 0;
25 23
26template <unsigned int IDX> 24template <unsigned int IDX>
27std::optional<std::chrono::nanoseconds> HostCallbackTemplate(std::uintptr_t user_data, s64 time, 25std::optional<std::chrono::nanoseconds> HostCallbackTemplate(s64 time,
28 std::chrono::nanoseconds ns_late) { 26 std::chrono::nanoseconds ns_late) {
29 static_assert(IDX < CB_IDS.size(), "IDX out of range"); 27 static_assert(IDX < callbacks_ran_flags.size(), "IDX out of range");
30 callbacks_ran_flags.set(IDX); 28 callbacks_ran_flags.set(IDX);
31 REQUIRE(CB_IDS[IDX] == user_data);
32 REQUIRE(CB_IDS[IDX] == CB_IDS[calls_order[expected_callback]]);
33 delays[IDX] = ns_late.count(); 29 delays[IDX] = ns_late.count();
34 ++expected_callback; 30 ++expected_callback;
35 return std::nullopt; 31 return std::nullopt;
@@ -76,7 +72,7 @@ TEST_CASE("CoreTiming[BasicOrder]", "[core]") {
76 const u64 order = calls_order[i]; 72 const u64 order = calls_order[i];
77 const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)}; 73 const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)};
78 74
79 core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]); 75 core_timing.ScheduleEvent(future_ns, events[order]);
80 } 76 }
81 /// test pause 77 /// test pause
82 REQUIRE(callbacks_ran_flags.none()); 78 REQUIRE(callbacks_ran_flags.none());
@@ -118,7 +114,7 @@ TEST_CASE("CoreTiming[BasicOrderNoPausing]", "[core]") {
118 for (std::size_t i = 0; i < events.size(); i++) { 114 for (std::size_t i = 0; i < events.size(); i++) {
119 const u64 order = calls_order[i]; 115 const u64 order = calls_order[i];
120 const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)}; 116 const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)};
121 core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]); 117 core_timing.ScheduleEvent(future_ns, events[order]);
122 } 118 }
123 119
124 const u64 end = core_timing.GetGlobalTimeNs().count(); 120 const u64 end = core_timing.GetGlobalTimeNs().count();