cpp04/ex01/Main.cpp

81 lines
3.1 KiB
C++

# include "Animal.hpp"
# include "WrongAnimal.hpp"
# include "Dog.hpp"
# include "Cat.hpp"
# include "WrongCat.hpp"
int main()
{
std::cout << "========== TEST 1: Array of 10 Animals ==========" << std::endl;
{
const int size = 10;
Animal* animals[size];
int i = 0;
while (i < size)
{
if (i % 2 == 0)
animals[i] = new Dog();
else
animals[i] = new Cat();
i++;
}
std::cout << "\n--- Making sounds ---" << std::endl;
i = 0;
while (i < size)
{
std::cout << "Animal " << i << " (" << animals[i]->getType() << "): ";
animals[i]->makeSound();
i++;
}
std::cout << "\n--- Deleting animals ---" << std::endl;
i = 0;
while (i < size)
{
delete animals[i];
i++;
}
}
std::cout << "\n========== TEST 2: Get Ideas from Brain ==========" << std::endl;
{
Dog dog;
Cat cat;
std::cout << "\n--- Dog ideas ---" << std::endl;
std::cout << "Idea 0: " << dog.getIdea(0) << std::endl;
std::cout << "Idea 42: " << dog.getIdea(42) << std::endl;
std::cout << "Idea 99: " << dog.getIdea(99) << std::endl;
std::cout << "\n--- Cat ideas ---" << std::endl;
std::cout << "Idea 5: " << cat.getIdea(5) << std::endl;
std::cout << "Idea 50: " << cat.getIdea(50) << std::endl;
std::cout << "Idea 98: " << cat.getIdea(98) << std::endl;
std::cout << "\n========== Index Out of Range ==========\n" << std::endl;
std::cout << "Trying to access idea 100: " << dog.getIdea(100) << std::endl;
std::cout << "Trying to access idea 150: " << dog.getIdea(150) << std::endl;
std::cout << "Trying to access idea -1: " << dog.getIdea(-1) << std::endl;
}
std::cout << "\n========== TEST 4: Deep Copy Test ==========" << std::endl;
{
std::cout << "--- Creating original dog ---" << std::endl;
Dog* original = new Dog();
original->setIdea(10, "idee test");
std::cout << "\nOriginal dog idea 10: " << original->getIdea(10) << std::endl;
std::cout << "\n--- Creating copy ---" << std::endl;
Dog* copy = new Dog(*original);
std::cout << "\nCopy dog idea 10: " << copy->getIdea(10) << std::endl;
std::cout << "\n--- Modifying original's idea ---" << std::endl;
original->setIdea(10, "Modified idea in original");
std::cout << "\nOriginal dog idea 10 after modification: " << original->getIdea(10) << std::endl;
std::cout << "Copy dog idea 10 (should be unchanged): " << copy->getIdea(10) << std::endl;
std::cout << "\n--- Deleting original ---" << std::endl;
delete original;
std::cout << "\n--- Copy still works after original deleted ---" << std::endl;
std::cout << "Copy dog idea 10: " << copy->getIdea(10) << std::endl;
copy->makeSound();
std::cout << "\n--- Deleting copy ---" << std::endl;
delete copy;
}
return 0;
}