OpenFPGA/libs/libvtrutil/test/test_vector.cpp

58 lines
1.2 KiB
C++

#include "catch.hpp"
#include "vtr_vector.h"
#include "vtr_strong_id.h"
#include <ostream>
struct test_tag;
typedef vtr::StrongId<test_tag> TestId;
std::ostream& operator<<(std::ostream& os, const TestId id);
std::ostream& operator<<(std::ostream& os, const TestId id) {
os << "TestId(" << size_t(id) << ")";
return os;
}
TEST_CASE("Basic Ops", "[vtr_vector]") {
vtr::vector<TestId, int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
REQUIRE(vec.size() == 3);
REQUIRE(vec[TestId(0)] == 1);
REQUIRE(vec[TestId(1)] == 2);
REQUIRE(vec[TestId(2)] == 3);
vec.emplace_back(4);
REQUIRE(vec.size() == 4);
REQUIRE(vec[TestId(3)] == 4);
REQUIRE(vec.front() == 1);
REQUIRE(vec.back() == 4);
}
TEST_CASE("Key Access", "[vtr_vector]") {
vtr::vector<TestId, int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
std::vector<TestId> expected_keys = {TestId(0), TestId(1), TestId(2), TestId(3)};
auto keys = vec.keys();
REQUIRE(keys.size() == vec.size());
size_t i = 0;
for (TestId key : keys) {
REQUIRE(key == expected_keys[i]);
++i;
}
}