42_CPP05/ex03/src/main.cpp
Camille Chauvet 05a614c92a add: ex03
2023-09-13 11:28:31 +00:00

361 lines
7.8 KiB
C++

#include "AForm.hpp"
#include "Intern.hpp"
#include "Bureaucrat.hpp"
#include "RobotomyRequestForm.hpp"
#include "ShrubberyCreationForm.hpp"
#include "PresidentialPardonForm.hpp"
#include <iostream>
#include <string>
int main() {
std::cout << "-------------Bureaucrat TEST-----------" << std::endl;
std::cout << "Constructor too high grade" << std::endl;
{
try {
Bureaucrat crat("crat", 0);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "Constructor too low grade" << std::endl;
{
try {
Bureaucrat crat("crat", 151);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "increment too high" << std::endl;
{
Bureaucrat crat("crat", 1);
try {
crat.increment();
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "decrement too low" << std::endl;
{
Bureaucrat crat("crat", 150);
try {
crat.decrement();
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "setgrade too low" << std::endl;
{
Bureaucrat crat("crat", 42);
try {
crat.setGrade(151);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "setgrade too high" << std::endl;
{
Bureaucrat crat("crat", 42);
try {
crat.setGrade(0);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "increment normal" << std::endl;
{
Bureaucrat crat("crat", 42);
std::cout << "default grade: " << crat.getGrade() << std::endl;
crat.increment();
std::cout << "after increment grade: " << crat.getGrade() << std::endl;
}
std::cout << std::endl;
std::cout << "decrement normal" << std::endl;
{
Bureaucrat crat("crat", 42);
std::cout << "default grade: " << crat.getGrade() << std::endl;
crat.decrement();
std::cout << "after decrement grade: " << crat.getGrade() << std::endl;
}
std::cout << std::endl;
std::cout << "print" << std::endl;
{
Bureaucrat crat("crat", 42);
std::cout << crat;
}
std::cout << std::endl;
std::cout << "------------- Form TEST-----------" << std::endl;
std::cout << "print" << std::endl;
{
RobotomyRequestForm form("moi");
std::cout << form;
}
std::cout << std::endl;
std::cout << "------------- RobotomyRequestForm Sign TEST-----------" << std::endl;
std::cout << "Bureaucrat sign a RobotomyRequestForm" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 42);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "Too low Bureaucrat sign a RobotomyRequestForm" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 150);
try {
crat.signForm(form);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "High Bureaucrat sign a low RobotomyRequestForm" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "RobotomyRequestForm already sign" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "------------- RobotomyRequestForm TEST-----------" << std::endl;
std::cout << "Bureaucrat sign a RobotomyRequestForm" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 42);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "Too low Bureaucrat sign a RobotomyRequestForm" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 150);
try {
crat.signForm(form);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "High Bureaucrat sign a low RobotomyRequestForm" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "RobotomyRequestForm already sign" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "RobotomyRequestForm execute not signed form" << std::endl;
{
RobotomyRequestForm form("form");
Bureaucrat crat("crat", 1);
crat.executeForm(form);
}
std::cout << std::endl;
std::cout << "RobotomyRequestForm execute" << std::endl;
{
RobotomyRequestForm form("bozo");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.executeForm(form);
crat.executeForm(form);
crat.executeForm(form);
}
std::cout << std::endl;
std::cout << "------------- PresidentialPardonForm TEST-----------" << std::endl;
std::cout << "Bureaucrat sign a PresidentialPardonForm" << std::endl;
{
PresidentialPardonForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "Too low Bureaucrat sign a PresidentialPardonForm" << std::endl;
{
PresidentialPardonForm form("form");
Bureaucrat crat("crat", 150);
try {
crat.signForm(form);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "High Bureaucrat sign a low PresidentialPardonForm" << std::endl;
{
PresidentialPardonForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "PresidentialPardonForm already sign" << std::endl;
{
PresidentialPardonForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "PresidentialPardonForm not signed execute" << std::endl;
{
PresidentialPardonForm form("form");
Bureaucrat crat("crat", 1);
crat.executeForm(form);
}
std::cout << std::endl;
std::cout << "PresidentialPardonForm execute" << std::endl;
{
PresidentialPardonForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.executeForm(form);
}
std::cout << std::endl;
std::cout << "------------- ShrubberyCreationForm TEST-----------" << std::endl;
std::cout << "Bureaucrat sign a ShrubberyCreationForm" << std::endl;
{
ShrubberyCreationForm form("form");
Bureaucrat crat("crat", 42);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "Too low Bureaucrat sign a ShrubberyCreationForm" << std::endl;
{
ShrubberyCreationForm form("form");
Bureaucrat crat("crat", 150);
try {
crat.signForm(form);
} catch (std::exception &e) {
std::cout << e.what() << std::endl;
}
}
std::cout << std::endl;
std::cout << "High Bureaucrat sign a low ShrubberyCreationForm" << std::endl;
{
ShrubberyCreationForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "ShrubberyCreationForm already sign" << std::endl;
{
ShrubberyCreationForm form("form");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.signForm(form);
}
std::cout << std::endl;
std::cout << "ShrubberyCreationForm not sign execute" << std::endl;
{
ShrubberyCreationForm form("form");
Bureaucrat crat("crat", 1);
crat.executeForm(form);
}
std::cout << std::endl;
std::cout << "ShrubberyCreationForm execute" << std::endl;
{
ShrubberyCreationForm form("bozo");
Bureaucrat crat("crat", 1);
crat.signForm(form);
crat.executeForm(form);
}
std::cout << std::endl;
std::cout << "------------- Intern TEST-----------" << std::endl;
std::cout << "Intern" << std::endl;
{
Intern intern;
static const std::string forms[] = {
"robotomy request",
"presidential pardon",
"shrubbery creation",
"bozo"
};
for (int i = 0; i != 4; ++i)
{
AForm* form = intern.makeForm(forms[i], "bozoman");
if (form != NULL)
delete form;
}
}
std::cout << std::endl;
}