From ce1bde6d2c85728615ecb28af77832534272e877 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Mon, 28 Feb 2022 15:47:00 +0100 Subject: [PATCH] d05 ex00 bureaucrat ok --- d05/ex00/Bureaucrate.hpp | 14 ----- d05/ex00/Makefile | 10 ++-- d05/ex00/bureaucrat | Bin 0 -> 24744 bytes d05/ex00/headers/Bureaucrat.hpp | 46 +++++++++++++++++ d05/ex00/headers/color.h | 25 +++++++++ d05/ex00/main.cpp | 77 ++++++++++++++++++++++++++-- d05/ex00/srcs/Bureaucrat.cpp | 87 ++++++++++++++++++++++++++++++++ 7 files changed, 236 insertions(+), 23 deletions(-) delete mode 100644 d05/ex00/Bureaucrate.hpp create mode 100755 d05/ex00/bureaucrat create mode 100644 d05/ex00/headers/Bureaucrat.hpp create mode 100644 d05/ex00/headers/color.h create mode 100644 d05/ex00/srcs/Bureaucrat.cpp diff --git a/d05/ex00/Bureaucrate.hpp b/d05/ex00/Bureaucrate.hpp deleted file mode 100644 index 46677db..0000000 --- a/d05/ex00/Bureaucrate.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef BUREAUCRATE_HPP -# define BUREAUCRATE_HPP - -class Bureaucrate { -public: - Bureaucrate(); - Bureaucrate(std::string name, int grade); - -private: - std::string const _name; - int _grade; -} - -#endif diff --git a/d05/ex00/Makefile b/d05/ex00/Makefile index ee31047..deba33f 100644 --- a/d05/ex00/Makefile +++ b/d05/ex00/Makefile @@ -4,7 +4,7 @@ # . name is case sensitive . ?= set if not already set # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # -NAME = bureaucrate +NAME = bureaucrat #CC = gcc CXX = c++ @@ -21,12 +21,12 @@ LIBS = INCLUDES = -I$(D_HEADERS) -D_SRCS = . +D_SRCS = srcs SRCS = main.cpp \ - Bureaucrate.cpp + Bureaucrat.cpp -D_HEADERS = . -HEADERS = Bureaucrate.hpp +D_HEADERS = headers +HEADERS = Bureaucrat.hpp D_OBJS = builds OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) diff --git a/d05/ex00/bureaucrat b/d05/ex00/bureaucrat new file mode 100755 index 0000000000000000000000000000000000000000..7a8a4e82e043beac0035820abe4d39e3247e497e GIT binary patch literal 24744 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 Ni%MdSL&1TH{{<9Jo}>T( literal 0 HcmV?d00001 diff --git a/d05/ex00/headers/Bureaucrat.hpp b/d05/ex00/headers/Bureaucrat.hpp new file mode 100644 index 0000000..40359b4 --- /dev/null +++ b/d05/ex00/headers/Bureaucrat.hpp @@ -0,0 +1,46 @@ +#ifndef BUREAUCRAT_HPP +# define BUREAUCRAT_HPP + +# include "color.h" +# include +# include +# include + +class Bureaucrat { + +public: + + Bureaucrat(std::string name, int grade); + Bureaucrat( Bureaucrat const & src ); + ~Bureaucrat(); + Bureaucrat & operator=( Bureaucrat const & rhs ); + + class GradeTooHighException : public std::exception { + public: + const char * what() const throw(); + }; + class GradeTooLowException : public std::exception { + public: + const char * what() const throw(); + }; + + std::string getName() const; + int getGrade() const; + + void gradeUp(); + void gradeDown(); + +protected: + + std::string const _name; + int _grade; + +private: + + Bureaucrat(); +}; + +std::ostream & operator<<(std::ostream & o, Bureaucrat const & rhs); + +#endif + diff --git a/d05/ex00/headers/color.h b/d05/ex00/headers/color.h new file mode 100644 index 0000000..f40596b --- /dev/null +++ b/d05/ex00/headers/color.h @@ -0,0 +1,25 @@ +#ifndef COLOR_H +# define COLOR_H + +# define GRAY "\e[0;30m" +# define RED "\e[0;31m" +# define GREEN "\e[0;32m" +# define YELLOW "\e[0;33m" +# define BLUE "\e[0;34m" +# define PURPLE "\e[0;35m" +# define CYAN "\e[0;36m" +# define WHITE "\e[0;37m" + +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +#endif + diff --git a/d05/ex00/main.cpp b/d05/ex00/main.cpp index 8f37d92..8b07aa5 100644 --- a/d05/ex00/main.cpp +++ b/d05/ex00/main.cpp @@ -1,10 +1,79 @@ +#include "Bureaucrat.hpp" +#define N_TEST "5" + int main() { - try + + std::cout << B_YELLOW "\n[1/" N_TEST "] test too high :" RESET "\n"; { - + try { + Bureaucrat b("clarence", 151); + } + catch (std::exception& e) { + std::cout << e.what() << "\n"; + } } - catch (std::exception & e) + + std::cout << B_YELLOW "\n[2/" N_TEST "] test too low :" RESET "\n"; { - + try { + Bureaucrat b("ellen", 0); + } + catch (std::exception& e) { + std::cout << e.what() << "\n"; + } } + + std::cout << B_YELLOW "\n[3/" N_TEST "] test change grade :" RESET "\n"; + { + try { + Bureaucrat b("pacome", 51); + std::cout << b << "\n"; + b.gradeDown(); + std::cout << b << "\n"; + b.gradeUp(); + std::cout << b << "\n"; + } + catch (std::exception& e) { + std::cout << e.what() << "\n"; + } + } + + std::cout << B_YELLOW "\n[4/" N_TEST "] test reduce grade :" RESET "\n"; + { + try + { + Bureaucrat b("colin", 145); + + while (true) + { + b.gradeDown(); + std::cout << b << "\n"; + } + } + catch (std::exception& e) + { + std::cout << e.what() << "\n"; + } + } + + std::cout << B_YELLOW "\n[5/" N_TEST "] test increase grade :" RESET "\n"; + { + try + { + Bureaucrat b("colin", 5); + + while (true) + { + b.gradeUp(); + std::cout << b << "\n"; + } + } + catch (std::exception& e) + { + std::cout << e.what() << "\n"; + } + } + + std::cout << "\n"; + return 0; } diff --git a/d05/ex00/srcs/Bureaucrat.cpp b/d05/ex00/srcs/Bureaucrat.cpp new file mode 100644 index 0000000..8d683d8 --- /dev/null +++ b/d05/ex00/srcs/Bureaucrat.cpp @@ -0,0 +1,87 @@ +#include "Bureaucrat.hpp" + +#define COPLIEN_COLOR B_CYAN + +/********************************************* + * CONSTRUCTORS + *********************************************/ + +Bureaucrat::Bureaucrat( std::string name, int grade ) +: _name(name) +, _grade(grade) { + if (grade > 150) + throw GradeTooLowException(); + if (grade < 1) + throw GradeTooHighException(); + std::cout << COPLIEN_COLOR "Bureaucrat constructor" RESET "\n"; + return; +} + +Bureaucrat::Bureaucrat( Bureaucrat const & src ) { + std::cout << COPLIEN_COLOR "Bureaucrat copy constructor" RESET "\n"; + *this = src; + return; +} + +/********************************************* + * DESTRUCTORS + *********************************************/ + +Bureaucrat::~Bureaucrat() { + std::cout << COPLIEN_COLOR "Bureaucrat destructor" RESET "\n"; + return; +} + +/********************************************* + * OPERATORS + *********************************************/ + +Bureaucrat & Bureaucrat::operator=( Bureaucrat const & rhs ) { + if ( this != &rhs ) + _grade = rhs.getGrade(); + return *this; +} + +std::ostream & operator<<(std::ostream & o, Bureaucrat const & rhs) +{ + o + << rhs.getName() << ", bureaucrat grade " + << rhs.getGrade(); + return (o); +} + +/********************************************* + * ACCESSORS + *********************************************/ + +std::string Bureaucrat::getName() const {return _name;} +int Bureaucrat::getGrade() const {return _grade;} + +/********************************************* + * PUBLIC MEMBER FUNCTIONS + *********************************************/ + +void Bureaucrat::gradeUp() { + if (_grade > 1) + _grade--; + else + throw GradeTooHighException(); +} + +void Bureaucrat::gradeDown() { + if (_grade < 150) + _grade++; + else + throw GradeTooLowException(); +} + +/********************************************* + * NESTED CLASS + *********************************************/ + +const char * Bureaucrat::GradeTooHighException::what() const throw() { + return ("grade higher than 1"); +} +const char * Bureaucrat::GradeTooLowException::what() const throw() { + return ("grade lower than 150"); +}