Update the algorithm tests to not use the (deprecated) function binders. No functional change.

llvm-svn: 298618
This commit is contained in:
Marshall Clow 2017-03-23 16:13:50 +00:00
parent c3e9c1442d
commit 315cd1fec9
7 changed files with 42 additions and 14 deletions

View File

@ -21,6 +21,8 @@
#include "test_iterators.h"
bool equalToTwo(int v) { return v == 2; }
template <class InIter, class OutIter>
void
test()
@ -28,8 +30,8 @@ test()
int ia[] = {0, 1, 2, 3, 4, 2, 3, 4, 2};
const unsigned sa = sizeof(ia)/sizeof(ia[0]);
int ib[sa];
OutIter r = std::remove_copy_if(InIter(ia), InIter(ia+sa), OutIter(ib),
std::bind2nd(std::equal_to<int>(), 2));
OutIter r = std::remove_copy_if(InIter(ia), InIter(ia+sa),
OutIter(ib), equalToTwo);
assert(base(r) == ib + sa-3);
assert(ib[0] == 0);
assert(ib[1] == 1);

View File

@ -23,6 +23,8 @@
#include "test_iterators.h"
bool equalToTwo(int v) { return v == 2; }
template <class InIter, class OutIter>
void
test()
@ -30,8 +32,8 @@ test()
int ia[] = {0, 1, 2, 3, 4};
const unsigned sa = sizeof(ia)/sizeof(ia[0]);
int ib[sa] = {0};
OutIter r = std::replace_copy_if(InIter(ia), InIter(ia+sa), OutIter(ib),
std::bind2nd(std::equal_to<int>(), 2), 5);
OutIter r = std::replace_copy_if(InIter(ia), InIter(ia+sa),
OutIter(ib), equalToTwo, 5);
assert(base(r) == ib + sa);
assert(ib[0] == 0);
assert(ib[1] == 1);

View File

@ -22,13 +22,15 @@
#include "test_iterators.h"
bool equalToTwo(int v) { return v == 2; }
template <class Iter>
void
test()
{
int ia[] = {0, 1, 2, 3, 4};
const unsigned sa = sizeof(ia)/sizeof(ia[0]);
std::replace_if(Iter(ia), Iter(ia+sa), std::bind2nd(std::equal_to<int>(), 2), 5);
std::replace_if(Iter(ia), Iter(ia+sa), equalToTwo, 5);
assert(ia[0] == 0);
assert(ia[1] == 1);
assert(ia[2] == 5);

View File

@ -21,6 +21,8 @@
#include "test_iterators.h"
int plusOne(int v) { return v + 1; }
template <class InIter, class OutIter>
void
test()
@ -28,8 +30,8 @@ test()
int ia[] = {0, 1, 2, 3, 4};
const unsigned sa = sizeof(ia)/sizeof(ia[0]);
int ib[sa] = {0};
OutIter r = std::transform(InIter(ia), InIter(ia+sa), OutIter(ib),
std::bind2nd(std::plus<int>(), 1));
OutIter r = std::transform(InIter(ia), InIter(ia+sa),
OutIter(ib), plusOne);
assert(base(r) == ib + sa);
assert(ib[0] == 1);
assert(ib[1] == 2);

View File

@ -20,17 +20,24 @@
#include "test_iterators.h"
struct eq {
eq (int val) : v(val) {}
bool operator () (int v2) const { return v == v2; }
int v;
};
int main()
{
int ia[] = {0, 1, 2, 2, 0, 1, 2, 3};
const unsigned sa = sizeof(ia)/sizeof(ia[0]);
assert(std::count_if(input_iterator<const int*>(ia),
input_iterator<const int*>(ia + sa),
std::bind2nd(std::equal_to<int>(),2)) == 3);
eq(2)) == 3);
assert(std::count_if(input_iterator<const int*>(ia),
input_iterator<const int*>(ia + sa),
std::bind2nd(std::equal_to<int>(),7)) == 0);
eq(7)) == 0);
assert(std::count_if(input_iterator<const int*>(ia),
input_iterator<const int*>(ia),
std::bind2nd(std::equal_to<int>(),2)) == 0);
eq(2)) == 0);
}

View File

@ -20,16 +20,22 @@
#include "test_iterators.h"
struct eq {
eq (int val) : v(val) {}
bool operator () (int v2) const { return v == v2; }
int v;
};
int main()
{
int ia[] = {0, 1, 2, 3, 4, 5};
const unsigned s = sizeof(ia)/sizeof(ia[0]);
input_iterator<const int*> r = std::find_if(input_iterator<const int*>(ia),
input_iterator<const int*>(ia+s),
std::bind2nd(std::equal_to<int>(), 3));
eq(3));
assert(*r == 3);
r = std::find_if(input_iterator<const int*>(ia),
input_iterator<const int*>(ia+s),
std::bind2nd(std::equal_to<int>(), 10));
eq(10));
assert(r == input_iterator<const int*>(ia+s));
}

View File

@ -20,16 +20,23 @@
#include "test_iterators.h"
struct ne {
ne (int val) : v(val) {}
bool operator () (int v2) const { return v != v2; }
int v;
};
int main()
{
int ia[] = {0, 1, 2, 3, 4, 5};
const unsigned s = sizeof(ia)/sizeof(ia[0]);
input_iterator<const int*> r = std::find_if_not(input_iterator<const int*>(ia),
input_iterator<const int*>(ia+s),
std::bind2nd(std::not_equal_to<int>(), 3));
ne(3));
assert(*r == 3);
r = std::find_if_not(input_iterator<const int*>(ia),
input_iterator<const int*>(ia+s),
std::bind2nd(std::not_equal_to<int>(), 10));
ne(10));
assert(r == input_iterator<const int*>(ia+s));
}