diff --git a/tests/main.cpp b/tests/main.cpp index fb2fc49..ef91e8f 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -28,13 +28,13 @@ int main() { tests_vector_push_back(); tests_vector_pop_back(); tests_vector_insert(); -// tests_vector_erase(); -// tests_vector_swap(); -// tests_vector_clear(); -// tests_vector_get_allocator(); -// tests_vector_relational_operators(); -// tests_vector_swap_non_member(); -// tests_vector_reverse_iterators(); + tests_vector_erase(); + tests_vector_swap(); + tests_vector_clear(); + tests_vector_get_allocator(); + tests_vector_relational_operators(); + tests_vector_swap_non_member(); + tests_vector_reverse_iterators(); // MAP // tests_map_constructor(); diff --git a/tests/tests_vectors.cpp b/tests/tests_vectors.cpp index f624392..9576855 100644 --- a/tests/tests_vectors.cpp +++ b/tests/tests_vectors.cpp @@ -488,7 +488,6 @@ TEST(tests_vector_push_back) TITLE(big push back :) for (int i = 0; i < 72363; i++) -// for (int i = 0; i < 363; i++) { myvector.push_back(VAL(9)); std::cout << "[" << i @@ -616,324 +615,280 @@ TEST(tests_vector_insert) DELETE } -/* -void tests_vector_erase() +TEST(tests_vector_erase) { - TEST(vector::erase) - { - // title - TITLE(cplusplus.com reference :) + // title + TITLE(cplusplus.com reference :) - ft::vector myvector; + ft::vector myvector; - // set some values (from 1 to 10) - for (int i=1; i<=10; i++) myvector.push_back(i); + // set some values (from 1 to 10) + for (int i=1; i<=10; i++) myvector.push_back(VAL(i)); - // erase the 6th element - myvector.erase (myvector.begin()+5); + // erase the 6th element + myvector.erase (myvector.begin()+5); - // erase the first 3 elements: - myvector.erase (myvector.begin(),myvector.begin()+3); + // erase the first 3 elements: + myvector.erase (myvector.begin(),myvector.begin()+3); - std::cout << "myvector contains:"; - for (unsigned i=0; i vector2; - // title - TITLE(test iterator bigger or equal :) - ft::vector vector2; - int size; + for (int i=1; i<=100; i++) vector2.push_back(VAL(i)); + PRINT(vector2) - for (int i=1; i<=100; i++) vector2.push_back(i); - size = vector2.size(); - for (int i = 0; i < size; i++) - std::cout << "[" << i << "] " << vector2[i] << " "; - std::cout << "\nsize:" << size << " capacity:" << vector2.capacity() << "\n"; + std::cout << "\nerase pos(7,36) :\n"; + vector2.erase(vector2.begin() + 7, vector2.begin() + 36); + PRINT(vector2) - std::cout << "\nerase pos(7,36) :\n"; - vector2.erase(vector2.begin() + 7, vector2.begin() + 36); - size = vector2.size(); - for (int i = 0; i < size; i++) - std::cout << "[" << i << "] " << vector2[i] << " "; - std::cout << "\nsize:" << size << " capacity:" << vector2.capacity() << "\n"; + std::cout << "\nerase pos(46,54) :\n"; + vector2.erase(vector2.begin() + 46, vector2.begin() + 54); + PRINT(vector2) - std::cout << "\nerase pos(46,54) :\n"; - vector2.erase(vector2.begin() + 46, vector2.begin() + 54); - size = vector2.size(); - for (int i = 0; i < size; i++) - std::cout << "[" << i << "] " << vector2[i] << " "; - std::cout << "\nsize:" << size << " capacity:" << vector2.capacity() << "\n"; + std::cout << "\nerase pos(7,7) :\n"; + vector2.erase(vector2.begin() + 7, vector2.begin() + 7); + PRINT(vector2) - std::cout << "\nerase pos(7,7) :\n"; - vector2.erase(vector2.begin() + 7, vector2.begin() + 7); - size = vector2.size(); - for (int i = 0; i < size; i++) - std::cout << "[" << i << "] " << vector2[i] << " "; - std::cout << "\nsize:" << size << " capacity:" << vector2.capacity() << "\n"; - } - TESTEND + DELETE } -void tests_vector_swap() +TEST(tests_vector_swap) { - TEST(vector::swap) - { - // title - TITLE(cplusplus.com reference :) + // title + TITLE(cplusplus.com reference :) - ft::vector foo (3,100); // three ints with a value of 100 - ft::vector bar (5,200); // five ints with a value of 200 + ft::vector foo (3,VAL(100)); // three ints with a value of 100 + ft::vector bar (5,VAL(200)); // five ints with a value of 200 - foo.swap(bar); + foo.swap(bar); - std::cout << "foo contains:"; - for (unsigned i=0; i myvector; - myvector.push_back (100); - myvector.push_back (200); - myvector.push_back (300); + ft::vector myvector; + myvector.push_back (VAL(100)); + myvector.push_back (VAL(200)); + myvector.push_back (VAL(300)); - std::cout << "myvector contains:"; - for (unsigned i=0; i myvector; - int * p; - unsigned int i; + ft::vector myvector; + T * p; + unsigned int i; - // allocate an array with space for 5 elements using vector's allocator: - p = myvector.get_allocator().allocate(5); + // allocate an array with space for 5 elements using vector's allocator: + p = myvector.get_allocator().allocate(5); - // construct values in-place on the array: - for (i=0; i<5; i++) myvector.get_allocator().construct(&p[i],i); + // construct values in-place on the array: + for (i=0; i<5; i++) myvector.get_allocator().construct(&p[i],VAL(i)); - std::cout << "The allocated array contains:"; - for (i=0; i<5; i++) std::cout << ' ' << p[i]; - std::cout << '\n'; + std::cout << "The allocated array contains:"; + for (i=0; i<5; i++) std::cout << ' ' << p[i]; + std::cout << '\n'; - // destroy and deallocate: - for (i=0; i<5; i++) myvector.get_allocator().destroy(&p[i]); - myvector.get_allocator().deallocate(p,5); - } - TESTEND + // destroy and deallocate: + for (i=0; i<5; i++) myvector.get_allocator().destroy(&p[i]); + myvector.get_allocator().deallocate(p,5); + + DELETE } -void tests_vector_relational_operators() +TEST(tests_vector_relational_operators) { - TEST(ft::relational operators) - { - // title - TITLE(cplusplus.com reference :) + // title + TITLE(cplusplus.com reference :) - ft::vector foo (3,100); // three ints with a value of 100 - ft::vector bar (2,200); // two ints with a value of 200 + ft::vector foo (3,VAL(100)); // three ints with a value of 100 + ft::vector bar (2,VAL(200)); // two ints with a value of 200 - if (foo==bar) std::cout << "foo and bar are equal\n"; - if (foo!=bar) std::cout << "foo and bar are not equal\n"; - if (foo< bar) std::cout << "foo is less than bar\n"; - if (foo> bar) std::cout << "foo is greater than bar\n"; - if (foo<=bar) std::cout << "foo is less than or equal to bar\n"; - if (foo>=bar) std::cout << "foo is greater than or equal to bar\n"; - } - TESTEND -} -void tests_vector_swap_non_member() -{ - TEST(ft::swap vector) - { - // title - TITLE(cplusplus.com reference :) + if (foo==bar) std::cout << "foo and bar are equal\n"; + if (foo!=bar) std::cout << "foo and bar are not equal\n"; + if (foo< bar) std::cout << "foo is less than bar\n"; + if (foo> bar) std::cout << "foo is greater than bar\n"; + if (foo<=bar) std::cout << "foo is less than or equal to bar\n"; + if (foo>=bar) std::cout << "foo is greater than or equal to bar\n"; - ft::vector foo (3,100); // three ints with a value of 100 - ft::vector bar (5,200); // five ints with a value of 200 - - foo.swap(bar); - - std::cout << "foo contains:"; - for (ft::vector::iterator it = foo.begin(); it!=foo.end(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - - std::cout << "bar contains:"; - for (ft::vector::iterator it = bar.begin(); it!=bar.end(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - } - TESTEND + DELETE } -void tests_vector_reverse_iterators() +TEST(tests_vector_swap_non_member) { - TEST(ft::reverse_iterator) - { - // title - TITLE(cplusplus.com reference) - TITLE(::constructor ::operator* ::operator++(int)) + // title + TITLE(cplusplus.com reference :) - ft::vector myvector; - for (int i=0; i<10; i++) myvector.push_back(i); - typedef ft::vector::iterator iter_type; - // ? 0 1 2 3 4 5 6 7 8 9 ? - iter_type from (myvector.begin()); // ^ - iter_type until (myvector.end()); // ^ - ft::reverse_iterator rev_until (from); // ^ - ft::reverse_iterator rev_from (until); // ^ - - std::cout << "myvector:"; - while (rev_from != rev_until) - std::cout << ' ' << *rev_from++; - std::cout << '\n'; - - - // title - TITLE(::operator++) - - std::cout << "myvector:"; - while (rev_from != rev_until) { - std::cout << ' ' << *rev_from; - ++rev_from; - } - std::cout << '\n'; - - - // title - TITLE(::base) - - ft::reverse_iterator rev_end (myvector.begin()); - ft::reverse_iterator rev_begin (myvector.end()); - std::cout << "myvector:"; - for (iter_type it = rev_end.base(); it != rev_begin.base(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - - - // title - TITLE(::operator+) - - ft::reverse_iterator rev_it_add; - rev_it_add = myvector.rbegin() +3; - std::cout << "The fourth element from the end is: " << *rev_it_add << '\n'; - - - // title - TITLE(::operator+=) - - ft::reverse_iterator rev_it_add_equal = myvector.rbegin(); - rev_it_add_equal += 2; - std::cout << "The third element from the end is: " << *rev_it_add_equal << '\n'; - - - // title - TITLE(::operator-) - - ft::reverse_iterator rev_it_minus; - rev_it_minus = myvector.rend() - 3; - std::cout << "myvector.rend()-3 points to: " << *rev_it_minus << '\n'; - - - // title - TITLE(::operator--) - - ft::reverse_iterator rev_it_minus_minus = rev_begin; - while ( rev_it_minus_minus != rev_end ) - std::cout << *rev_it_minus_minus++ << ' '; - std::cout << '\n'; + ft::vector foo (3,VAL(100)); // three ints with a value of 100 + ft::vector bar (5,VAL(200)); // five ints with a value of 200 - while ( rev_it_minus_minus != rev_begin ) - std::cout << *(--rev_it_minus_minus) << ' '; - std::cout << '\n'; + foo.swap(bar); + + std::cout << "foo contains:"; + PRINT(foo) + + std::cout << "bar contains:"; + PRINT(bar) - - // title - TITLE(::operator-=) - - ft::reverse_iterator rev_it_minus_equal = myvector.rend(); - rev_it_minus_equal -= 4; - std::cout << "rev_it_minus_equal now points to: " << *rev_it_minus_equal << '\n'; - - - // title - TITLE(::operator->) - - std::map numbers; - numbers.insert (std::make_pair(1,"one")); - numbers.insert (std::make_pair(2,"two")); - numbers.insert (std::make_pair(3,"three")); - - typedef std::map::iterator map_iter; - ft::reverse_iterator rev_map_end (numbers.begin()); - ft::reverse_iterator rev_map_ite (numbers.end()); - - for ( ; rev_map_ite != rev_map_end ; ++rev_map_ite ) - std::cout << rev_map_ite->first << ' ' << rev_map_ite->second << '\n'; - - - // title - TITLE(::operator[]) - - ft::reverse_iterator rev_it_at = myvector.rbegin(); - std::cout << "The fourth element from the end is: " << rev_it_at[3] << '\n'; - - - // title - TITLE(::operator- non-member) - - ft::reverse_iterator::iterator> rev_it_from,rev_it_until; - rev_it_from = myvector.rbegin(); - rev_it_until = myvector.rend(); - std::cout << "myvector has " << (rev_it_until-rev_it_from) << " elements.\n"; - - - // title - TITLE(::operator+ non-member) - - ft::reverse_iterator rev_it_n_memb; - rev_it_n_memb = 3 + myvector.rbegin(); - std::cout << "The fourth element from the end is: " << *rev_it_n_memb << '\n'; - - } - TESTEND + DELETE +} + +TEST(tests_vector_reverse_iterators) +{ + // title + TITLE(cplusplus.com reference) + TITLE(::constructor ::operator* ::operator++(val)) + + ft::vector myvector; + for (int i=0; i<10; i++) myvector.push_back(VAL(i)); + typedef typename ft::vector::iterator iter_type; + // ? 0 1 2 3 4 5 6 7 8 9 ? + iter_type from (myvector.begin()); // ^ + iter_type until (myvector.end()); // ^ + ft::reverse_iterator rev_until (from); // ^ + ft::reverse_iterator rev_from (until); // ^ + + std::cout << "myvector:"; + while (rev_from != rev_until) + std::cout << ' ' << *rev_from++; + std::cout << '\n'; + + + // title + TITLE(::operator++) + + std::cout << "myvector:"; + while (rev_from != rev_until) { + std::cout << ' ' << *rev_from; + ++rev_from; + } + std::cout << '\n'; + + + // title + TITLE(::base) + + ft::reverse_iterator rev_end (myvector.begin()); + ft::reverse_iterator rev_begin (myvector.end()); + std::cout << "myvector:"; + for (iter_type it = rev_end.base(); it != rev_begin.base(); ++it) + std::cout << ' ' << *it; + std::cout << '\n'; + + + // title + TITLE(::operator+) + + ft::reverse_iterator rev_it_add; + rev_it_add = myvector.rbegin() +3; + std::cout << "The fourth element from the end is: " << *rev_it_add << '\n'; + + + // title + TITLE(::operator+=) + + ft::reverse_iterator rev_it_add_equal = myvector.rbegin(); + rev_it_add_equal += 2; + std::cout << "The third element from the end is: " << *rev_it_add_equal << '\n'; + + + // title + TITLE(::operator-) + + ft::reverse_iterator rev_it_minus; + rev_it_minus = myvector.rend() - 3; + std::cout << "myvector.rend()-3 points to: " << *rev_it_minus << '\n'; + + + // title + TITLE(::operator--) + + ft::reverse_iterator rev_it_minus_minus = rev_begin; + while ( rev_it_minus_minus != rev_end ) + std::cout << *rev_it_minus_minus++ << ' '; + std::cout << '\n'; + + while ( rev_it_minus_minus != rev_begin ) + std::cout << *(--rev_it_minus_minus) << ' '; + std::cout << '\n'; + + + // title + TITLE(::operator-=) + + ft::reverse_iterator rev_it_minus_equal = myvector.rend(); + rev_it_minus_equal -= 4; + std::cout << "rev_it_minus_equal now points to: " << *rev_it_minus_equal << '\n'; + + + // title + TITLE(::operator->) + + std::map numbers; + numbers.insert (std::make_pair(1,"one")); + numbers.insert (std::make_pair(2,"two")); + numbers.insert (std::make_pair(3,"three")); + + typedef std::map::iterator map_iter; + ft::reverse_iterator rev_map_end (numbers.begin()); + ft::reverse_iterator rev_map_ite (numbers.end()); + + for ( ; rev_map_ite != rev_map_end ; ++rev_map_ite ) + std::cout << rev_map_ite->first << ' ' << rev_map_ite->second << '\n'; + + + // title + TITLE(::operator[]) + + ft::reverse_iterator rev_it_at = myvector.rbegin(); + std::cout << "The fourth element from the end is: " << rev_it_at[3] << '\n'; + + + // title + TITLE(::operator- non-member) + + ft::reverse_iterator::iterator> rev_it_from,rev_it_until; + rev_it_from = myvector.rbegin(); + rev_it_until = myvector.rend(); + std::cout << "myvector has " << (rev_it_until-rev_it_from) << " elements.\n"; + + + // title + TITLE(::operator+ non-member) + + ft::reverse_iterator rev_it_n_memb; + rev_it_n_memb = 3 + myvector.rbegin(); + std::cout << "The fourth element from the end is: " << *rev_it_n_memb << '\n'; + + DELETE } -*/ #endif