From 58a7fccc4958bed709cd723fbe091c7923aa11c6 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Sat, 19 Mar 2022 21:39:58 +0100 Subject: [PATCH] d08 ajouts de tests et reparation ex02 --- d08/ex00/easyfind | Bin 127224 -> 0 bytes d08/ex01/Span.cpp | 10 +--- d08/ex01/Span.hpp | 2 +- d08/ex01/main.cpp | 1 + d08/ex02/Makefile | 5 +- d08/ex02/MutantStack.hpp | 20 ++++---- d08/ex02/main.cpp | 98 ++++++++++++++++++++++++++++++++++++++- 7 files changed, 113 insertions(+), 23 deletions(-) delete mode 100755 d08/ex00/easyfind diff --git a/d08/ex00/easyfind b/d08/ex00/easyfind deleted file mode 100755 index c5468ea5e65745193c14399b4267bfc7b7824295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127224 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 diff --git a/d08/ex01/Span.cpp b/d08/ex01/Span.cpp index 28a564b..3f32821 100644 --- a/d08/ex01/Span.cpp +++ b/d08/ex01/Span.cpp @@ -68,7 +68,7 @@ bool Span::empty() const { * PUBLIC MEMBER FUNCTIONS *********************************************/ -void Span::addNumber(int nb) { +void Span::addNumber(int nb) { if (_container.size() >= _max) throw std::out_of_range(B_RED "out of range number" RESET); _container.push_back(nb); @@ -98,8 +98,6 @@ void Span::addNumber(InputIterator first, InputIterator last) { } template void Span::addNumber(int*, int*); - - unsigned int Span::shortestSpan() { int const size = _container.size(); unsigned int shortest = longestSpan(); @@ -123,9 +121,3 @@ unsigned int Span::longestSpan() { return (_sort.back() - _sort.front()); } -/********************************************* - * NESTED CLASS - *********************************************/ - -//void Span::Class::function() {} - diff --git a/d08/ex01/Span.hpp b/d08/ex01/Span.hpp index b6de956..0a090ac 100644 --- a/d08/ex01/Span.hpp +++ b/d08/ex01/Span.hpp @@ -17,9 +17,9 @@ public: Span & operator=( Span const & rhs ); void addNumber(int nb); -// void addNumber(int * arr, unsigned int size); template void addNumber(InputIterator first, InputIterator last); +// void addNumber(int * arr, unsigned int size); unsigned int shortestSpan(); unsigned int longestSpan(); diff --git a/d08/ex01/main.cpp b/d08/ex01/main.cpp index d3b6abd..47bb891 100644 --- a/d08/ex01/main.cpp +++ b/d08/ex01/main.cpp @@ -1,6 +1,7 @@ #include #include #include "colors.h" +#include // rand #include "Span.hpp" diff --git a/d08/ex02/Makefile b/d08/ex02/Makefile index 1715a65..32e28a8 100644 --- a/d08/ex02/Makefile +++ b/d08/ex02/Makefile @@ -32,9 +32,8 @@ D_SRCS = . SRCS = main.cpp D_HEADERS = . -HEADERS = -#HEADERS = colors.h \ -# MutantStack.hpp +HEADERS = colors.h \ + MutantStack.hpp D_OBJS = builds OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) diff --git a/d08/ex02/MutantStack.hpp b/d08/ex02/MutantStack.hpp index e0c2eaf..201dae8 100644 --- a/d08/ex02/MutantStack.hpp +++ b/d08/ex02/MutantStack.hpp @@ -7,22 +7,24 @@ template class MutantStack : public std::stack { public: + /* typedef T * iterator; typedef T const * const_iterator; iterator begin() {return (&this->top() - (this->size() - 1));} - iterator end() {return (&this->top()+ 1);} + iterator end() {return (&this->top() + 1);} + const_iterator begin() const {return (&this->top() - (this->size() - 1));} - const_iterator end() const {return (&this->top()+ 1);} + const_iterator end() const {return (&this->top() + 1);} + */ -// typedef typename std::stack::container_type::iterator iterator; -// typedef typename std::stack::container_type::const_iterator const_iterator; - -// iterator begin() {return this->c.begin();} -// iterator end() {return this->c.end();} -// const_iterator begin() const {return this->c.begin();} -// const_iterator end() const {return this->c.end();} + typedef typename std::stack::container_type::iterator iterator; + typedef typename std::stack::container_type::const_iterator const_iterator; + iterator begin() {return this->c.begin();} + iterator end() {return this->c.end();} + const_iterator begin() const {return this->c.begin();} + const_iterator end() const {return this->c.end();} }; #endif diff --git a/d08/ex02/main.cpp b/d08/ex02/main.cpp index fcaae06..e089785 100644 --- a/d08/ex02/main.cpp +++ b/d08/ex02/main.cpp @@ -1,11 +1,13 @@ #include #include "colors.h" #include "MutantStack.hpp" +#include // rand -#define N_TEST "2" +#define N_TEST "3" int main() { int i = 0; + srand(time(NULL)); std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " << "test simple iterator :" RESET "\n"; @@ -26,6 +28,100 @@ int main() { std::cout << *it << "\n"; } + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test stack size 128:" RESET "\n"; + { + MutantStack mstack; + + mstack.push(-42); + for (unsigned int i = 0; i < 126; i++) + mstack.push(rand() % 10000000000000); + mstack.push(42); + + MutantStack::iterator it = mstack.begin(); + MutantStack::iterator ite = mstack.end(); + + std::cout << "[ "; + for (; it != ite; it++) + std::cout << *it << " "; + std::cout << "]\n"; + + it = mstack.begin(); + ite = mstack.end(); + + std::cout << B_BLUE "firtst and last :" RESET "\n"; + std::cout << *it << " | " << *(ite - 1) << "\n\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test stack size 129:" RESET "\n"; + { + MutantStack mstack; + + mstack.push(-42); + for (unsigned int i = 0; i < 127; i++) + mstack.push(rand() % 10000000000000); + mstack.push(42); + + MutantStack::iterator it = mstack.begin(); + MutantStack::iterator ite = mstack.end(); + + std::cout << "[ "; + for (; it != ite; it++) + std::cout << *it << " "; + std::cout << "]\n"; + + it = mstack.begin(); + ite = mstack.end(); + + std::cout << B_BLUE "firtst and last :" RESET "\n"; + std::cout << *it << " | " << *(ite - 1) << "\n\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test stack size 10000:" RESET "\n"; + { + MutantStack mstack; + + mstack.push(-42); + for (unsigned int i = 0; i < 10000; i++) + mstack.push(rand() % 10000000000000); + mstack.push(42); + + MutantStack::iterator it = mstack.begin(); + MutantStack::iterator ite = mstack.end(); + + std::cout << "[ "; + for (; it != ite; it++) + std::cout << *it << " "; + std::cout << "]\n"; + + it = mstack.begin(); + ite = mstack.end(); + + std::cout << B_BLUE "firtst and last :" RESET "\n"; + std::cout << *it << " | " << *(ite - 1) << "\n\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "test const iterator :" RESET "\n"; + { + MutantStack mstack; + + mstack.push(7); + mstack.push(987); + mstack.push(9); + mstack.push(8); + mstack.push(34); + mstack.push(1); + + MutantStack::const_iterator it = mstack.begin(); + MutantStack::const_iterator ite = mstack.end(); + + for (; it != ite; it++) + std::cout << *it << "\n"; + } + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " << "tests subject :" RESET "\n"; {