flightPlanner / stackyTests.cpp
stackyTests.cpp
Raw
//
// Created by Christian Gould on 10/20/20.
//
#include "catch.hpp"
#include "Stringy.h"
#include "stacky.h"
TEST_CASE("stacky tests" "[stacky]"){
	Stringy one = "One";
	Stringy two = "Two";
	Stringy three = "Three";
	Stringy four = "Four";
	Stringy five = "Five";
	stacky<int> ints;
	stacky<Stringy> strings;
	SECTION("stack basic functionality"){
		for(int i = 0; i < 10; i++){
			ints.stack(i);
		}
		strings.stack(one);
		strings.stack(two);
		strings.stack(three);
		strings.stack(four);
		strings.stack(five);
		SECTION("unstack function") {
			CHECK(strings.unstack () == "Five");
			CHECK(strings.unstack () == "Four");
			CHECK(strings.unstack () == "Three");
			CHECK(strings.unstack () == "Two");
			CHECK(strings.unstack () == "One");
			for(int i = 0; i < 10; i++){
				CHECK(9-i == ints.unstack());
			}
		}
		SECTION("isEmpty function"){
			for(int i = 0; i < 5; i++){
				strings.unstack();
			}
		CHECK(strings.isEmpty ());
		strings.stack("Hello");
		CHECK(!strings.isEmpty ());
		}
		SECTION("size function"){
		CHECK(strings.getSize() == 5);
			for(int i = 0; i < 5; i++){
				strings.unstack();
			}
			strings.stack("hello");
		CHECK(strings.getSize() == 1);
		strings.stack("ok");
		CHECK(strings.getSize() == 2);
		strings.unstack();
		CHECK(strings.getSize() == 1);
		}
	}
	SECTION("Operators"){
		SECTION("Assignment operator"){
			stacky<Stringy> left;
			stacky<Stringy> right;
			right.stack(one);
			right.stack(two);
			right.stack(three);
			left = right;
			CHECK(left.unstack() == three);
			CHECK(left.unstack() == two);
			CHECK(left.unstack() == one);
		}
	}
	SECTION("Constructors"){
		SECTION("One elements constructor") {
			stacky<Stringy> testy ("One");
			stacky<Stringy> testyTwo (one);
			CHECK(testy.unstack() == "One");
			CHECK(testyTwo.unstack() == one);
		}
	}
	SECTION("reverse,peek, and contains functions"){
		stacky<Stringy> forwards;
		forwards.stack(one);
		forwards.stack(two);
		forwards.stack(three);
		forwards.stack(four);
		forwards.stack(five);
		forwards.reverse();
		CHECK(forwards.peek() == five);
		CHECK(forwards.unstack() == five);
		CHECK(forwards.peek() == four);
		CHECK(forwards.unstack() == four);
		CHECK(forwards.peek() == three);
		CHECK(forwards.unstack() == three);
		CHECK(forwards.peek() == two);
		CHECK(forwards.unstack() == two);
		CHECK(forwards.peek() == one);
		CHECK(forwards.unstack() == one);
	}
}