diff options
Diffstat (limited to 'libcxx/test/std/algorithms')
5 files changed, 30 insertions, 11 deletions
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp index f594a0bf618..1dba8847c7e 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp @@ -17,6 +17,9 @@ #include <cassert> #include "test_iterators.h" +#include "user_defined_integral.hpp" + +typedef UserDefinedIntegral<unsigned> UDI; template <class InIter, class OutIter> void @@ -28,7 +31,7 @@ test() ia[i] = i; int ib[N] = {0}; - OutIter r = std::copy_n(InIter(ia), N/2, OutIter(ib)); + OutIter r = std::copy_n(InIter(ia), UDI(N/2), OutIter(ib)); assert(base(r) == ib+N/2); for (unsigned i = 0; i < N/2; ++i) assert(ia[i] == ib[i]); diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp index bffcf1b63cb..6617cd0916f 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp @@ -18,6 +18,9 @@ #include <cassert> #include "test_iterators.h" +#include "user_defined_integral.hpp" + +typedef UserDefinedIntegral<unsigned> UDI; template <class Iter> void @@ -25,7 +28,7 @@ test_char() { const unsigned n = 4; char ca[n] = {0}; - assert(std::fill_n(Iter(ca), n, char(1)) == std::next(Iter(ca), n)); + assert(std::fill_n(Iter(ca), UDI(n), char(1)) == std::next(Iter(ca), n)); assert(ca[0] == 1); assert(ca[1] == 1); assert(ca[2] == 1); @@ -38,7 +41,7 @@ test_int() { const unsigned n = 4; int ia[n] = {0}; - assert(std::fill_n(Iter(ia), n, 1) == std::next(Iter(ia), n)); + assert(std::fill_n(Iter(ia), UDI(n), 1) == std::next(Iter(ia), n)); assert(ia[0] == 1); assert(ia[1] == 1); assert(ia[2] == 1); @@ -50,7 +53,7 @@ test_int_array() { const unsigned n = 4; int ia[n] = {0}; - assert(std::fill_n(ia, n, static_cast<char>(1)) == std::next(ia, n)); + assert(std::fill_n(ia, UDI(n), static_cast<char>(1)) == std::next(ia, n)); assert(ia[0] == 1); assert(ia[1] == 1); assert(ia[2] == 1); @@ -69,7 +72,7 @@ test_int_array_struct_source() { const unsigned n = 4; int ia[n] = {0}; - assert(std::fill_n(ia, n, source()) == std::next(ia, n)); + assert(std::fill_n(ia, UDI(n), source()) == std::next(ia, n)); assert(ia[0] == 0); assert(ia[1] == 1); assert(ia[2] == 2); @@ -87,7 +90,7 @@ test_struct_array() { const unsigned n = 4; test1 test1a[n] = {0}; - assert(std::fill_n(test1a, n, static_cast<char>(10)) == std::next(test1a, n)); + assert(std::fill_n(test1a, UDI(n), static_cast<char>(10)) == std::next(test1a, n)); assert(test1a[0].c == 11); assert(test1a[1].c == 11); assert(test1a[2].c == 11); @@ -110,7 +113,7 @@ void test5() { A a[3]; - assert(std::fill_n(&a[0], 3, A('a')) == a+3); + assert(std::fill_n(&a[0], UDI(3), A('a')) == a+3); assert(a[0] == A('a')); assert(a[1] == A('a')); assert(a[2] == A('a')); @@ -124,11 +127,11 @@ struct Storage unsigned char b; }; }; - + void test6() { Storage foo[5]; - std::fill_n(&foo[0], 5, Storage()); + std::fill_n(&foo[0], UDI(5), Storage()); } @@ -143,7 +146,7 @@ int main() test_int<bidirectional_iterator<int*> >(); test_int<random_access_iterator<int*> >(); test_int<int*>(); - + test_int_array(); test_int_array_struct_source(); test_struct_array(); diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp index 249419169a1..a9ccaf4cd95 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp @@ -19,6 +19,9 @@ #include <cassert> #include "test_iterators.h" +#include "user_defined_integral.hpp" + +typedef UserDefinedIntegral<unsigned> UDI; struct gen_test { @@ -31,7 +34,7 @@ test() { const unsigned n = 4; int ia[n] = {0}; - assert(std::generate_n(Iter(ia), n, gen_test()) == Iter(ia+n)); + assert(std::generate_n(Iter(ia), UDI(n), gen_test()) == Iter(ia+n)); assert(ia[0] == 2); assert(ia[1] == 2); assert(ia[2] == 2); diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp index b834da210d3..f7f8ee09279 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp @@ -18,6 +18,7 @@ #include <cassert> #include "test_iterators.h" +#include "user_defined_integral.hpp" template <class Iter> void @@ -63,6 +64,9 @@ test() assert(std::search_n(Iter(ic), Iter(ic+sc), 2, 0) == Iter(ic)); assert(std::search_n(Iter(ic), Iter(ic+sc), 3, 0) == Iter(ic)); assert(std::search_n(Iter(ic), Iter(ic+sc), 4, 0) == Iter(ic+sc)); + + // Check that we properly convert the size argument to an integral. + std::search_n(Iter(ic), Iter(ic+sc), UserDefinedIntegral<unsigned>(0), 0); } int main() diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp index 6004b0e0a81..8bc6f4d26bd 100644 --- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp +++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp @@ -18,6 +18,7 @@ #include <cassert> #include "test_iterators.h" +#include "user_defined_integral.hpp" struct count_equal { @@ -29,6 +30,7 @@ struct count_equal unsigned count_equal::count = 0; + template <class Iter> void test() @@ -138,6 +140,10 @@ test() assert(std::search_n(Iter(ic), Iter(ic+sc), 4, 0, count_equal()) == Iter(ic+sc)); assert(count_equal::count <= sc); count_equal::count = 0; + + // Check that we properly convert the size argument to an integral. + std::search_n(Iter(ic), Iter(ic+sc), UserDefinedIntegral<unsigned>(4), 0, count_equal()); + count_equal::count = 0; } int main() |