stack almost good
This commit is contained in:
@@ -71,7 +71,8 @@ void tests_map_equal_range();
|
||||
void tests_map_get_allocator();
|
||||
void tests_map_relational_operators();
|
||||
void tests_map_swap_non_member();
|
||||
|
||||
// stack
|
||||
void tests_stack_constructor();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
22
tests/includes/tests_mutant_stack.hpp
Normal file
22
tests/includes/tests_mutant_stack.hpp
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
#ifndef TESTS_MUTANT_STACK_HPP
|
||||
# define TESTS_MUTANT_STACK_HPP
|
||||
|
||||
#include <stack>
|
||||
|
||||
template <typename T>
|
||||
class MutantStack : public std::stack<T> {
|
||||
|
||||
public:
|
||||
|
||||
typedef typename std::stack<T>::container_type::iterator iterator;
|
||||
typedef typename std::stack<T>::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
|
||||
|
||||
@@ -10,17 +10,20 @@
|
||||
#include <iterator> // std::reverse_iterator
|
||||
#include <utility> // std::make_pair
|
||||
#include <sstream> // std::stringstream
|
||||
#include <deque>
|
||||
|
||||
|
||||
// toogle between test ft and stl
|
||||
// *************************
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <stack>
|
||||
#ifdef STL
|
||||
namespace ft = std;
|
||||
#else
|
||||
#include "vector.hpp"
|
||||
#include "map.hpp"
|
||||
#include "stack.hpp"
|
||||
#include "reverse_iterator.hpp"
|
||||
#endif
|
||||
|
||||
@@ -66,15 +69,18 @@ extern std::vector< mystruct* > mem_list;
|
||||
|
||||
// adding each test to the list
|
||||
// ***************************
|
||||
#define TEST(f_name) TEST_V(f_name)
|
||||
/*
|
||||
add_to_list(#f_name, "char", new(s_ ## f_name <char>));\
|
||||
add_to_list(#f_name, "std::string", new(s_ ## f_name <std::string>));\
|
||||
add_to_list(#f_name, "mystruct*", new(s_ ## f_name <mystruct*>));\
|
||||
*/
|
||||
#define TEST_V(f_name) \
|
||||
template <class T> struct s_ ## f_name : public A_test\
|
||||
{ void func(); };\
|
||||
void f_name () {\
|
||||
add_to_list("", "", NULL);\
|
||||
add_to_list(#f_name, "int", new(s_ ## f_name <int>));\
|
||||
add_to_list(#f_name, "char", new(s_ ## f_name <char>));\
|
||||
add_to_list(#f_name, "std::string", new(s_ ## f_name <std::string>));\
|
||||
add_to_list(#f_name, "mystruct*", new(s_ ## f_name <mystruct*>));\
|
||||
}\
|
||||
template <class T>\
|
||||
void s_ ## f_name <T>::func()
|
||||
@@ -84,13 +90,6 @@ extern std::vector< mystruct* > mem_list;
|
||||
{ void func(); };\
|
||||
void f_name () {\
|
||||
add_to_list("", "", NULL);\
|
||||
add_to_list(#f_name, "char, mystruct*", new(s_ ## f_name <char, mystruct*>));\
|
||||
add_to_list(#f_name, "int, mystruct*", new(s_ ## f_name <int, mystruct*>));\
|
||||
}\
|
||||
template <class T, class U>\
|
||||
void s_ ## f_name <T, U>::func()
|
||||
|
||||
/*
|
||||
add_to_list(#f_name, "char, int", new(s_ ## f_name <char, int>));\
|
||||
add_to_list(#f_name, "char, char", new(s_ ## f_name <char, char>));\
|
||||
add_to_list(#f_name, "char, std::string", new(s_ ## f_name <char, std::string>));\
|
||||
@@ -99,12 +98,17 @@ extern std::vector< mystruct* > mem_list;
|
||||
add_to_list(#f_name, "int, char", new(s_ ## f_name <int, char>));\
|
||||
add_to_list(#f_name, "int, std::string", new(s_ ## f_name <int, std::string>));\
|
||||
add_to_list(#f_name, "int, mystruct*", new(s_ ## f_name <int, mystruct*>));\
|
||||
}\
|
||||
template <class T, class U>\
|
||||
void s_ ## f_name <T, U>::func()
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
// templates print
|
||||
// *****************************************
|
||||
template <class T>
|
||||
void print(ft::vector<T> vec, std::string name) {
|
||||
void print(ft::vector<T>& vec, std::string name) {
|
||||
|
||||
int i = 0;
|
||||
typename ft::vector<T>::iterator it;
|
||||
@@ -116,7 +120,7 @@ template <class T>
|
||||
std::cout << "\nsize:" << vec.size() << " capacty:" << vec.capacity() << "\n";
|
||||
}
|
||||
template <class T, class U>
|
||||
void print(ft::map<T, U> mp, std::string name) {
|
||||
void print(ft::map<T, U>& mp, std::string name) {
|
||||
|
||||
int i = 0;
|
||||
typename ft::map<T, U>::iterator it;
|
||||
@@ -127,6 +131,14 @@ template <class T, class U>
|
||||
std::cout << "[" << i << "]" << it->first << ":" << it->second << " ";
|
||||
std::cout << "\nsize:" << mp.size() << "\n";
|
||||
}
|
||||
template <class T, class cont>
|
||||
void print(ft::stack<T,cont>& st, std::string name) {
|
||||
|
||||
std::cout << "\n" << name << ":(map)\n";
|
||||
for (int i = st.size(); i > 0 ; i--, st.pop())
|
||||
std::cout << "[" << i << "]" << st.top() << " ";
|
||||
std::cout << "\nsize:" << st.size() << "\n";
|
||||
}
|
||||
|
||||
// templates get value
|
||||
// *************************************
|
||||
|
||||
Reference in New Issue
Block a user