Add MultiLevelQueue Tests
This commit is contained in:
parent
3bc815a5dc
commit
9dbba9240b
@ -1,6 +1,7 @@
|
|||||||
add_executable(tests
|
add_executable(tests
|
||||||
common/bit_field.cpp
|
common/bit_field.cpp
|
||||||
common/bit_utils.cpp
|
common/bit_utils.cpp
|
||||||
|
common/multi_level_queue.cpp
|
||||||
common/param_package.cpp
|
common/param_package.cpp
|
||||||
common/ring_buffer.cpp
|
common/ring_buffer.cpp
|
||||||
core/arm/arm_test_common.cpp
|
core/arm/arm_test_common.cpp
|
||||||
|
55
src/tests/common/multi_level_queue.cpp
Normal file
55
src/tests/common/multi_level_queue.cpp
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
// Copyright 2019 Yuzu Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <catch2/catch.hpp>
|
||||||
|
#include <math.h>
|
||||||
|
#include "common/common_types.h"
|
||||||
|
#include "common/multi_level_queue.h"
|
||||||
|
|
||||||
|
namespace Common {
|
||||||
|
|
||||||
|
TEST_CASE("MultiLevelQueue", "[common]") {
|
||||||
|
std::array<f32, 8> values = {0.0, 5.0, 1.0, 9.0, 8.0, 2.0, 6.0, 7.0};
|
||||||
|
Common::MultiLevelQueue<f32,64> mlq;
|
||||||
|
REQUIRE(mlq.empty());
|
||||||
|
mlq.add(values[2], 2);
|
||||||
|
mlq.add(values[7], 7);
|
||||||
|
mlq.add(values[3], 3);
|
||||||
|
mlq.add(values[4], 4);
|
||||||
|
mlq.add(values[0], 0);
|
||||||
|
mlq.add(values[5], 5);
|
||||||
|
mlq.add(values[6], 6);
|
||||||
|
mlq.add(values[1], 1);
|
||||||
|
u32 index = 0;
|
||||||
|
bool all_set = true;
|
||||||
|
for (auto& f : mlq) {
|
||||||
|
all_set &= (f == values[index]);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
REQUIRE(all_set);
|
||||||
|
REQUIRE(!mlq.empty());
|
||||||
|
f32 v = 8.0;
|
||||||
|
mlq.add(v, 2);
|
||||||
|
v = -7.0;
|
||||||
|
mlq.add(v, 2, false);
|
||||||
|
REQUIRE(mlq.front(2) == -7.0);
|
||||||
|
mlq.yield(2);
|
||||||
|
REQUIRE(mlq.front(2) == values[2]);
|
||||||
|
REQUIRE(mlq.back(2) == -7.0);
|
||||||
|
REQUIRE(mlq.empty(8));
|
||||||
|
v = 10.0;
|
||||||
|
mlq.add(v, 8);
|
||||||
|
mlq.adjust(v, 8, 9);
|
||||||
|
REQUIRE(mlq.front(9) == v);
|
||||||
|
REQUIRE(mlq.empty(8));
|
||||||
|
REQUIRE(!mlq.empty(9));
|
||||||
|
mlq.adjust(values[0], 0, 9);
|
||||||
|
REQUIRE(mlq.highest_priority_set() == 1);
|
||||||
|
REQUIRE(mlq.lowest_priority_set() == 9);
|
||||||
|
mlq.remove(values[1], 1);
|
||||||
|
REQUIRE(mlq.highest_priority_set() == 2);
|
||||||
|
REQUIRE(mlq.empty(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Common
|
Loading…
Reference in New Issue
Block a user