From 00595bf84e1400d66d21f34ef73d352f5761fb88 Mon Sep 17 00:00:00 2001 From: whaffman Date: Mon, 14 Apr 2025 18:13:35 +0200 Subject: [PATCH] still need to start ex02 --- .gitignore | 2 + ex00/Makefile | 10 +- ex00/inc/Animal.hpp | 8 +- ex00/inc/Cat.hpp | 8 +- ex00/inc/Dog.hpp | 6 +- ex00/inc/colors.h | 554 ++++++++++++++++++++++++++++++++++ ex00/inc/tests.hpp | 19 ++ ex00/src/Animal.cpp | 31 +- ex00/src/Animal_test.cpp | 40 +++ ex00/src/Cat.cpp | 26 +- ex00/src/Cat_test.cpp | 40 +++ ex00/src/Dog.cpp | 25 +- ex00/src/Dog_test.cpp | 40 +++ ex00/src/WrongAnimal.cpp | 25 +- ex00/src/WrongAnimal_test.cpp | 41 +++ ex00/src/WrongCat.cpp | 23 +- ex00/src/WrongCat_test.cpp | 29 ++ ex00/src/main.cpp | 121 ++++---- ex01/inc/Animal.hpp | 8 +- ex01/inc/Brain.hpp | 5 +- ex01/inc/Cat.hpp | 12 +- ex01/inc/Dog.hpp | 9 +- ex01/inc/colors.h | 554 ++++++++++++++++++++++++++++++++++ ex01/src/Animal.cpp | 31 +- ex01/src/Brain.cpp | 33 +- ex01/src/Cat.cpp | 38 ++- ex01/src/Dog.cpp | 41 ++- ex01/src/main.cpp | 116 ++++--- 28 files changed, 1638 insertions(+), 257 deletions(-) create mode 100644 ex00/inc/colors.h create mode 100644 ex00/inc/tests.hpp create mode 100644 ex00/src/Animal_test.cpp create mode 100644 ex00/src/Cat_test.cpp create mode 100644 ex00/src/Dog_test.cpp create mode 100644 ex00/src/WrongAnimal_test.cpp create mode 100644 ex00/src/WrongCat_test.cpp create mode 100644 ex01/inc/colors.h diff --git a/.gitignore b/.gitignore index c6f9a44..1c9b465 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ .vscode/settings.json +*.o +*.d diff --git a/ex00/Makefile b/ex00/Makefile index ff83e85..a9accf3 100644 --- a/ex00/Makefile +++ b/ex00/Makefile @@ -6,16 +6,12 @@ # By: whaffman +#+ # # +#+ # # Created: 2025/03/24 15:14:58 by whaffman #+# #+# # -# Updated: 2025/04/05 17:33:17 by whaffman ######## odam.nl # +# Updated: 2025/04/10 11:42:36 by whaffman ######## odam.nl # # # # **************************************************************************** # NAME= Polymorphism -SRC= main.cpp \ - Animal.cpp \ - Dog.cpp \ - Cat.cpp \ - WrongAnimal.cpp \ - WrongCat.cpp +TEST_SRC= Animal_test.cpp Dog_test.cpp Cat_test.cpp WrongAnimal_test.cpp WrongCat_test.cpp +SRC= main.cpp $(TEST_SRC) Animal.cpp Dog.cpp Cat.cpp WrongAnimal.cpp WrongCat.cpp -include ../common.mk diff --git a/ex00/inc/Animal.hpp b/ex00/inc/Animal.hpp index 8f3f890..ba99b2e 100644 --- a/ex00/inc/Animal.hpp +++ b/ex00/inc/Animal.hpp @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 16:53:44 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 12:32:17 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -21,10 +21,10 @@ protected: public: Animal(); - Animal(const Animal &animal); + Animal(const Animal &other); virtual ~Animal(); - Animal &operator=(const Animal &animal); + Animal &operator=(const Animal &other); - virtual void makeSound(void) const; + virtual void makeSound(void) const; std::string getType(void) const; }; \ No newline at end of file diff --git a/ex00/inc/Cat.hpp b/ex00/inc/Cat.hpp index 5bd4ad3..28265cb 100644 --- a/ex00/inc/Cat.hpp +++ b/ex00/inc/Cat.hpp @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:02:57 by whaffman #+# #+# */ -/* Updated: 2025/04/05 17:30:47 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 12:33:26 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -19,9 +19,9 @@ class Cat : public Animal { public: Cat(); - Cat(const Cat &cat); + Cat(const Cat &other); ~Cat() override; - Cat &operator=(const Cat &cat); + Cat &operator=(const Cat &other); void makeSound(void) const override; -}; \ No newline at end of file +}; diff --git a/ex00/inc/Dog.hpp b/ex00/inc/Dog.hpp index 13b8b1f..f29e4b8 100644 --- a/ex00/inc/Dog.hpp +++ b/ex00/inc/Dog.hpp @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:04:03 by whaffman #+# #+# */ -/* Updated: 2025/04/05 17:30:41 by whaffman ######## odam.nl */ +/* Updated: 2025/04/08 10:42:51 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -19,9 +19,9 @@ class Dog : public Animal { public: Dog(); - Dog(const Dog &Dog); + Dog(const Dog &other); ~Dog() override; - Dog &operator=(const Dog &Dog); + Dog &operator=(const Dog &other); void makeSound(void) const override; }; \ No newline at end of file diff --git a/ex00/inc/colors.h b/ex00/inc/colors.h new file mode 100644 index 0000000..461f384 --- /dev/null +++ b/ex00/inc/colors.h @@ -0,0 +1,554 @@ +#ifndef COLORS_H +#define COLORS_H + +#define RESET "\033[m" + +#define BOLD_UNDERLINE "\033[1;4m" +#define BOLD_UNDERLINE_OFF "\033[22;24m" + +#define BOLD "\033[1m" +#define UNDERLINE "\033[4m" +#define ITALIC "\033[3m" +#define BLINK "\033[5m" +#define INVERSE "\033[7m" +#define STRIKETHROUGH "\033[9m" + +#define BOLD_OFF "\033[22m" +#define UNDERLINE_OFF "\033[24m" +#define ITALIC_OFF "\033[23m" +#define BLINK_OFF "\033[25m" +#define INVERSE_OFF "\033[27m" +#define STRIKETHROUGH_OFF "\033[29m" + +#define REVERSE "\033[7m" + +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +#define COLOR0 "\033[38;5;0m" +#define COLOR1 "\033[38;5;1m" +#define COLOR2 "\033[38;5;2m" +#define COLOR3 "\033[38;5;3m" +#define COLOR4 "\033[38;5;4m" +#define COLOR5 "\033[38;5;5m" +#define COLOR6 "\033[38;5;6m" +#define COLOR7 "\033[38;5;7m" +#define COLOR8 "\033[38;5;8m" +#define COLOR9 "\033[38;5;9m" +#define COLOR10 "\033[38;5;10m" +#define COLOR11 "\033[38;5;11m" +#define COLOR12 "\033[38;5;12m" +#define COLOR13 "\033[38;5;13m" +#define COLOR14 "\033[38;5;14m" +#define COLOR15 "\033[38;5;15m" + +#define BACKGROUND0 "\033[48;5;0m" +#define BACKGROUND1 "\033[48;5;1m" +#define BACKGROUND2 "\033[48;5;2m" +#define BACKGROUND3 "\033[48;5;3m" +#define BACKGROUND4 "\033[48;5;4m" +#define BACKGROUND5 "\033[48;5;5m" +#define BACKGROUND6 "\033[48;5;6m" +#define BACKGROUND7 "\033[48;5;7m" +#define BACKGROUND8 "\033[48;5;8m" +#define BACKGROUND9 "\033[48;5;9m" +#define BACKGROUND10 "\033[48;5;10m" +#define BACKGROUND11 "\033[48;5;11m" +#define BACKGROUND12 "\033[48;5;12m" +#define BACKGROUND13 "\033[48;5;13m" +#define BACKGROUND14 "\033[48;5;14m" +#define BACKGROUND15 "\033[48;5;15m" + +// #define COLOR16 "\033[38;5;16m" +// #define COLOR17 "\033[38;5;17m" +// #define COLOR18 "\033[38;5;18m" +// #define COLOR19 "\033[38;5;19m" +// #define COLOR20 "\033[38;5;20m" +// #define COLOR21 "\033[38;5;21m" +// #define COLOR22 "\033[38;5;22m" +// #define COLOR23 "\033[38;5;23m" +// #define COLOR24 "\033[38;5;24m" +// #define COLOR25 "\033[38;5;25m" +// #define COLOR26 "\033[38;5;26m" +// #define COLOR27 "\033[38;5;27m" +// #define COLOR28 "\033[38;5;28m" +// #define COLOR29 "\033[38;5;29m" +// #define COLOR30 "\033[38;5;30m" +// #define COLOR31 "\033[38;5;31m" +// #define COLOR32 "\033[38;5;32m" +// #define COLOR33 "\033[38;5;33m" +// #define COLOR34 "\033[38;5;34m" +// #define COLOR35 "\033[38;5;35m" +// #define COLOR36 "\033[38;5;36m" +// #define COLOR37 "\033[38;5;37m" +// #define COLOR38 "\033[38;5;38m" +// #define COLOR39 "\033[38;5;39m" +// #define COLOR40 "\033[38;5;40m" +// #define COLOR41 "\033[38;5;41m" +// #define COLOR42 "\033[38;5;42m" +// #define COLOR43 "\033[38;5;43m" +// #define COLOR44 "\033[38;5;44m" +// #define COLOR45 "\033[38;5;45m" +// #define COLOR46 "\033[38;5;46m" +// #define COLOR47 "\033[38;5;47m" +// #define COLOR48 "\033[38;5;48m" +// #define COLOR49 "\033[38;5;49m" +// #define COLOR50 "\033[38;5;50m" +// #define COLOR51 "\033[38;5;51m" +// #define COLOR52 "\033[38;5;52m" +// #define COLOR53 "\033[38;5;53m" +// #define COLOR54 "\033[38;5;54m" +// #define COLOR55 "\033[38;5;55m" +// #define COLOR56 "\033[38;5;56m" +// #define COLOR57 "\033[38;5;57m" +// #define COLOR58 "\033[38;5;58m" +// #define COLOR59 "\033[38;5;59m" +// #define COLOR60 "\033[38;5;60m" +// #define COLOR61 "\033[38;5;61m" +// #define COLOR62 "\033[38;5;62m" +// #define COLOR63 "\033[38;5;63m" +// #define COLOR64 "\033[38;5;64m" +// #define COLOR65 "\033[38;5;65m" +// #define COLOR66 "\033[38;5;66m" +// #define COLOR67 "\033[38;5;67m" +// #define COLOR68 "\033[38;5;68m" +// #define COLOR69 "\033[38;5;69m" +// #define COLOR70 "\033[38;5;70m" +// #define COLOR71 "\033[38;5;71m" +// #define COLOR72 "\033[38;5;72m" +// #define COLOR73 "\033[38;5;73m" +// #define COLOR74 "\033[38;5;74m" +// #define COLOR75 "\033[38;5;75m" +// #define COLOR76 "\033[38;5;76m" +// #define COLOR77 "\033[38;5;77m" +// #define COLOR78 "\033[38;5;78m" +// #define COLOR79 "\033[38;5;79m" +// #define COLOR80 "\033[38;5;80m" +// #define COLOR81 "\033[38;5;81m" +// #define COLOR82 "\033[38;5;82m" +// #define COLOR83 "\033[38;5;83m" +// #define COLOR84 "\033[38;5;84m" +// #define COLOR85 "\033[38;5;85m" +// #define COLOR86 "\033[38;5;86m" +// #define COLOR87 "\033[38;5;87m" +// #define COLOR88 "\033[38;5;88m" +// #define COLOR89 "\033[38;5;89m" +// #define COLOR90 "\033[38;5;90m" +// #define COLOR91 "\033[38;5;91m" +// #define COLOR92 "\033[38;5;92m" +// #define COLOR93 "\033[38;5;93m" +// #define COLOR94 "\033[38;5;94m" +// #define COLOR95 "\033[38;5;95m" +// #define COLOR96 "\033[38;5;96m" +// #define COLOR97 "\033[38;5;97m" +// #define COLOR98 "\033[38;5;98m" +// #define COLOR99 "\033[38;5;99m" +// #define COLOR100 "\033[38;5;100m" +// #define COLOR101 "\033[38;5;101m" +// #define COLOR102 "\033[38;5;102m" +// #define COLOR103 "\033[38;5;103m" +// #define COLOR104 "\033[38;5;104m" +// #define COLOR105 "\033[38;5;105m" +// #define COLOR106 "\033[38;5;106m" +// #define COLOR107 "\033[38;5;107m" +// #define COLOR108 "\033[38;5;108m" +// #define COLOR109 "\033[38;5;109m" +// #define COLOR110 "\033[38;5;110m" +// #define COLOR111 "\033[38;5;111m" +// #define COLOR112 "\033[38;5;112m" +// #define COLOR113 "\033[38;5;113m" +// #define COLOR114 "\033[38;5;114m" +// #define COLOR115 "\033[38;5;115m" +// #define COLOR116 "\033[38;5;116m" +// #define COLOR117 "\033[38;5;117m" +// #define COLOR118 "\033[38;5;118m" +// #define COLOR119 "\033[38;5;119m" +// #define COLOR120 "\033[38;5;120m" +// #define COLOR121 "\033[38;5;121m" +// #define COLOR122 "\033[38;5;122m" +// #define COLOR123 "\033[38;5;123m" +// #define COLOR124 "\033[38;5;124m" +// #define COLOR125 "\033[38;5;125m" +// #define COLOR126 "\033[38;5;126m" +// #define COLOR127 "\033[38;5;127m" +// #define COLOR128 "\033[38;5;128m" +// #define COLOR129 "\033[38;5;129m" +// #define COLOR130 "\033[38;5;130m" +// #define COLOR131 "\033[38;5;131m" +// #define COLOR132 "\033[38;5;132m" +// #define COLOR133 "\033[38;5;133m" +// #define COLOR134 "\033[38;5;134m" +// #define COLOR135 "\033[38;5;135m" +// #define COLOR136 "\033[38;5;136m" +// #define COLOR137 "\033[38;5;137m" +// #define COLOR138 "\033[38;5;138m" +// #define COLOR139 "\033[38;5;139m" +// #define COLOR140 "\033[38;5;140m" +// #define COLOR141 "\033[38;5;141m" +// #define COLOR142 "\033[38;5;142m" +// #define COLOR143 "\033[38;5;143m" +// #define COLOR144 "\033[38;5;144m" +// #define COLOR145 "\033[38;5;145m" +// #define COLOR146 "\033[38;5;146m" +// #define COLOR147 "\033[38;5;147m" +// #define COLOR148 "\033[38;5;148m" +// #define COLOR149 "\033[38;5;149m" +// #define COLOR150 "\033[38;5;150m" +// #define COLOR151 "\033[38;5;151m" +// #define COLOR152 "\033[38;5;152m" +// #define COLOR153 "\033[38;5;153m" +// #define COLOR154 "\033[38;5;154m" +// #define COLOR155 "\033[38;5;155m" +// #define COLOR156 "\033[38;5;156m" +// #define COLOR157 "\033[38;5;157m" +// #define COLOR158 "\033[38;5;158m" +// #define COLOR159 "\033[38;5;159m" +// #define COLOR160 "\033[38;5;160m" +// #define COLOR161 "\033[38;5;161m" +// #define COLOR162 "\033[38;5;162m" +// #define COLOR163 "\033[38;5;163m" +// #define COLOR164 "\033[38;5;164m" +// #define COLOR165 "\033[38;5;165m" +// #define COLOR166 "\033[38;5;166m" +// #define COLOR167 "\033[38;5;167m" +// #define COLOR168 "\033[38;5;168m" +// #define COLOR169 "\033[38;5;169m" +// #define COLOR170 "\033[38;5;170m" +// #define COLOR171 "\033[38;5;171m" +// #define COLOR172 "\033[38;5;172m" +// #define COLOR173 "\033[38;5;173m" +// #define COLOR174 "\033[38;5;174m" +// #define COLOR175 "\033[38;5;175m" +// #define COLOR176 "\033[38;5;176m" +// #define COLOR177 "\033[38;5;177m" +// #define COLOR178 "\033[38;5;178m" +// #define COLOR179 "\033[38;5;179m" +// #define COLOR180 "\033[38;5;180m" +// #define COLOR181 "\033[38;5;181m" +// #define COLOR182 "\033[38;5;182m" +// #define COLOR183 "\033[38;5;183m" +// #define COLOR184 "\033[38;5;184m" +// #define COLOR185 "\033[38;5;185m" +// #define COLOR186 "\033[38;5;186m" +// #define COLOR187 "\033[38;5;187m" +// #define COLOR188 "\033[38;5;188m" +// #define COLOR189 "\033[38;5;189m" +// #define COLOR190 "\033[38;5;190m" +// #define COLOR191 "\033[38;5;191m" +// #define COLOR192 "\033[38;5;192m" +// #define COLOR193 "\033[38;5;193m" +// #define COLOR194 "\033[38;5;194m" +// #define COLOR195 "\033[38;5;195m" +// #define COLOR196 "\033[38;5;196m" +// #define COLOR197 "\033[38;5;197m" +// #define COLOR198 "\033[38;5;198m" +// #define COLOR199 "\033[38;5;199m" +// #define COLOR200 "\033[38;5;200m" +// #define COLOR201 "\033[38;5;201m" +// #define COLOR202 "\033[38;5;202m" +// #define COLOR203 "\033[38;5;203m" +// #define COLOR204 "\033[38;5;204m" +// #define COLOR205 "\033[38;5;205m" +// #define COLOR206 "\033[38;5;206m" +// #define COLOR207 "\033[38;5;207m" +// #define COLOR208 "\033[38;5;208m" +// #define COLOR209 "\033[38;5;209m" +// #define COLOR210 "\033[38;5;210m" +// #define COLOR211 "\033[38;5;211m" +// #define COLOR212 "\033[38;5;212m" +// #define COLOR213 "\033[38;5;213m" +// #define COLOR214 "\033[38;5;214m" +// #define COLOR215 "\033[38;5;215m" +// #define COLOR216 "\033[38;5;216m" +// #define COLOR217 "\033[38;5;217m" +// #define COLOR218 "\033[38;5;218m" +// #define COLOR219 "\033[38;5;219m" +// #define COLOR220 "\033[38;5;220m" +// #define COLOR221 "\033[38;5;221m" +// #define COLOR222 "\033[38;5;222m" +// #define COLOR223 "\033[38;5;223m" +// #define COLOR224 "\033[38;5;224m" +// #define COLOR225 "\033[38;5;225m" +// #define COLOR226 "\033[38;5;226m" +// #define COLOR227 "\033[38;5;227m" +// #define COLOR228 "\033[38;5;228m" +// #define COLOR229 "\033[38;5;229m" +// #define COLOR230 "\033[38;5;230m" +// #define COLOR231 "\033[38;5;231m" +// #define COLOR232 "\033[38;5;232m" +// #define COLOR233 "\033[38;5;233m" +// #define COLOR234 "\033[38;5;234m" +// #define COLOR235 "\033[38;5;235m" +// #define COLOR236 "\033[38;5;236m" +// #define COLOR237 "\033[38;5;237m" +// #define COLOR238 "\033[38;5;238m" +// #define COLOR239 "\033[38;5;239m" +// #define COLOR240 "\033[38;5;240m" +// #define COLOR241 "\033[38;5;241m" +// #define COLOR242 "\033[38;5;242m" +// #define COLOR243 "\033[38;5;243m" +// #define COLOR244 "\033[38;5;244m" +// #define COLOR245 "\033[38;5;245m" +// #define COLOR246 "\033[38;5;246m" +// #define COLOR247 "\033[38;5;247m" +// #define COLOR248 "\033[38;5;248m" +// #define COLOR249 "\033[38;5;249m" +// #define COLOR250 "\033[38;5;250m" +// #define COLOR251 "\033[38;5;251m" +// #define COLOR252 "\033[38;5;252m" +// #define COLOR253 "\033[38;5;253m" +// #define COLOR254 "\033[38;5;254m" +// #define COLOR255 "\033[38;5;255m" + + +// #define BACKGROUND16 "\033[48;5;16m" +// #define BACKGROUND17 "\033[48;5;17m" +// #define BACKGROUND18 "\033[48;5;18m" +// #define BACKGROUND19 "\033[48;5;19m" +// #define BACKGROUND20 "\033[48;5;20m" +// #define BACKGROUND21 "\033[48;5;21m" +// #define BACKGROUND22 "\033[48;5;22m" +// #define BACKGROUND23 "\033[48;5;23m" +// #define BACKGROUND24 "\033[48;5;24m" +// #define BACKGROUND25 "\033[48;5;25m" +// #define BACKGROUND26 "\033[48;5;26m" +// #define BACKGROUND27 "\033[48;5;27m" +// #define BACKGROUND28 "\033[48;5;28m" +// #define BACKGROUND29 "\033[48;5;29m" +// #define BACKGROUND30 "\033[48;5;30m" +// #define BACKGROUND31 "\033[48;5;31m" +// #define BACKGROUND32 "\033[48;5;32m" +// #define BACKGROUND33 "\033[48;5;33m" +// #define BACKGROUND34 "\033[48;5;34m" +// #define BACKGROUND35 "\033[48;5;35m" +// #define BACKGROUND36 "\033[48;5;36m" +// #define BACKGROUND37 "\033[48;5;37m" +// #define BACKGROUND38 "\033[48;5;38m" +// #define BACKGROUND39 "\033[48;5;39m" +// #define BACKGROUND40 "\033[48;5;40m" +// #define BACKGROUND41 "\033[48;5;41m" +// #define BACKGROUND42 "\033[48;5;42m" +// #define BACKGROUND43 "\033[48;5;43m" +// #define BACKGROUND44 "\033[48;5;44m" +// #define BACKGROUND45 "\033[48;5;45m" +// #define BACKGROUND46 "\033[48;5;46m" +// #define BACKGROUND47 "\033[48;5;47m" +// #define BACKGROUND48 "\033[48;5;48m" +// #define BACKGROUND49 "\033[48;5;49m" +// #define BACKGROUND50 "\033[48;5;50m" +// #define BACKGROUND51 "\033[48;5;51m" +// #define BACKGROUND52 "\033[48;5;52m" +// #define BACKGROUND53 "\033[48;5;53m" +// #define BACKGROUND54 "\033[48;5;54m" +// #define BACKGROUND55 "\033[48;5;55m" +// #define BACKGROUND56 "\033[48;5;56m" +// #define BACKGROUND57 "\033[48;5;57m" +// #define BACKGROUND58 "\033[48;5;58m" +// #define BACKGROUND59 "\033[48;5;59m" +// #define BACKGROUND60 "\033[48;5;60m" +// #define BACKGROUND61 "\033[48;5;61m" +// #define BACKGROUND62 "\033[48;5;62m" +// #define BACKGROUND63 "\033[48;5;63m" +// #define BACKGROUND64 "\033[48;5;64m" +// #define BACKGROUND65 "\033[48;5;65m" +// #define BACKGROUND66 "\033[48;5;66m" +// #define BACKGROUND67 "\033[48;5;67m" +// #define BACKGROUND68 "\033[48;5;68m" +// #define BACKGROUND69 "\033[48;5;69m" +// #define BACKGROUND70 "\033[48;5;70m" +// #define BACKGROUND71 "\033[48;5;71m" +// #define BACKGROUND72 "\033[48;5;72m" +// #define BACKGROUND73 "\033[48;5;73m" +// #define BACKGROUND74 "\033[48;5;74m" +// #define BACKGROUND75 "\033[48;5;75m" +// #define BACKGROUND76 "\033[48;5;76m" +// #define BACKGROUND77 "\033[48;5;77m" +// #define BACKGROUND78 "\033[48;5;78m" +// #define BACKGROUND79 "\033[48;5;79m" +// #define BACKGROUND80 "\033[48;5;80m" +// #define BACKGROUND81 "\033[48;5;81m" +// #define BACKGROUND82 "\033[48;5;82m" +// #define BACKGROUND83 "\033[48;5;83m" +// #define BACKGROUND84 "\033[48;5;84m" +// #define BACKGROUND85 "\033[48;5;85m" +// #define BACKGROUND86 "\033[48;5;86m" +// #define BACKGROUND87 "\033[48;5;87m" +// #define BACKGROUND88 "\033[48;5;88m" +// #define BACKGROUND89 "\033[48;5;89m" +// #define BACKGROUND90 "\033[48;5;90m" +// #define BACKGROUND91 "\033[48;5;91m" +// #define BACKGROUND92 "\033[48;5;92m" +// #define BACKGROUND93 "\033[48;5;93m" +// #define BACKGROUND94 "\033[48;5;94m" +// #define BACKGROUND95 "\033[48;5;95m" +// #define BACKGROUND96 "\033[48;5;96m" +// #define BACKGROUND97 "\033[48;5;97m" +// #define BACKGROUND98 "\033[48;5;98m" +// #define BACKGROUND99 "\033[48;5;99m" +// #define BACKGROUND100 "\033[48;5;100m" +// #define BACKGROUND101 "\033[48;5;101m" +// #define BACKGROUND102 "\033[48;5;102m" +// #define BACKGROUND103 "\033[48;5;103m" +// #define BACKGROUND104 "\033[48;5;104m" +// #define BACKGROUND105 "\033[48;5;105m" +// #define BACKGROUND106 "\033[48;5;106m" +// #define BACKGROUND107 "\033[48;5;107m" +// #define BACKGROUND108 "\033[48;5;108m" +// #define BACKGROUND109 "\033[48;5;109m" +// #define BACKGROUND110 "\033[48;5;110m" +// #define BACKGROUND111 "\033[48;5;111m" +// #define BACKGROUND112 "\033[48;5;112m" +// #define BACKGROUND113 "\033[48;5;113m" +// #define BACKGROUND114 "\033[48;5;114m" +// #define BACKGROUND115 "\033[48;5;115m" +// #define BACKGROUND116 "\033[48;5;116m" +// #define BACKGROUND117 "\033[48;5;117m" +// #define BACKGROUND118 "\033[48;5;118m" +// #define BACKGROUND119 "\033[48;5;119m" +// #define BACKGROUND120 "\033[48;5;120m" +// #define BACKGROUND121 "\033[48;5;121m" +// #define BACKGROUND122 "\033[48;5;122m" +// #define BACKGROUND123 "\033[48;5;123m" +// #define BACKGROUND124 "\033[48;5;124m" +// #define BACKGROUND125 "\033[48;5;125m" +// #define BACKGROUND126 "\033[48;5;126m" +// #define BACKGROUND127 "\033[48;5;127m" +// #define BACKGROUND128 "\033[48;5;128m" +// #define BACKGROUND129 "\033[48;5;129m" +// #define BACKGROUND130 "\033[48;5;130m" +// #define BACKGROUND131 "\033[48;5;131m" +// #define BACKGROUND132 "\033[48;5;132m" +// #define BACKGROUND133 "\033[48;5;133m" +// #define BACKGROUND134 "\033[48;5;134m" +// #define BACKGROUND135 "\033[48;5;135m" +// #define BACKGROUND136 "\033[48;5;136m" +// #define BACKGROUND137 "\033[48;5;137m" +// #define BACKGROUND138 "\033[48;5;138m" +// #define BACKGROUND139 "\033[48;5;139m" +// #define BACKGROUND140 "\033[48;5;140m" +// #define BACKGROUND141 "\033[48;5;141m" +// #define BACKGROUND142 "\033[48;5;142m" +// #define BACKGROUND143 "\033[48;5;143m" +// #define BACKGROUND144 "\033[48;5;144m" +// #define BACKGROUND145 "\033[48;5;145m" +// #define BACKGROUND146 "\033[48;5;146m" +// #define BACKGROUND147 "\033[48;5;147m" +// #define BACKGROUND148 "\033[48;5;148m" +// #define BACKGROUND149 "\033[48;5;149m" +// #define BACKGROUND150 "\033[48;5;150m" +// #define BACKGROUND151 "\033[48;5;151m" +// #define BACKGROUND152 "\033[48;5;152m" +// #define BACKGROUND153 "\033[48;5;153m" +// #define BACKGROUND154 "\033[48;5;154m" +// #define BACKGROUND155 "\033[48;5;155m" +// #define BACKGROUND156 "\033[48;5;156m" +// #define BACKGROUND157 "\033[48;5;157m" +// #define BACKGROUND158 "\033[48;5;158m" +// #define BACKGROUND159 "\033[48;5;159m" +// #define BACKGROUND160 "\033[48;5;160m" +// #define BACKGROUND161 "\033[48;5;161m" +// #define BACKGROUND162 "\033[48;5;162m" +// #define BACKGROUND163 "\033[48;5;163m" +// #define BACKGROUND164 "\033[48;5;164m" +// #define BACKGROUND165 "\033[48;5;165m" +// #define BACKGROUND166 "\033[48;5;166m" +// #define BACKGROUND167 "\033[48;5;167m" +// #define BACKGROUND168 "\033[48;5;168m" +// #define BACKGROUND169 "\033[48;5;169m" +// #define BACKGROUND170 "\033[48;5;170m" +// #define BACKGROUND171 "\033[48;5;171m" +// #define BACKGROUND172 "\033[48;5;172m" +// #define BACKGROUND173 "\033[48;5;173m" +// #define BACKGROUND174 "\033[48;5;174m" +// #define BACKGROUND175 "\033[48;5;175m" +// #define BACKGROUND176 "\033[48;5;176m" +// #define BACKGROUND177 "\033[48;5;177m" +// #define BACKGROUND178 "\033[48;5;178m" +// #define BACKGROUND179 "\033[48;5;179m" +// #define BACKGROUND180 "\033[48;5;180m" +// #define BACKGROUND181 "\033[48;5;181m" +// #define BACKGROUND182 "\033[48;5;182m" +// #define BACKGROUND183 "\033[48;5;183m" +// #define BACKGROUND184 "\033[48;5;184m" +// #define BACKGROUND185 "\033[48;5;185m" +// #define BACKGROUND186 "\033[48;5;186m" +// #define BACKGROUND187 "\033[48;5;187m" +// #define BACKGROUND188 "\033[48;5;188m" +// #define BACKGROUND189 "\033[48;5;189m" +// #define BACKGROUND190 "\033[48;5;190m" +// #define BACKGROUND191 "\033[48;5;191m" +// #define BACKGROUND192 "\033[48;5;192m" +// #define BACKGROUND193 "\033[48;5;193m" +// #define BACKGROUND194 "\033[48;5;194m" +// #define BACKGROUND195 "\033[48;5;195m" +// #define BACKGROUND196 "\033[48;5;196m" +// #define BACKGROUND197 "\033[48;5;197m" +// #define BACKGROUND198 "\033[48;5;198m" +// #define BACKGROUND199 "\033[48;5;199m" +// #define BACKGROUND200 "\033[48;5;200m" +// #define BACKGROUND201 "\033[48;5;201m" +// #define BACKGROUND202 "\033[48;5;202m" +// #define BACKGROUND203 "\033[48;5;203m" +// #define BACKGROUND204 "\033[48;5;204m" +// #define BACKGROUND205 "\033[48;5;205m" +// #define BACKGROUND206 "\033[48;5;206m" +// #define BACKGROUND207 "\033[48;5;207m" +// #define BACKGROUND208 "\033[48;5;208m" +// #define BACKGROUND209 "\033[48;5;209m" +// #define BACKGROUND210 "\033[48;5;210m" +// #define BACKGROUND211 "\033[48;5;211m" +// #define BACKGROUND212 "\033[48;5;212m" +// #define BACKGROUND213 "\033[48;5;213m" +// #define BACKGROUND214 "\033[48;5;214m" +// #define BACKGROUND215 "\033[48;5;215m" +// #define BACKGROUND216 "\033[48;5;216m" +// #define BACKGROUND217 "\033[48;5;217m" +// #define BACKGROUND218 "\033[48;5;218m" +// #define BACKGROUND219 "\033[48;5;219m" +// #define BACKGROUND220 "\033[48;5;220m" +// #define BACKGROUND221 "\033[48;5;221m" +// #define BACKGROUND222 "\033[48;5;222m" +// #define BACKGROUND223 "\033[48;5;223m" +// #define BACKGROUND224 "\033[48;5;224m" +// #define BACKGROUND225 "\033[48;5;225m" +// #define BACKGROUND226 "\033[48;5;226m" +// #define BACKGROUND227 "\033[48;5;227m" +// #define BACKGROUND228 "\033[48;5;228m" +// #define BACKGROUND229 "\033[48;5;229m" +// #define BACKGROUND230 "\033[48;5;230m" +// #define BACKGROUND231 "\033[48;5;231m" +// #define BACKGROUND232 "\033[48;5;232m" +// #define BACKGROUND233 "\033[48;5;233m" +// #define BACKGROUND234 "\033[48;5;234m" +// #define BACKGROUND235 "\033[48;5;235m" +// #define BACKGROUND236 "\033[48;5;236m" +// #define BACKGROUND237 "\033[48;5;237m" +// #define BACKGROUND238 "\033[48;5;238m" +// #define BACKGROUND239 "\033[48;5;239m" +// #define BACKGROUND240 "\033[48;5;240m" +// #define BACKGROUND241 "\033[48;5;241m" +// #define BACKGROUND242 "\033[48;5;242m" +// #define BACKGROUND243 "\033[48;5;243m" +// #define BACKGROUND244 "\033[48;5;244m" +// #define BACKGROUND245 "\033[48;5;245m" +// #define BACKGROUND246 "\033[48;5;246m" +// #define BACKGROUND247 "\033[48;5;247m" +// #define BACKGROUND248 "\033[48;5;248m" +// #define BACKGROUND249 "\033[48;5;249m" +// #define BACKGROUND250 "\033[48;5;250m" +// #define BACKGROUND251 "\033[48;5;251m" +// #define BACKGROUND252 "\033[48;5;252m" +// #define BACKGROUND253 "\033[48;5;253m" +// #define BACKGROUND254 "\033[48;5;254m" +// #define BACKGROUND255 "\033[48;5;255m" + + + + +#endif \ No newline at end of file diff --git a/ex00/inc/tests.hpp b/ex00/inc/tests.hpp new file mode 100644 index 0000000..9c059c7 --- /dev/null +++ b/ex00/inc/tests.hpp @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* tests.hpp :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/04/10 11:35:46 by whaffman #+# #+# */ +/* Updated: 2025/04/10 11:36:09 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#pragma once + +void testAnimal(void); +void testCat(void); +void testDog(void); +void testWrongAnimal(void); +void testWrongCat(void); \ No newline at end of file diff --git a/ex00/src/Animal.cpp b/ex00/src/Animal.cpp index 3e8fe29..904eb35 100644 --- a/ex00/src/Animal.cpp +++ b/ex00/src/Animal.cpp @@ -6,40 +6,43 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 16:59:26 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 11:33:29 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Animal.hpp" -#include +#include "colors.h" +#include #include Animal::Animal() { this->type = "Animal"; - std::cout << "Animal default constructor called" << std::endl; -} -Animal::Animal(const Animal &animal) : type(animal.type) + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET <<" default constructor called" << std::endl; +} +Animal::Animal(const Animal &other) : type(other.type) { - std::cout << "Animal copy constructor called" << std::endl; + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET << " copy constructor called on an animal of type: " << type << std::endl; } Animal::~Animal() { - std::cout << "Animal destructor called" << std::endl; + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET << " destructor called" << std::endl; } -Animal &Animal::operator=(const Animal &animal) +Animal &Animal::operator=(const Animal &other) { - std::cout << "Animal assignment operator called" << std::endl; - if (this == &animal) + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = animal.type; + + type = other.type; return *this; } -void Animal::makeSound(void) const +void Animal::makeSound(void) const { } + std::string Animal::getType(void) const { return type; -} \ No newline at end of file +} + diff --git a/ex00/src/Animal_test.cpp b/ex00/src/Animal_test.cpp new file mode 100644 index 0000000..6ba87c6 --- /dev/null +++ b/ex00/src/Animal_test.cpp @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* Animal_test.cpp :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/04/10 11:33:34 by whaffman #+# #+# */ +/* Updated: 2025/04/10 11:34:52 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#include "Animal.hpp" +#include +#include "colors.h" + +void testAnimal(void) +{ + std::cout << BOLD_UNDERLINE << BACKGROUND12 << WHITE << "Animal tests..." + << RESET << std::endl << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR12 << "Animal default constructor called" << RESET << std::endl; + Animal animal; + std::cout < +#+ */ /* +#+ */ /* Created: 2025/04/05 17:05:34 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:46:59 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Cat.hpp" +#include "colors.h" #include #include Cat::Cat() { this->type = "Cat"; - std::cout << "Cat default constructor called" << std::endl; -} -Cat::Cat(const Cat &cat) : Animal(cat) + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " default constructor called" << std::endl; +} +Cat::Cat(const Cat &other) : Animal(other) { - this->type = cat.type; - std::cout << "Cat copy constructor called" << std::endl; + this->type = other.type; + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " copy constructor called" << std::endl; } Cat::~Cat() { - std::cout << "Cat destructor called" << std::endl; + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " destructor called" << std::endl; } -Cat &Cat::operator=(const Cat &cat) +Cat &Cat::operator=(const Cat &other) { - std::cout << "Cat assignment operator called" << std::endl; - if (this == &cat) + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = cat.type; + + type = other.type; return *this; } @@ -42,3 +43,4 @@ void Cat::makeSound(void) const { std::cout << "Meow" << std::endl; } + diff --git a/ex00/src/Cat_test.cpp b/ex00/src/Cat_test.cpp new file mode 100644 index 0000000..a1e076e --- /dev/null +++ b/ex00/src/Cat_test.cpp @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* Cat_test.cpp :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/04/10 11:35:38 by whaffman #+# #+# */ +/* Updated: 2025/04/10 11:43:41 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#include "Cat.hpp" +#include +#include "colors.h" + +void testCat() +{ + std::cout << BOLD_UNDERLINE << BACKGROUND10 << WHITE << "Cat tests..." + << RESET << std::endl << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Cat default constructor called" << RESET << std::endl; + Cat cat; + std::cout < +#+ */ /* +#+ */ /* Created: 2025/04/05 17:06:12 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:46:46 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Dog.hpp" + #include #include +#include "colors.h" Dog::Dog() { this->type = "Dog"; - std::cout << "Dog default constructor called" << std::endl; + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " default constructor called" << std::endl; } -Dog::Dog(const Dog &dog) : Animal(dog) +Dog::Dog(const Dog &other) : Animal(other) { - this->type = dog.type; - std::cout << "Dog copy constructor called" << std::endl; + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " copy constructor called" << std::endl; } Dog::~Dog() { - std::cout << "Dog destructor called" << std::endl; + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " destructor called" << std::endl; } -Dog &Dog::operator=(const Dog &dog) +Dog &Dog::operator=(const Dog &other) { - std::cout << "Dog assignment operator called" << std::endl; - if (this == &dog) + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = dog.type; + + type = other.type; return *this; } void Dog::makeSound(void) const { std::cout << "Woof" << std::endl; } + + diff --git a/ex00/src/Dog_test.cpp b/ex00/src/Dog_test.cpp new file mode 100644 index 0000000..2d89053 --- /dev/null +++ b/ex00/src/Dog_test.cpp @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* Dog_test.cpp :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/04/10 11:36:37 by whaffman #+# #+# */ +/* Updated: 2025/04/10 11:44:14 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#include "Dog.hpp" +#include +#include "colors.h" + +void testDog() +{ + std::cout << BOLD_UNDERLINE << BACKGROUND10 << WHITE << "Dog tests..." + << RESET << std::endl << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Dog default constructor called" << RESET << std::endl; + Dog dog; + std::cout < +#+ */ /* +#+ */ /* Created: 2025/04/05 17:26:52 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 11:52:22 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "WrongAnimal.hpp" #include #include +#include "colors.h" WrongAnimal::WrongAnimal() { this->type = "WrongAnimal"; - std::cout << "WrongAnimal default constructor called" << std::endl; + std::cout << BACKGROUND1 << BOLD << "WrongAnimal" << RESET << " default constructor called" << std::endl; } -WrongAnimal::WrongAnimal(const WrongAnimal &animal) : type(animal.type) +WrongAnimal::WrongAnimal(const WrongAnimal &other) : type(other.type) { - std::cout << "WrongAnimal copy constructor called" << std::endl; -} + std::cout << BACKGROUND1 << BOLD << "WrongAnimal" << RESET << " copy constructor called" << std::endl; +} WrongAnimal::~WrongAnimal() { - std::cout << "WrongAnimal destructor called" << std::endl; + std::cout << BACKGROUND1 << BOLD << "WrongAnimal" << RESET << " destructor called" << std::endl; } -WrongAnimal &WrongAnimal::operator=(const WrongAnimal &animal) +WrongAnimal &WrongAnimal::operator=(const WrongAnimal &other) { - std::cout << "WrongAnimal assignment operator called" << std::endl; - if (this == &animal) + std::cout << BACKGROUND1 << BOLD << "WrongAnimal" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = animal.type; + + type = other.type; return *this; } -void WrongAnimal::makeSound(void) const {} +void WrongAnimal::makeSound(void) const {} std::string WrongAnimal::getType(void) const { return type; diff --git a/ex00/src/WrongAnimal_test.cpp b/ex00/src/WrongAnimal_test.cpp new file mode 100644 index 0000000..a1f50ae --- /dev/null +++ b/ex00/src/WrongAnimal_test.cpp @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* WrongAnimal_test.cpp :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/04/10 11:39:17 by whaffman #+# #+# */ +/* Updated: 2025/04/10 11:44:51 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + + +#include "WrongAnimal.hpp" +#include +#include "colors.h" + +void testWrongAnimal() +{ + std::cout << BOLD_UNDERLINE << BACKGROUND10 << WHITE << "WrongAnimal tests..." + << RESET << std::endl << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "WrongAnimal default constructor called" << RESET << std::endl; + WrongAnimal wrongAnimal; + std::cout < +#+ */ /* +#+ */ /* Created: 2025/04/05 17:28:51 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 11:53:30 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "WrongCat.hpp" +#include +#include "colors.h" WrongCat::WrongCat() { this->type = "WrongCat"; - std::cout << "WrongCat default constructor called" << std::endl; + std::cout << BACKGROUND9 << BOLD << "WrongCat" << RESET << " default constructor called" << std::endl; } -WrongCat::WrongCat(const WrongCat &cat) : WrongAnimal(cat) +WrongCat::WrongCat(const WrongCat &other) : WrongAnimal(other) { - this->type = cat.type; - std::cout << "WrongCat copy constructor called" << std::endl; + std::cout << BACKGROUND9 << BOLD << "WrongCat" << RESET << " copy constructor called" << std::endl; } WrongCat::~WrongCat() { - std::cout << "WrongCat destructor called" << std::endl; + std::cout << BACKGROUND9 << BOLD << "WrongCat" << RESET << " destructor called" << std::endl; } -WrongCat &WrongCat::operator=(const WrongCat &cat) +WrongCat &WrongCat::operator=(const WrongCat &other) { - std::cout << "WrongCat assignment operator called" << std::endl; - if (this == &cat) + std::cout << BACKGROUND9 << BOLD << "WrongCat" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = cat.type; + + type = other.type; return *this; } void WrongCat::makeSound(void) const diff --git a/ex00/src/WrongCat_test.cpp b/ex00/src/WrongCat_test.cpp new file mode 100644 index 0000000..cc5dac2 --- /dev/null +++ b/ex00/src/WrongCat_test.cpp @@ -0,0 +1,29 @@ + +#include "WrongCat.hpp" +#include +#include "colors.h" + +void testWrongCat() +{ + std::cout << BOLD_UNDERLINE << BACKGROUND10 << WHITE << "WrongCat tests..." + << RESET << std::endl << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "WrongCat default constructor called" << RESET << std::endl; + WrongCat wrongCat; + std::cout < +#+ */ /* +#+ */ /* Created: 2025/04/05 17:06:50 by whaffman #+# #+# */ -/* Updated: 2025/04/05 18:01:03 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 12:27:22 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ -#include "Animal.hpp" -#include "WrongAnimal.hpp" -#include "Dog.hpp" -#include "Cat.hpp" -#include "WrongCat.hpp" +#include "tests.hpp" #include +#include "colors.h" + +#include "Animal.hpp" +#include "Cat.hpp" +#include "Dog.hpp" +#include "WrongAnimal.hpp" +#include "WrongCat.hpp" int main(void) { - std::cout << "Construct Animal, Cat and Dog" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "construct an animal:" << std::endl; - const Animal* animal = new Animal(); - std::cout << "construct a cat:" << std::endl; - const Animal* cat = new Cat(); - std::cout << "construct a dog:" << std::endl; - const Animal* dog = new Dog(); - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "test the getType function" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "animal is of type : " << animal->getType() << std::endl; - std::cout << "cat is of type : " << cat->getType() << std::endl; - std::cout << "dog is of type : " << dog->getType() << std::endl; - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "test the makeSound function" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "animal sound : "; - animal->makeSound(); + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "Run Class tests" << RESET << std::endl; std::cout << std::endl; - std::cout << "cat sound : "; - cat->makeSound(); - std::cout << "dog sound : "; - dog->makeSound(); - std::cout << "========================================" << std::endl << std::endl; + testAnimal(); + std::cout << std::endl; + testCat(); + std::cout << std::endl; + testDog(); + std::cout << std::endl; + testWrongAnimal(); + std::cout << std::endl; + testWrongCat(); + std::cout << std::endl; + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "Class Tests Complete" << RESET << std::endl; - std::cout << "test the destructor" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "delete animal:" << std::endl; + + std::cout << std::endl; + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "Run Polymorhism tests" << RESET << std::endl; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "Animal Polymorhism tests" << RESET << std::endl; + Animal *animal = new Animal(); + animal->makeSound(); delete animal; - std::cout << "delete cat:" << std::endl; - delete cat; - std::cout << "delete dog:" << std::endl; - delete dog; - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "Construct WrongAnimal, WrongCat" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "construct a wrongAnimal:" << std::endl; - const WrongAnimal* wrongAnimal = new WrongAnimal(); - std::cout << "construct a wrongCat:" << std::endl; - const WrongAnimal* wrongCat = new WrongCat(); - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "test the getType function" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "wrongAnimal is of type : " << wrongAnimal->getType() << std::endl; - std::cout << "wrongCat is of type : " << wrongCat->getType() << std::endl; - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "test the makeSound function" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "wrongAnimal sound : "; - wrongAnimal->makeSound(); std::cout << std::endl; - std::cout << "wrongCat sound : "; - wrongCat->makeSound(); - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "test the destructor" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "delete wrongAnimal:" << std::endl; + + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "Cat Polymorhism tests" << RESET << std::endl; + Animal *cat = new Cat(); + cat->makeSound(); + delete cat; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "Dog Polymorhism tests" << RESET << std::endl; + Animal *dog = new Dog(); + dog->makeSound(); + delete dog; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "WrongAnimal Polymorhism tests" << RESET << std::endl; + WrongAnimal *wrongAnimal = new WrongAnimal(); + wrongAnimal->makeSound(); delete wrongAnimal; - std::cout << "delete wrongCat:" << std::endl; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << BACKGROUND6 << WHITE << "WrongCat Polymorhism tests" << RESET << std::endl; + WrongAnimal *wrongCat = new WrongCat(); + wrongCat->makeSound(); delete wrongCat; - std::cout << "========================================" << std::endl << std::endl; - + std::cout << std::endl; + return 0; } \ No newline at end of file diff --git a/ex01/inc/Animal.hpp b/ex01/inc/Animal.hpp index 8f3f890..ba99b2e 100644 --- a/ex01/inc/Animal.hpp +++ b/ex01/inc/Animal.hpp @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 16:53:44 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 12:32:17 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -21,10 +21,10 @@ protected: public: Animal(); - Animal(const Animal &animal); + Animal(const Animal &other); virtual ~Animal(); - Animal &operator=(const Animal &animal); + Animal &operator=(const Animal &other); - virtual void makeSound(void) const; + virtual void makeSound(void) const; std::string getType(void) const; }; \ No newline at end of file diff --git a/ex01/inc/Brain.hpp b/ex01/inc/Brain.hpp index 66e2f93..b48ab63 100644 --- a/ex01/inc/Brain.hpp +++ b/ex01/inc/Brain.hpp @@ -6,21 +6,20 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:40:33 by whaffman #+# #+# */ -/* Updated: 2025/04/06 11:29:20 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:41:27 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #pragma once #include -#include #define MAX_IDEAS 10 class Brain { private: - std::array ideas; + std::string ideas[MAX_IDEAS]; public: Brain(); diff --git a/ex01/inc/Cat.hpp b/ex01/inc/Cat.hpp index 33400cc..bfb24f6 100644 --- a/ex01/inc/Cat.hpp +++ b/ex01/inc/Cat.hpp @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:02:57 by whaffman #+# #+# */ -/* Updated: 2025/04/05 17:50:55 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:52:49 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -21,12 +21,12 @@ class Cat : public Animal private: Brain *brain; -public: + public: Cat(); - Cat(const Cat &cat); + Cat(const Cat &other); ~Cat() override; - Cat &operator=(const Cat &cat); + Cat &operator=(const Cat &other); void makeSound(void) const override; - -}; \ No newline at end of file + Brain &getBrain(); +}; diff --git a/ex01/inc/Dog.hpp b/ex01/inc/Dog.hpp index fa05944..011b14b 100644 --- a/ex01/inc/Dog.hpp +++ b/ex01/inc/Dog.hpp @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:04:03 by whaffman #+# #+# */ -/* Updated: 2025/04/05 17:49:51 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:52:57 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -20,12 +20,13 @@ class Dog : public Animal { private: Brain *brain; - + public: Dog(); - Dog(const Dog &Dog); + Dog(const Dog &other); ~Dog() override; - Dog &operator=(const Dog &Dog); + Dog &operator=(const Dog &other); void makeSound(void) const override; + Brain &getBrain(); }; \ No newline at end of file diff --git a/ex01/inc/colors.h b/ex01/inc/colors.h new file mode 100644 index 0000000..461f384 --- /dev/null +++ b/ex01/inc/colors.h @@ -0,0 +1,554 @@ +#ifndef COLORS_H +#define COLORS_H + +#define RESET "\033[m" + +#define BOLD_UNDERLINE "\033[1;4m" +#define BOLD_UNDERLINE_OFF "\033[22;24m" + +#define BOLD "\033[1m" +#define UNDERLINE "\033[4m" +#define ITALIC "\033[3m" +#define BLINK "\033[5m" +#define INVERSE "\033[7m" +#define STRIKETHROUGH "\033[9m" + +#define BOLD_OFF "\033[22m" +#define UNDERLINE_OFF "\033[24m" +#define ITALIC_OFF "\033[23m" +#define BLINK_OFF "\033[25m" +#define INVERSE_OFF "\033[27m" +#define STRIKETHROUGH_OFF "\033[29m" + +#define REVERSE "\033[7m" + +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +#define COLOR0 "\033[38;5;0m" +#define COLOR1 "\033[38;5;1m" +#define COLOR2 "\033[38;5;2m" +#define COLOR3 "\033[38;5;3m" +#define COLOR4 "\033[38;5;4m" +#define COLOR5 "\033[38;5;5m" +#define COLOR6 "\033[38;5;6m" +#define COLOR7 "\033[38;5;7m" +#define COLOR8 "\033[38;5;8m" +#define COLOR9 "\033[38;5;9m" +#define COLOR10 "\033[38;5;10m" +#define COLOR11 "\033[38;5;11m" +#define COLOR12 "\033[38;5;12m" +#define COLOR13 "\033[38;5;13m" +#define COLOR14 "\033[38;5;14m" +#define COLOR15 "\033[38;5;15m" + +#define BACKGROUND0 "\033[48;5;0m" +#define BACKGROUND1 "\033[48;5;1m" +#define BACKGROUND2 "\033[48;5;2m" +#define BACKGROUND3 "\033[48;5;3m" +#define BACKGROUND4 "\033[48;5;4m" +#define BACKGROUND5 "\033[48;5;5m" +#define BACKGROUND6 "\033[48;5;6m" +#define BACKGROUND7 "\033[48;5;7m" +#define BACKGROUND8 "\033[48;5;8m" +#define BACKGROUND9 "\033[48;5;9m" +#define BACKGROUND10 "\033[48;5;10m" +#define BACKGROUND11 "\033[48;5;11m" +#define BACKGROUND12 "\033[48;5;12m" +#define BACKGROUND13 "\033[48;5;13m" +#define BACKGROUND14 "\033[48;5;14m" +#define BACKGROUND15 "\033[48;5;15m" + +// #define COLOR16 "\033[38;5;16m" +// #define COLOR17 "\033[38;5;17m" +// #define COLOR18 "\033[38;5;18m" +// #define COLOR19 "\033[38;5;19m" +// #define COLOR20 "\033[38;5;20m" +// #define COLOR21 "\033[38;5;21m" +// #define COLOR22 "\033[38;5;22m" +// #define COLOR23 "\033[38;5;23m" +// #define COLOR24 "\033[38;5;24m" +// #define COLOR25 "\033[38;5;25m" +// #define COLOR26 "\033[38;5;26m" +// #define COLOR27 "\033[38;5;27m" +// #define COLOR28 "\033[38;5;28m" +// #define COLOR29 "\033[38;5;29m" +// #define COLOR30 "\033[38;5;30m" +// #define COLOR31 "\033[38;5;31m" +// #define COLOR32 "\033[38;5;32m" +// #define COLOR33 "\033[38;5;33m" +// #define COLOR34 "\033[38;5;34m" +// #define COLOR35 "\033[38;5;35m" +// #define COLOR36 "\033[38;5;36m" +// #define COLOR37 "\033[38;5;37m" +// #define COLOR38 "\033[38;5;38m" +// #define COLOR39 "\033[38;5;39m" +// #define COLOR40 "\033[38;5;40m" +// #define COLOR41 "\033[38;5;41m" +// #define COLOR42 "\033[38;5;42m" +// #define COLOR43 "\033[38;5;43m" +// #define COLOR44 "\033[38;5;44m" +// #define COLOR45 "\033[38;5;45m" +// #define COLOR46 "\033[38;5;46m" +// #define COLOR47 "\033[38;5;47m" +// #define COLOR48 "\033[38;5;48m" +// #define COLOR49 "\033[38;5;49m" +// #define COLOR50 "\033[38;5;50m" +// #define COLOR51 "\033[38;5;51m" +// #define COLOR52 "\033[38;5;52m" +// #define COLOR53 "\033[38;5;53m" +// #define COLOR54 "\033[38;5;54m" +// #define COLOR55 "\033[38;5;55m" +// #define COLOR56 "\033[38;5;56m" +// #define COLOR57 "\033[38;5;57m" +// #define COLOR58 "\033[38;5;58m" +// #define COLOR59 "\033[38;5;59m" +// #define COLOR60 "\033[38;5;60m" +// #define COLOR61 "\033[38;5;61m" +// #define COLOR62 "\033[38;5;62m" +// #define COLOR63 "\033[38;5;63m" +// #define COLOR64 "\033[38;5;64m" +// #define COLOR65 "\033[38;5;65m" +// #define COLOR66 "\033[38;5;66m" +// #define COLOR67 "\033[38;5;67m" +// #define COLOR68 "\033[38;5;68m" +// #define COLOR69 "\033[38;5;69m" +// #define COLOR70 "\033[38;5;70m" +// #define COLOR71 "\033[38;5;71m" +// #define COLOR72 "\033[38;5;72m" +// #define COLOR73 "\033[38;5;73m" +// #define COLOR74 "\033[38;5;74m" +// #define COLOR75 "\033[38;5;75m" +// #define COLOR76 "\033[38;5;76m" +// #define COLOR77 "\033[38;5;77m" +// #define COLOR78 "\033[38;5;78m" +// #define COLOR79 "\033[38;5;79m" +// #define COLOR80 "\033[38;5;80m" +// #define COLOR81 "\033[38;5;81m" +// #define COLOR82 "\033[38;5;82m" +// #define COLOR83 "\033[38;5;83m" +// #define COLOR84 "\033[38;5;84m" +// #define COLOR85 "\033[38;5;85m" +// #define COLOR86 "\033[38;5;86m" +// #define COLOR87 "\033[38;5;87m" +// #define COLOR88 "\033[38;5;88m" +// #define COLOR89 "\033[38;5;89m" +// #define COLOR90 "\033[38;5;90m" +// #define COLOR91 "\033[38;5;91m" +// #define COLOR92 "\033[38;5;92m" +// #define COLOR93 "\033[38;5;93m" +// #define COLOR94 "\033[38;5;94m" +// #define COLOR95 "\033[38;5;95m" +// #define COLOR96 "\033[38;5;96m" +// #define COLOR97 "\033[38;5;97m" +// #define COLOR98 "\033[38;5;98m" +// #define COLOR99 "\033[38;5;99m" +// #define COLOR100 "\033[38;5;100m" +// #define COLOR101 "\033[38;5;101m" +// #define COLOR102 "\033[38;5;102m" +// #define COLOR103 "\033[38;5;103m" +// #define COLOR104 "\033[38;5;104m" +// #define COLOR105 "\033[38;5;105m" +// #define COLOR106 "\033[38;5;106m" +// #define COLOR107 "\033[38;5;107m" +// #define COLOR108 "\033[38;5;108m" +// #define COLOR109 "\033[38;5;109m" +// #define COLOR110 "\033[38;5;110m" +// #define COLOR111 "\033[38;5;111m" +// #define COLOR112 "\033[38;5;112m" +// #define COLOR113 "\033[38;5;113m" +// #define COLOR114 "\033[38;5;114m" +// #define COLOR115 "\033[38;5;115m" +// #define COLOR116 "\033[38;5;116m" +// #define COLOR117 "\033[38;5;117m" +// #define COLOR118 "\033[38;5;118m" +// #define COLOR119 "\033[38;5;119m" +// #define COLOR120 "\033[38;5;120m" +// #define COLOR121 "\033[38;5;121m" +// #define COLOR122 "\033[38;5;122m" +// #define COLOR123 "\033[38;5;123m" +// #define COLOR124 "\033[38;5;124m" +// #define COLOR125 "\033[38;5;125m" +// #define COLOR126 "\033[38;5;126m" +// #define COLOR127 "\033[38;5;127m" +// #define COLOR128 "\033[38;5;128m" +// #define COLOR129 "\033[38;5;129m" +// #define COLOR130 "\033[38;5;130m" +// #define COLOR131 "\033[38;5;131m" +// #define COLOR132 "\033[38;5;132m" +// #define COLOR133 "\033[38;5;133m" +// #define COLOR134 "\033[38;5;134m" +// #define COLOR135 "\033[38;5;135m" +// #define COLOR136 "\033[38;5;136m" +// #define COLOR137 "\033[38;5;137m" +// #define COLOR138 "\033[38;5;138m" +// #define COLOR139 "\033[38;5;139m" +// #define COLOR140 "\033[38;5;140m" +// #define COLOR141 "\033[38;5;141m" +// #define COLOR142 "\033[38;5;142m" +// #define COLOR143 "\033[38;5;143m" +// #define COLOR144 "\033[38;5;144m" +// #define COLOR145 "\033[38;5;145m" +// #define COLOR146 "\033[38;5;146m" +// #define COLOR147 "\033[38;5;147m" +// #define COLOR148 "\033[38;5;148m" +// #define COLOR149 "\033[38;5;149m" +// #define COLOR150 "\033[38;5;150m" +// #define COLOR151 "\033[38;5;151m" +// #define COLOR152 "\033[38;5;152m" +// #define COLOR153 "\033[38;5;153m" +// #define COLOR154 "\033[38;5;154m" +// #define COLOR155 "\033[38;5;155m" +// #define COLOR156 "\033[38;5;156m" +// #define COLOR157 "\033[38;5;157m" +// #define COLOR158 "\033[38;5;158m" +// #define COLOR159 "\033[38;5;159m" +// #define COLOR160 "\033[38;5;160m" +// #define COLOR161 "\033[38;5;161m" +// #define COLOR162 "\033[38;5;162m" +// #define COLOR163 "\033[38;5;163m" +// #define COLOR164 "\033[38;5;164m" +// #define COLOR165 "\033[38;5;165m" +// #define COLOR166 "\033[38;5;166m" +// #define COLOR167 "\033[38;5;167m" +// #define COLOR168 "\033[38;5;168m" +// #define COLOR169 "\033[38;5;169m" +// #define COLOR170 "\033[38;5;170m" +// #define COLOR171 "\033[38;5;171m" +// #define COLOR172 "\033[38;5;172m" +// #define COLOR173 "\033[38;5;173m" +// #define COLOR174 "\033[38;5;174m" +// #define COLOR175 "\033[38;5;175m" +// #define COLOR176 "\033[38;5;176m" +// #define COLOR177 "\033[38;5;177m" +// #define COLOR178 "\033[38;5;178m" +// #define COLOR179 "\033[38;5;179m" +// #define COLOR180 "\033[38;5;180m" +// #define COLOR181 "\033[38;5;181m" +// #define COLOR182 "\033[38;5;182m" +// #define COLOR183 "\033[38;5;183m" +// #define COLOR184 "\033[38;5;184m" +// #define COLOR185 "\033[38;5;185m" +// #define COLOR186 "\033[38;5;186m" +// #define COLOR187 "\033[38;5;187m" +// #define COLOR188 "\033[38;5;188m" +// #define COLOR189 "\033[38;5;189m" +// #define COLOR190 "\033[38;5;190m" +// #define COLOR191 "\033[38;5;191m" +// #define COLOR192 "\033[38;5;192m" +// #define COLOR193 "\033[38;5;193m" +// #define COLOR194 "\033[38;5;194m" +// #define COLOR195 "\033[38;5;195m" +// #define COLOR196 "\033[38;5;196m" +// #define COLOR197 "\033[38;5;197m" +// #define COLOR198 "\033[38;5;198m" +// #define COLOR199 "\033[38;5;199m" +// #define COLOR200 "\033[38;5;200m" +// #define COLOR201 "\033[38;5;201m" +// #define COLOR202 "\033[38;5;202m" +// #define COLOR203 "\033[38;5;203m" +// #define COLOR204 "\033[38;5;204m" +// #define COLOR205 "\033[38;5;205m" +// #define COLOR206 "\033[38;5;206m" +// #define COLOR207 "\033[38;5;207m" +// #define COLOR208 "\033[38;5;208m" +// #define COLOR209 "\033[38;5;209m" +// #define COLOR210 "\033[38;5;210m" +// #define COLOR211 "\033[38;5;211m" +// #define COLOR212 "\033[38;5;212m" +// #define COLOR213 "\033[38;5;213m" +// #define COLOR214 "\033[38;5;214m" +// #define COLOR215 "\033[38;5;215m" +// #define COLOR216 "\033[38;5;216m" +// #define COLOR217 "\033[38;5;217m" +// #define COLOR218 "\033[38;5;218m" +// #define COLOR219 "\033[38;5;219m" +// #define COLOR220 "\033[38;5;220m" +// #define COLOR221 "\033[38;5;221m" +// #define COLOR222 "\033[38;5;222m" +// #define COLOR223 "\033[38;5;223m" +// #define COLOR224 "\033[38;5;224m" +// #define COLOR225 "\033[38;5;225m" +// #define COLOR226 "\033[38;5;226m" +// #define COLOR227 "\033[38;5;227m" +// #define COLOR228 "\033[38;5;228m" +// #define COLOR229 "\033[38;5;229m" +// #define COLOR230 "\033[38;5;230m" +// #define COLOR231 "\033[38;5;231m" +// #define COLOR232 "\033[38;5;232m" +// #define COLOR233 "\033[38;5;233m" +// #define COLOR234 "\033[38;5;234m" +// #define COLOR235 "\033[38;5;235m" +// #define COLOR236 "\033[38;5;236m" +// #define COLOR237 "\033[38;5;237m" +// #define COLOR238 "\033[38;5;238m" +// #define COLOR239 "\033[38;5;239m" +// #define COLOR240 "\033[38;5;240m" +// #define COLOR241 "\033[38;5;241m" +// #define COLOR242 "\033[38;5;242m" +// #define COLOR243 "\033[38;5;243m" +// #define COLOR244 "\033[38;5;244m" +// #define COLOR245 "\033[38;5;245m" +// #define COLOR246 "\033[38;5;246m" +// #define COLOR247 "\033[38;5;247m" +// #define COLOR248 "\033[38;5;248m" +// #define COLOR249 "\033[38;5;249m" +// #define COLOR250 "\033[38;5;250m" +// #define COLOR251 "\033[38;5;251m" +// #define COLOR252 "\033[38;5;252m" +// #define COLOR253 "\033[38;5;253m" +// #define COLOR254 "\033[38;5;254m" +// #define COLOR255 "\033[38;5;255m" + + +// #define BACKGROUND16 "\033[48;5;16m" +// #define BACKGROUND17 "\033[48;5;17m" +// #define BACKGROUND18 "\033[48;5;18m" +// #define BACKGROUND19 "\033[48;5;19m" +// #define BACKGROUND20 "\033[48;5;20m" +// #define BACKGROUND21 "\033[48;5;21m" +// #define BACKGROUND22 "\033[48;5;22m" +// #define BACKGROUND23 "\033[48;5;23m" +// #define BACKGROUND24 "\033[48;5;24m" +// #define BACKGROUND25 "\033[48;5;25m" +// #define BACKGROUND26 "\033[48;5;26m" +// #define BACKGROUND27 "\033[48;5;27m" +// #define BACKGROUND28 "\033[48;5;28m" +// #define BACKGROUND29 "\033[48;5;29m" +// #define BACKGROUND30 "\033[48;5;30m" +// #define BACKGROUND31 "\033[48;5;31m" +// #define BACKGROUND32 "\033[48;5;32m" +// #define BACKGROUND33 "\033[48;5;33m" +// #define BACKGROUND34 "\033[48;5;34m" +// #define BACKGROUND35 "\033[48;5;35m" +// #define BACKGROUND36 "\033[48;5;36m" +// #define BACKGROUND37 "\033[48;5;37m" +// #define BACKGROUND38 "\033[48;5;38m" +// #define BACKGROUND39 "\033[48;5;39m" +// #define BACKGROUND40 "\033[48;5;40m" +// #define BACKGROUND41 "\033[48;5;41m" +// #define BACKGROUND42 "\033[48;5;42m" +// #define BACKGROUND43 "\033[48;5;43m" +// #define BACKGROUND44 "\033[48;5;44m" +// #define BACKGROUND45 "\033[48;5;45m" +// #define BACKGROUND46 "\033[48;5;46m" +// #define BACKGROUND47 "\033[48;5;47m" +// #define BACKGROUND48 "\033[48;5;48m" +// #define BACKGROUND49 "\033[48;5;49m" +// #define BACKGROUND50 "\033[48;5;50m" +// #define BACKGROUND51 "\033[48;5;51m" +// #define BACKGROUND52 "\033[48;5;52m" +// #define BACKGROUND53 "\033[48;5;53m" +// #define BACKGROUND54 "\033[48;5;54m" +// #define BACKGROUND55 "\033[48;5;55m" +// #define BACKGROUND56 "\033[48;5;56m" +// #define BACKGROUND57 "\033[48;5;57m" +// #define BACKGROUND58 "\033[48;5;58m" +// #define BACKGROUND59 "\033[48;5;59m" +// #define BACKGROUND60 "\033[48;5;60m" +// #define BACKGROUND61 "\033[48;5;61m" +// #define BACKGROUND62 "\033[48;5;62m" +// #define BACKGROUND63 "\033[48;5;63m" +// #define BACKGROUND64 "\033[48;5;64m" +// #define BACKGROUND65 "\033[48;5;65m" +// #define BACKGROUND66 "\033[48;5;66m" +// #define BACKGROUND67 "\033[48;5;67m" +// #define BACKGROUND68 "\033[48;5;68m" +// #define BACKGROUND69 "\033[48;5;69m" +// #define BACKGROUND70 "\033[48;5;70m" +// #define BACKGROUND71 "\033[48;5;71m" +// #define BACKGROUND72 "\033[48;5;72m" +// #define BACKGROUND73 "\033[48;5;73m" +// #define BACKGROUND74 "\033[48;5;74m" +// #define BACKGROUND75 "\033[48;5;75m" +// #define BACKGROUND76 "\033[48;5;76m" +// #define BACKGROUND77 "\033[48;5;77m" +// #define BACKGROUND78 "\033[48;5;78m" +// #define BACKGROUND79 "\033[48;5;79m" +// #define BACKGROUND80 "\033[48;5;80m" +// #define BACKGROUND81 "\033[48;5;81m" +// #define BACKGROUND82 "\033[48;5;82m" +// #define BACKGROUND83 "\033[48;5;83m" +// #define BACKGROUND84 "\033[48;5;84m" +// #define BACKGROUND85 "\033[48;5;85m" +// #define BACKGROUND86 "\033[48;5;86m" +// #define BACKGROUND87 "\033[48;5;87m" +// #define BACKGROUND88 "\033[48;5;88m" +// #define BACKGROUND89 "\033[48;5;89m" +// #define BACKGROUND90 "\033[48;5;90m" +// #define BACKGROUND91 "\033[48;5;91m" +// #define BACKGROUND92 "\033[48;5;92m" +// #define BACKGROUND93 "\033[48;5;93m" +// #define BACKGROUND94 "\033[48;5;94m" +// #define BACKGROUND95 "\033[48;5;95m" +// #define BACKGROUND96 "\033[48;5;96m" +// #define BACKGROUND97 "\033[48;5;97m" +// #define BACKGROUND98 "\033[48;5;98m" +// #define BACKGROUND99 "\033[48;5;99m" +// #define BACKGROUND100 "\033[48;5;100m" +// #define BACKGROUND101 "\033[48;5;101m" +// #define BACKGROUND102 "\033[48;5;102m" +// #define BACKGROUND103 "\033[48;5;103m" +// #define BACKGROUND104 "\033[48;5;104m" +// #define BACKGROUND105 "\033[48;5;105m" +// #define BACKGROUND106 "\033[48;5;106m" +// #define BACKGROUND107 "\033[48;5;107m" +// #define BACKGROUND108 "\033[48;5;108m" +// #define BACKGROUND109 "\033[48;5;109m" +// #define BACKGROUND110 "\033[48;5;110m" +// #define BACKGROUND111 "\033[48;5;111m" +// #define BACKGROUND112 "\033[48;5;112m" +// #define BACKGROUND113 "\033[48;5;113m" +// #define BACKGROUND114 "\033[48;5;114m" +// #define BACKGROUND115 "\033[48;5;115m" +// #define BACKGROUND116 "\033[48;5;116m" +// #define BACKGROUND117 "\033[48;5;117m" +// #define BACKGROUND118 "\033[48;5;118m" +// #define BACKGROUND119 "\033[48;5;119m" +// #define BACKGROUND120 "\033[48;5;120m" +// #define BACKGROUND121 "\033[48;5;121m" +// #define BACKGROUND122 "\033[48;5;122m" +// #define BACKGROUND123 "\033[48;5;123m" +// #define BACKGROUND124 "\033[48;5;124m" +// #define BACKGROUND125 "\033[48;5;125m" +// #define BACKGROUND126 "\033[48;5;126m" +// #define BACKGROUND127 "\033[48;5;127m" +// #define BACKGROUND128 "\033[48;5;128m" +// #define BACKGROUND129 "\033[48;5;129m" +// #define BACKGROUND130 "\033[48;5;130m" +// #define BACKGROUND131 "\033[48;5;131m" +// #define BACKGROUND132 "\033[48;5;132m" +// #define BACKGROUND133 "\033[48;5;133m" +// #define BACKGROUND134 "\033[48;5;134m" +// #define BACKGROUND135 "\033[48;5;135m" +// #define BACKGROUND136 "\033[48;5;136m" +// #define BACKGROUND137 "\033[48;5;137m" +// #define BACKGROUND138 "\033[48;5;138m" +// #define BACKGROUND139 "\033[48;5;139m" +// #define BACKGROUND140 "\033[48;5;140m" +// #define BACKGROUND141 "\033[48;5;141m" +// #define BACKGROUND142 "\033[48;5;142m" +// #define BACKGROUND143 "\033[48;5;143m" +// #define BACKGROUND144 "\033[48;5;144m" +// #define BACKGROUND145 "\033[48;5;145m" +// #define BACKGROUND146 "\033[48;5;146m" +// #define BACKGROUND147 "\033[48;5;147m" +// #define BACKGROUND148 "\033[48;5;148m" +// #define BACKGROUND149 "\033[48;5;149m" +// #define BACKGROUND150 "\033[48;5;150m" +// #define BACKGROUND151 "\033[48;5;151m" +// #define BACKGROUND152 "\033[48;5;152m" +// #define BACKGROUND153 "\033[48;5;153m" +// #define BACKGROUND154 "\033[48;5;154m" +// #define BACKGROUND155 "\033[48;5;155m" +// #define BACKGROUND156 "\033[48;5;156m" +// #define BACKGROUND157 "\033[48;5;157m" +// #define BACKGROUND158 "\033[48;5;158m" +// #define BACKGROUND159 "\033[48;5;159m" +// #define BACKGROUND160 "\033[48;5;160m" +// #define BACKGROUND161 "\033[48;5;161m" +// #define BACKGROUND162 "\033[48;5;162m" +// #define BACKGROUND163 "\033[48;5;163m" +// #define BACKGROUND164 "\033[48;5;164m" +// #define BACKGROUND165 "\033[48;5;165m" +// #define BACKGROUND166 "\033[48;5;166m" +// #define BACKGROUND167 "\033[48;5;167m" +// #define BACKGROUND168 "\033[48;5;168m" +// #define BACKGROUND169 "\033[48;5;169m" +// #define BACKGROUND170 "\033[48;5;170m" +// #define BACKGROUND171 "\033[48;5;171m" +// #define BACKGROUND172 "\033[48;5;172m" +// #define BACKGROUND173 "\033[48;5;173m" +// #define BACKGROUND174 "\033[48;5;174m" +// #define BACKGROUND175 "\033[48;5;175m" +// #define BACKGROUND176 "\033[48;5;176m" +// #define BACKGROUND177 "\033[48;5;177m" +// #define BACKGROUND178 "\033[48;5;178m" +// #define BACKGROUND179 "\033[48;5;179m" +// #define BACKGROUND180 "\033[48;5;180m" +// #define BACKGROUND181 "\033[48;5;181m" +// #define BACKGROUND182 "\033[48;5;182m" +// #define BACKGROUND183 "\033[48;5;183m" +// #define BACKGROUND184 "\033[48;5;184m" +// #define BACKGROUND185 "\033[48;5;185m" +// #define BACKGROUND186 "\033[48;5;186m" +// #define BACKGROUND187 "\033[48;5;187m" +// #define BACKGROUND188 "\033[48;5;188m" +// #define BACKGROUND189 "\033[48;5;189m" +// #define BACKGROUND190 "\033[48;5;190m" +// #define BACKGROUND191 "\033[48;5;191m" +// #define BACKGROUND192 "\033[48;5;192m" +// #define BACKGROUND193 "\033[48;5;193m" +// #define BACKGROUND194 "\033[48;5;194m" +// #define BACKGROUND195 "\033[48;5;195m" +// #define BACKGROUND196 "\033[48;5;196m" +// #define BACKGROUND197 "\033[48;5;197m" +// #define BACKGROUND198 "\033[48;5;198m" +// #define BACKGROUND199 "\033[48;5;199m" +// #define BACKGROUND200 "\033[48;5;200m" +// #define BACKGROUND201 "\033[48;5;201m" +// #define BACKGROUND202 "\033[48;5;202m" +// #define BACKGROUND203 "\033[48;5;203m" +// #define BACKGROUND204 "\033[48;5;204m" +// #define BACKGROUND205 "\033[48;5;205m" +// #define BACKGROUND206 "\033[48;5;206m" +// #define BACKGROUND207 "\033[48;5;207m" +// #define BACKGROUND208 "\033[48;5;208m" +// #define BACKGROUND209 "\033[48;5;209m" +// #define BACKGROUND210 "\033[48;5;210m" +// #define BACKGROUND211 "\033[48;5;211m" +// #define BACKGROUND212 "\033[48;5;212m" +// #define BACKGROUND213 "\033[48;5;213m" +// #define BACKGROUND214 "\033[48;5;214m" +// #define BACKGROUND215 "\033[48;5;215m" +// #define BACKGROUND216 "\033[48;5;216m" +// #define BACKGROUND217 "\033[48;5;217m" +// #define BACKGROUND218 "\033[48;5;218m" +// #define BACKGROUND219 "\033[48;5;219m" +// #define BACKGROUND220 "\033[48;5;220m" +// #define BACKGROUND221 "\033[48;5;221m" +// #define BACKGROUND222 "\033[48;5;222m" +// #define BACKGROUND223 "\033[48;5;223m" +// #define BACKGROUND224 "\033[48;5;224m" +// #define BACKGROUND225 "\033[48;5;225m" +// #define BACKGROUND226 "\033[48;5;226m" +// #define BACKGROUND227 "\033[48;5;227m" +// #define BACKGROUND228 "\033[48;5;228m" +// #define BACKGROUND229 "\033[48;5;229m" +// #define BACKGROUND230 "\033[48;5;230m" +// #define BACKGROUND231 "\033[48;5;231m" +// #define BACKGROUND232 "\033[48;5;232m" +// #define BACKGROUND233 "\033[48;5;233m" +// #define BACKGROUND234 "\033[48;5;234m" +// #define BACKGROUND235 "\033[48;5;235m" +// #define BACKGROUND236 "\033[48;5;236m" +// #define BACKGROUND237 "\033[48;5;237m" +// #define BACKGROUND238 "\033[48;5;238m" +// #define BACKGROUND239 "\033[48;5;239m" +// #define BACKGROUND240 "\033[48;5;240m" +// #define BACKGROUND241 "\033[48;5;241m" +// #define BACKGROUND242 "\033[48;5;242m" +// #define BACKGROUND243 "\033[48;5;243m" +// #define BACKGROUND244 "\033[48;5;244m" +// #define BACKGROUND245 "\033[48;5;245m" +// #define BACKGROUND246 "\033[48;5;246m" +// #define BACKGROUND247 "\033[48;5;247m" +// #define BACKGROUND248 "\033[48;5;248m" +// #define BACKGROUND249 "\033[48;5;249m" +// #define BACKGROUND250 "\033[48;5;250m" +// #define BACKGROUND251 "\033[48;5;251m" +// #define BACKGROUND252 "\033[48;5;252m" +// #define BACKGROUND253 "\033[48;5;253m" +// #define BACKGROUND254 "\033[48;5;254m" +// #define BACKGROUND255 "\033[48;5;255m" + + + + +#endif \ No newline at end of file diff --git a/ex01/src/Animal.cpp b/ex01/src/Animal.cpp index 3e8fe29..904eb35 100644 --- a/ex01/src/Animal.cpp +++ b/ex01/src/Animal.cpp @@ -6,40 +6,43 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 16:59:26 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/10 11:33:29 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Animal.hpp" -#include +#include "colors.h" +#include #include Animal::Animal() { this->type = "Animal"; - std::cout << "Animal default constructor called" << std::endl; -} -Animal::Animal(const Animal &animal) : type(animal.type) + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET <<" default constructor called" << std::endl; +} +Animal::Animal(const Animal &other) : type(other.type) { - std::cout << "Animal copy constructor called" << std::endl; + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET << " copy constructor called on an animal of type: " << type << std::endl; } Animal::~Animal() { - std::cout << "Animal destructor called" << std::endl; + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET << " destructor called" << std::endl; } -Animal &Animal::operator=(const Animal &animal) +Animal &Animal::operator=(const Animal &other) { - std::cout << "Animal assignment operator called" << std::endl; - if (this == &animal) + std::cout << BACKGROUND12 << BOLD << "Animal" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = animal.type; + + type = other.type; return *this; } -void Animal::makeSound(void) const +void Animal::makeSound(void) const { } + std::string Animal::getType(void) const { return type; -} \ No newline at end of file +} + diff --git a/ex01/src/Brain.cpp b/ex01/src/Brain.cpp index 78bd996..1fa372e 100644 --- a/ex01/src/Brain.cpp +++ b/ex01/src/Brain.cpp @@ -6,48 +6,51 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:42:41 by whaffman #+# #+# */ -/* Updated: 2025/04/06 11:27:41 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:54:37 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Brain.hpp" +#include "colors.h" #include #include -#include + Brain::Brain() { - std::cout << "Brain default constructor called" << std::endl; + std::cout << BACKGROUND9 << BOLD << "Brain" << RESET << " default constructor called" << std::endl; } Brain::Brain(const Brain &brain) { - std::cout << "Brain copy constructor called" << std::endl; - *this = brain; + std::cout << BACKGROUND9 << BOLD << "Brain" << RESET << " copy constructor called" << std::endl; + for (size_t i = 0; i < MAX_IDEAS; ++i) + ideas[i] = brain.ideas[i]; } + Brain::~Brain() { - std::cout << "Brain destructor called" << std::endl; + std::cout << BACKGROUND9 << BOLD << "Brain" << RESET << " destructor called" << std::endl; } Brain &Brain::operator=(const Brain &brain) { - std::cout << "Brain assignment operator called" << std::endl; + std::cout << BACKGROUND9 << BOLD << "Brain" << RESET << " assignment operator called" << std::endl; if (this == &brain) return *this; - for (size_t i = 0; i < ideas.size(); ++i) + for (size_t i = 0; i < MAX_IDEAS; ++i) ideas[i] = brain.ideas[i]; return *this; -} +} void Brain::setIdea(int index, const std::string &idea) { if (index >= 0 && index < 100) ideas[index] = idea; -} +} void Brain::fillRandomIdeas() { - for (size_t i = 0; i < ideas.size(); ++i) + for (size_t i = 0; i < MAX_IDEAS; ++i) ideas[i] = "Random idea " + std::to_string(i); } @@ -60,22 +63,22 @@ std::string Brain::getIdea(int index) const void Brain::clearIdeas() { - for (size_t i = 0; i < ideas.size(); ++i) + for (size_t i = 0; i < MAX_IDEAS; ++i) ideas[i] = ""; } void Brain::printIdeas() const { - for (size_t i = 0; i < ideas.size(); ++i) + for (size_t i = 0; i < MAX_IDEAS; ++i) { if (!ideas[i].empty()) printIdea(i); } -} +} void Brain::printIdea(int index) const { if (index >= 0 && index < 100) - std::cout << "Idea " << index << ": " << ideas[index] << std::endl; + std::cout << BACKGROUND9 << BOLD << "Brain" << RESET << " Idea: " << index << ": " << ideas[index] << std::endl; } diff --git a/ex01/src/Cat.cpp b/ex01/src/Cat.cpp index 785a4f5..69043d0 100644 --- a/ex01/src/Cat.cpp +++ b/ex01/src/Cat.cpp @@ -6,41 +6,44 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:05:34 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 14:53:20 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ +#include "Animal.hpp" #include "Cat.hpp" #include "Brain.hpp" +#include "colors.h" #include #include Cat::Cat() : Animal(), brain(new Brain()) { type = "Cat"; - std::cout << "Cat default constructor called" << std::endl; -} -Cat::Cat(const Cat &cat) : Animal(cat), brain(new Brain(*cat.brain)) -{ - std::cout << "Cat copy constructor called" << std::endl; + brain->fillRandomIdeas(); + brain->setIdea(0, "I am a cat"); + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " default constructor called" << std::endl; +} +Cat::Cat(const Cat &other) : Animal(other), brain(new Brain(*other.brain)) +{ + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " copy constructor called" << std::endl; } - Cat::~Cat() { + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " destructor called" << std::endl; delete brain; - std::cout << "Cat destructor called" << std::endl; } -Cat &Cat::operator=(const Cat &cat) +Cat &Cat::operator=(const Cat &other) { - std::cout << "Cat assignment operator called" << std::endl; - if (this == &cat) + std::cout << BACKGROUND10 << BOLD << "Cat" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; + type = other.type; + delete brain; - brain = new Brain(*cat.brain); - - type = cat.type; - + brain = new Brain(*other.brain); + return *this; } @@ -48,3 +51,8 @@ void Cat::makeSound(void) const { std::cout << "Meow" << std::endl; } + +Brain &Cat::getBrain() +{ + return *brain; +} \ No newline at end of file diff --git a/ex01/src/Dog.cpp b/ex01/src/Dog.cpp index 885c3ac..d2fe648 100644 --- a/ex01/src/Dog.cpp +++ b/ex01/src/Dog.cpp @@ -6,38 +6,53 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:06:12 by whaffman #+# #+# */ -/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 15:04:24 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ +#include "Animal.hpp" #include "Dog.hpp" +#include "Brain.hpp" #include #include +#include "colors.h" -Dog::Dog() +Dog::Dog() : Animal(), brain(new Brain()) { - this->type = "Dog"; - std::cout << "Dog default constructor called" << std::endl; + type = "Dog"; + brain->fillRandomIdeas(); + brain->setIdea(0, "I am a Dog"); + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " default constructor called" << std::endl; } -Dog::Dog(const Dog &dog) : Animal(dog) +Dog::Dog(const Dog &other) : Animal(other), brain(new Brain(*other.brain)) { - this->type = dog.type; - std::cout << "Dog copy constructor called" << std::endl; + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " copy constructor called" << std::endl; } Dog::~Dog() { - std::cout << "Dog destructor called" << std::endl; + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " destructor called" << std::endl; + delete brain; } -Dog &Dog::operator=(const Dog &dog) +Dog &Dog::operator=(const Dog &other) { - std::cout << "Dog assignment operator called" << std::endl; - if (this == &dog) + std::cout << BACKGROUND11 << BOLD << "Dog" << RESET << " assignment operator called" << std::endl; + if (this == &other) return *this; - - type = dog.type; + + type = other.type; + + delete brain; + brain = new Brain(*other.brain); + return *this; } + void Dog::makeSound(void) const { std::cout << "Woof" << std::endl; } + +Brain &Dog::getBrain() +{ + return *brain; +} \ No newline at end of file diff --git a/ex01/src/main.cpp b/ex01/src/main.cpp index 6429340..bcd693b 100644 --- a/ex01/src/main.cpp +++ b/ex01/src/main.cpp @@ -6,55 +6,99 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/05 17:06:50 by whaffman #+# #+# */ -/* Updated: 2025/04/05 18:01:13 by whaffman ######## odam.nl */ +/* Updated: 2025/04/14 15:00:42 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "Animal.hpp" #include "Dog.hpp" #include "Cat.hpp" +#include "colors.h" #include int main(void) { - std::cout << "Construct Animal, Cat and Dog" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "construct an animal:" << std::endl; - const Animal* animal = new Animal(); - std::cout << "construct a cat:" << std::endl; - const Animal* cat = new Cat(); - std::cout << "construct a dog:" << std::endl; - const Animal* dog = new Dog(); - std::cout << "========================================" << std::endl << std::endl; - std::cout << "test the getType function" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "animal is of type : " << animal->getType() << std::endl; - std::cout << "cat is of type : " << cat->getType() << std::endl; - std::cout << "dog is of type : " << dog->getType() << std::endl; - std::cout << "========================================" << std::endl << std::endl; - - std::cout << "test the makeSound function" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "animal sound : "; - animal->makeSound(); + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating an array of 10 Animals..." << RESET << std::endl; + Animal *animals[10]; + for (int i = 0; i < 10; ++i) + { + std::cout << BOLD_UNDERLINE << COLOR10 << "Create animal " << i << RESET << std::endl; + if (i % 2 == 0) + animals[i] = new Dog(); + else + animals[i] = new Cat(); + std::cout << std::endl; + } + + for (int i = 0; i < 10; ++i) + { + std::cout << BOLD_UNDERLINE << COLOR10 << "Deconstruct " << i << ": Bye bye " << animals[i]->getType() << RESET << std::endl; + animals[i]->makeSound(); + delete animals[i]; + std::cout << std::endl; + } + + std::cout << BOLD_UNDERLINE << COLOR1 << "Test Brain, copy constructor and copy assignment operator" << RESET << std::endl; + + + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating a Dog1..." << RESET << std::endl; + Dog dog1; std::cout << std::endl; - std::cout << "cat sound : "; - cat->makeSound(); - std::cout << "dog sound : "; - dog->makeSound(); - std::cout << "========================================" << std::endl << std::endl; - std::cout << "test the destructor" << std::endl; - std::cout << "----------------------------------------" << std::endl; - std::cout << "delete animal:" << std::endl; - delete animal; - std::cout << "delete cat:" << std::endl; - delete cat; - std::cout << "delete dog:" << std::endl; - delete dog; - std::cout << "========================================" << std::endl << std::endl; - + + std::cout << BOLD_UNDERLINE << COLOR10 << "Dog1 brain ideas:" << RESET << std::endl; + dog1.getBrain().printIdeas(); + dog1.getBrain().setIdea(0, "I am a dog, I am a dog"); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating a Dog2 with copy constructor..." << RESET << std::endl; + Dog dog2(dog1); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Dog2 brain ideas:" << RESET << std::endl; + dog2.getBrain().printIdeas(); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating a Dog3 with assignment operator..." << RESET << std::endl; + Dog dog3; + dog3 = dog1; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Dog3 brain ideas:" << RESET << std::endl; + dog3.getBrain().printIdeas(); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR1 << "Test Cat, copy constructor and copy assignment operator" << RESET << std::endl; + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating a Cat1..." << RESET << std::endl; + Cat cat1; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Cat1 brain ideas:" << RESET << std::endl; + cat1.getBrain().printIdeas(); + cat1.getBrain().setIdea(0, "I am a cat, I am a cat"); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating a Cat2 with copy constructor..." << RESET << std::endl; + Cat cat2(cat1); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Cat2 brain ideas:" << RESET << std::endl; + cat2.getBrain().printIdeas(); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Creating a Cat3 with assignment operator..." << RESET << std::endl; + Cat cat3; + cat3 = cat1; + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR10 << "Cat3 brain ideas:" << RESET << std::endl; + cat3.getBrain().printIdeas(); + std::cout << std::endl; + + std::cout << BOLD_UNDERLINE << COLOR1 << "Test destructor" << RESET << std::endl; + + return 0; } \ No newline at end of file