Add more tests

This commit is contained in:
Georg Hagen
2025-05-01 11:25:11 +02:00
parent 8fe180bad2
commit 053c6cfd64
2 changed files with 526 additions and 116 deletions

View File

@@ -382,6 +382,37 @@ namespace OpenVulkano
new (&data()[tail]) T(std::forward<Args>(args)...);
return oldData;
}
T PushAndOverwrite(const T& value)
{
if (HasFree()) [[unlikely]] throw std::runtime_error("Can't overwrite data because there are still empty slots.");
Impl().IncrementHead();
T oldData(std::move(Front()));
data()[head].~T();
new (&data()[head]) T(value);
return oldData;
}
T PushAndOverwrite(T&& value)
{
if (HasFree()) [[unlikely]] throw std::runtime_error("Can't overwrite data because there are still empty slots.");
Impl().IncrementHead();
T oldData(std::move(Front()));
data()[head].~T();
new (&data()[head]) T(std::move(value));
return oldData;
}
template<typename... Args>
T PushAndOverwrite(Args&&... args)
{
if (HasFree()) [[unlikely]] throw std::runtime_error("Can't overwrite data because there are still empty slots.");
Impl().IncrementHead();
T oldData(std::move(Front()));
data()[head].~T();
new (&data()[head]) T(std::forward<Args>(args)...);
return oldData;
}
//endregion
[[nodiscard]] T& at(size_t idx) { if (idx >= Size()) throw std::range_error("Out of bounds"); return (*this)[idx]; }