Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
7.1 kB
1
Indexable
Never
#include "Wordle.h"
using namespace cs31;

#include <iostream>
#include <string>
#include <cassert>
#include "Move.h"
using namespace std;

int main()
{
	//Test data (1)
	{
		Piece p1('P');
		assert(p1.getLetter() == LETTER::P);
		assert(p1.getLetterAsString() == "P");
	}
	{
		Piece p2("People");
		assert(p2.getLetter() == LETTER::P);
		assert(p2.getLetterAsString() == "P");
	}
	{
		Piece p3;
		assert(p3.getLetter() == LETTER::NOTVALID);
		assert(p3.getLetterAsString() == " ");
	}

	//Test data (2)
	{
		Move m;
		Piece p = m.getPiece(0);
		assert(p.getLetter() == LETTER::NOTVALID);
	}
	{
		Move m;
		try {
			Piece p = m.getPiece(-100);
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}
	{
		Move m;
		try {
			Piece p = m.getPiece(100);
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}

	//Test data (3)
	{
		Move m;
		m.setPieces("hello");
		Piece p = m.getPiece(0);
		assert(p.getLetter() == LETTER::H);
		Piece p1 = m.getPiece(1);
		assert(p1.getLetter() == LETTER::E);
		Piece p2 = m.getPiece(2);
		assert(p2.getLetter() == LETTER::L);
		Piece p3 = m.getPiece(3);
		assert(p3.getLetter() == LETTER::L);
		Piece p4 = m.getPiece(4);
		assert(p4.getLetter() == LETTER::O);
	}

	//Test data (4)
	{
		Move m;
		try {
			m.setPiece(100, "z");
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}
	{
		Move m;
		try {
			m.setPiece(-100, "z");
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}
	{
		Move m;
		m.setPieces("hello");
		m.setPiece(2, 'z');
		assert(m.getPiece(2).getLetter() == LETTER::Z);
	}

	//Test data (5)
	{
		Board board;
		assert(board.getCurrentRound() == 0);
	}
	{
		Board board;
		try {
			board.getScoreForRound(100);
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}
	{
		Board board;
		try {
			board.getScoreForRound(-100);
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}

	//Test data (6)
	{
		Board board;
		assert(board.getCurrentRound() == 0);
		Move m;
		m.setPieces("apple");
		Move m2;
		m2.setPieces("candy");
		Score s(m, m2);
		board.endRound(m, s);
		assert(board.getCurrentRound() == 1);
		assert(board.getMoveForRound(0).to_string() == "APPLE");
		assert(board.getScoreForRound(0).to_string() == "M____");
	}
	{
		Board board;
		Move m;
		m.setPieces("apple");
		Move m2;
		m2.setPieces("candy");
		Score s(m, m2);
		board.endRound(m, s);
		m.setPieces("sandy");
		Score s2(m, m2);
		board.endRound(m, s2);
		assert(board.getCurrentRound() == 2);
		assert(board.getMoveForRound(0).to_string() == "APPLE");
		assert(board.getScoreForRound(0).to_string() == "M____");
		assert(board.getMoveForRound(1).to_string() == "SANDY");
		assert(board.getScoreForRound(1).to_string() == "_RRRR");
	}

	//Test data (7)
	{
		Score s;
		assert(s.isExactMatch() == false);
	}
	{
		Score s;
		assert(s.getAnswer(0) == ANSWER::WRONG);
		assert(s.getAnswer(1) == ANSWER::WRONG);
		assert(s.getAnswer(2) == ANSWER::WRONG);
		assert(s.getAnswer(3) == ANSWER::WRONG);
		assert(s.getAnswer(4) == ANSWER::WRONG);
	}
	{
		Score s;
		try {
			s.getAnswer(100);
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}
	{
		Score s;
		try {
			s.getAnswer(-100);
			assert(false);
		}
		catch (std::logic_error) {
			assert(true);
		}
	}

	//Test data (8)
	{
		Move m1;
		m1.setPieces("candy");
		Move m2;
		m2.setPieces("CANDY");
		Score s(m1, m2);
		assert(s.isExactMatch());
		assert(s.getAnswer(0) == ANSWER::RIGHT);
		assert(s.getAnswer(1) == ANSWER::RIGHT);
		assert(s.getAnswer(2) == ANSWER::RIGHT);
		assert(s.getAnswer(3) == ANSWER::RIGHT);
		assert(s.getAnswer(4) == ANSWER::RIGHT);
		assert(s.to_string() == "RRRRR");
	}
	{
		Move m1;
		m1.setPieces("candy");
		Move m2;
		m2.setPieces("RIVER");
		Score s(m1, m2);
		assert(s.isExactMatch() == false);
		assert(s.getAnswer(0) == ANSWER::WRONG);
		assert(s.getAnswer(1) == ANSWER::WRONG);
		assert(s.getAnswer(2) == ANSWER::WRONG);
		assert(s.getAnswer(3) == ANSWER::WRONG);
		assert(s.getAnswer(4) == ANSWER::WRONG);
		assert(s.to_string() == "_____");
	}
	{
		Move m1;
		m1.setPieces("candy");
		Move m2;
		m2.setPieces("dance");
		Score s(m1, m2);
		assert(s.isExactMatch() == false);
		assert(s.getAnswer(0) == ANSWER::MAYBE);
		assert(s.getAnswer(1) == ANSWER::RIGHT);
		assert(s.getAnswer(2) == ANSWER::RIGHT);
		assert(s.getAnswer(3) == ANSWER::MAYBE);
		assert(s.getAnswer(4) == ANSWER::WRONG);
		assert(s.to_string() == "MRRM_");
	}
	{
		Move m1;
		m1.setPieces("caddy");
		Move m2;
		m2.setPieces("dacha");
		Score s(m1, m2);
		assert(s.isExactMatch() == false);
		assert(s.getAnswer(0) == ANSWER::MAYBE);
		assert(s.getAnswer(1) == ANSWER::RIGHT);
		assert(s.getAnswer(2) == ANSWER::MAYBE);
		assert(s.getAnswer(3) == ANSWER::WRONG);
		assert(s.getAnswer(4) == ANSWER::WRONG);
		assert(s.to_string() == "MRM__");
	}

	//Test data (9)
	{
		Wordle game("happy");
		assert(game.answer() == "HAPPY");
		assert(game.gameIsOver() == false);
		assert(game.determineGameOutcome() == GAMEOUTCOME::GAMENOTOVER);
	}

	//Test data (10)
	{
		Wordle game("happy");
		Move m;
		Score s;
		m = game.play("shark");
		s = game.endRound(m);
		m = game.play("rover");
		s = game.endRound(m);
		m = game.play("cabby");
		s = game.endRound(m);
		m = game.play("drive");
		s = game.endRound(m);
		m = game.play("fight");
		s = game.endRound(m);
		m = game.play("every");
		s = game.endRound(m);
		m = game.play("eight");
		s = game.endRound(m);
		m = game.play("sings");
		s = game.endRound(m);
		assert(game.answer() == "HAPPY");
		assert(game.gameIsOver());
		assert(game.determineGameOutcome() == GAMEOUTCOME::GAMELOST);
	}
	{
		Wordle game("happy");
		Move m;
		Score s;
		m = game.play("shark");
		s = game.endRound(m);
		m = game.play("rover");
		s = game.endRound(m);
		m = game.play("cabby");
		s = game.endRound(m);
		m = game.play("drive");
		s = game.endRound(m);
		m = game.play("fight");
		s = game.endRound(m);
		m = game.play("every");
		s = game.endRound(m);
		m = game.play("eight");
		s = game.endRound(m);
		m = game.play("happy");
		s = game.endRound(m);
		assert(game.answer() == "HAPPY");
		assert(game.gameIsOver());
		assert(game.determineGameOutcome() == GAMEOUTCOME::GAMEWON);
	}
	{
		Wordle game("happy");
		Move m;
		Score s;
		m = game.play("shark");
		s = game.endRound(m);
		assert(game.determineGameOutcome() == GAMEOUTCOME::GAMENOTOVER);
		assert(game.gameIsOver() == false);
		m = game.play("rover");
		s = game.endRound(m);
		assert(game.determineGameOutcome() == GAMEOUTCOME::GAMENOTOVER);
		assert(game.gameIsOver() == false);
		m = game.play("cabby");
		game.endRound(m);
		assert(game.determineGameOutcome() == GAMEOUTCOME::GAMENOTOVER);
		assert(game.gameIsOver() == false);
	}

	return 0;
}