feat(array): add TSBaseArray::Top

This commit is contained in:
fallenoak 2023-01-15 17:42:00 -06:00 committed by GitHub
parent 6d1d2eefd9
commit c42164ea5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View file

@ -21,6 +21,7 @@ class TSBaseArray {
void Clear();
T* Ptr();
const T* Ptr() const;
T* Top();
};
template <class T>
@ -77,4 +78,13 @@ const T* TSBaseArray<T>::Ptr() const {
return this->m_data;
}
template <class T>
T* TSBaseArray<T>::Top() {
if (this->m_count == 0) {
return nullptr;
}
return &this->m_data[this->m_count - 1];
}
#endif

View file

@ -30,6 +30,29 @@ TEST_CASE("TSFixedArray", "[array]") {
}
}
TEST_CASE("TSFixedArray::Top", "[array]") {
SECTION("returns nullptr when array has no elements") {
TSFixedArray<uint32_t> array;
array.SetCount(0);
REQUIRE(array.Top() == nullptr);
}
SECTION("returns first element when array has 1 element") {
TSFixedArray<uint32_t> array;
array.SetCount(1);
array[0] = 1000;
REQUIRE(*array.Top() == 1000);
}
SECTION("returns last element when array has 2 elements") {
TSFixedArray<uint32_t> array;
array.SetCount(2);
array[0] = 1000;
array[1] = 1001;
REQUIRE(*array.Top() == 1001);
}
}
TEST_CASE("TSGrowableArray", "[array]") {
SECTION("constructs correctly") {
TSGrowableArray<uint32_t> array;