81 lines
3.1 KiB
C++
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;
|
|
} |