All tests done, just need the documentation and report

This commit is contained in:
2026-03-17 15:49:55 -06:00
parent c56cc5dca2
commit c06a6aab4b
2 changed files with 62 additions and 1 deletions

View File

@@ -33,9 +33,17 @@ public:
StackErr push(T val);
uint64_t size();
void print();
};
template <typename T>
requires std::formattable<T, char>
uint64_t Stack<T>::size() {
return this->len;
}
template <typename T>
requires std::formattable<T, char>
Stack<T>::Stack() {
@@ -87,6 +95,7 @@ std::expected<T, StackErr> Stack<T>::pop() {
}
T return_val = this->data[this->len - 1];
this->len--;
if (this->cap / 4 > this->len) {
uint64_t new_capacity = this->cap / 2;
@@ -106,7 +115,7 @@ std::expected<T, StackErr> Stack<T>::pop() {
this->data = tmp;
this->cap = new_capacity;
}
return return_val;
}

View File

@@ -0,0 +1,52 @@
#include "stack.h"
#include <catch2/catch_test_macros.hpp>
TEST_CASE("Test push 3 items into stack.", "[stack]") {
Stack<int> stack = {};
REQUIRE(stack.size() == 0);
stack.push(80);
REQUIRE(stack.size() == 1);
REQUIRE(stack.peek() == 80);
stack.push(90);
REQUIRE(stack.size() == 2);
REQUIRE(stack.peek() == 90);
stack.push(60);
REQUIRE(stack.size() == 3);
REQUIRE(stack.peek() == 60);
}
TEST_CASE("Test push 3 items and poping them.", "[stack]") {
Stack<int> stack = {};
REQUIRE(stack.size() == 0);
stack.push(80);
REQUIRE(stack.size() == 1);
REQUIRE(stack.peek() == 80);
stack.push(90);
REQUIRE(stack.size() == 2);
REQUIRE(stack.peek() == 90);
stack.push(60);
REQUIRE(stack.size() == 3);
REQUIRE(stack.peek() == 60);
int return_val;
return_val = stack.pop().value();
REQUIRE(stack.size() == 2);
REQUIRE(return_val == 60);
return_val = stack.pop().value();
REQUIRE(stack.size() == 1);
REQUIRE(return_val == 90);
return_val = stack.pop().value();
REQUIRE(stack.size() == 0);
REQUIRE(return_val == 80);
}