From 3e519524c118651123eecf60c2bbc5d65ad9bac3 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Tue, 11 May 2010 19:42:16 +0000 Subject: libcxx initial import llvm-svn: 103490 --- .../alg.transform/binary_transform.pass.cpp | 217 +++++++++++++++++++++ .../alg.transform/unary_transform.pass.cpp | 77 ++++++++ 2 files changed, 294 insertions(+) create mode 100644 libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp create mode 100644 libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp (limited to 'libcxx/test/algorithms/alg.modifying.operations/alg.transform') diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp new file mode 100644 index 00000000000..7623edc6b99 --- /dev/null +++ b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp @@ -0,0 +1,217 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template BinaryOp> +// requires OutputIterator && CopyConstructible +// OutIter +// transform(InIter1 first1, InIter1 last1, InIter2 first2, OutIter result, BinaryOp binary_op); + +#include +#include +#include + +#include "../../iterators.h" + +template +void +test() +{ + int ia[] = {0, 1, 2, 3, 4}; + const unsigned sa = sizeof(ia)/sizeof(ia[0]); + int ib[sa] = {1, 2, 3, 4, 5}; + OutIter r = std::transform(InIter1(ib), InIter1(ib+sa), InIter2(ia), + OutIter(ib), std::minus()); + assert(base(r) == ib + sa); + assert(ib[0] == 1); + assert(ib[1] == 1); + assert(ib[2] == 1); + assert(ib[3] == 1); + assert(ib[4] == 1); +} + +int main() +{ + test, input_iterator, output_iterator >(); + test, input_iterator, input_iterator >(); + test, input_iterator, forward_iterator >(); + test, input_iterator, bidirectional_iterator >(); + test, input_iterator, random_access_iterator >(); + test, input_iterator, int*>(); + + test, forward_iterator, output_iterator >(); + test, forward_iterator, input_iterator >(); + test, forward_iterator, forward_iterator >(); + test, forward_iterator, bidirectional_iterator >(); + test, forward_iterator, random_access_iterator >(); + test, forward_iterator, int*>(); + + test, bidirectional_iterator, output_iterator >(); + test, bidirectional_iterator, input_iterator >(); + test, bidirectional_iterator, forward_iterator >(); + test, bidirectional_iterator, bidirectional_iterator >(); + test, bidirectional_iterator, random_access_iterator >(); + test, bidirectional_iterator, int*>(); + + test, random_access_iterator, output_iterator >(); + test, random_access_iterator, input_iterator >(); + test, random_access_iterator, forward_iterator >(); + test, random_access_iterator, bidirectional_iterator >(); + test, random_access_iterator, random_access_iterator >(); + test, random_access_iterator, int*>(); + + test, const int*, output_iterator >(); + test, const int*, input_iterator >(); + test, const int*, forward_iterator >(); + test, const int*, bidirectional_iterator >(); + test, const int*, random_access_iterator >(); + test, const int*, int*>(); + + test, input_iterator, output_iterator >(); + test, input_iterator, input_iterator >(); + test, input_iterator, forward_iterator >(); + test, input_iterator, bidirectional_iterator >(); + test, input_iterator, random_access_iterator >(); + test, input_iterator, int*>(); + + test, forward_iterator, output_iterator >(); + test, forward_iterator, input_iterator >(); + test, forward_iterator, forward_iterator >(); + test, forward_iterator, bidirectional_iterator >(); + test, forward_iterator, random_access_iterator >(); + test, forward_iterator, int*>(); + + test, bidirectional_iterator, output_iterator >(); + test, bidirectional_iterator, input_iterator >(); + test, bidirectional_iterator, forward_iterator >(); + test, bidirectional_iterator, bidirectional_iterator >(); + test, bidirectional_iterator, random_access_iterator >(); + test, bidirectional_iterator, int*>(); + + test, random_access_iterator, output_iterator >(); + test, random_access_iterator, input_iterator >(); + test, random_access_iterator, forward_iterator >(); + test, random_access_iterator, bidirectional_iterator >(); + test, random_access_iterator, random_access_iterator >(); + test, random_access_iterator, int*>(); + + test, const int*, output_iterator >(); + test, const int*, input_iterator >(); + test, const int*, forward_iterator >(); + test, const int*, bidirectional_iterator >(); + test, const int*, random_access_iterator >(); + test, const int*, int*>(); + + test, input_iterator, output_iterator >(); + test, input_iterator, input_iterator >(); + test, input_iterator, forward_iterator >(); + test, input_iterator, bidirectional_iterator >(); + test, input_iterator, random_access_iterator >(); + test, input_iterator, int*>(); + + test, forward_iterator, output_iterator >(); + test, forward_iterator, input_iterator >(); + test, forward_iterator, forward_iterator >(); + test, forward_iterator, bidirectional_iterator >(); + test, forward_iterator, random_access_iterator >(); + test, forward_iterator, int*>(); + + test, bidirectional_iterator, output_iterator >(); + test, bidirectional_iterator, input_iterator >(); + test, bidirectional_iterator, forward_iterator >(); + test, bidirectional_iterator, bidirectional_iterator >(); + test, bidirectional_iterator, random_access_iterator >(); + test, bidirectional_iterator, int*>(); + + test, random_access_iterator, output_iterator >(); + test, random_access_iterator, input_iterator >(); + test, random_access_iterator, forward_iterator >(); + test, random_access_iterator, bidirectional_iterator >(); + test, random_access_iterator, random_access_iterator >(); + test, random_access_iterator, int*>(); + + test, const int*, output_iterator >(); + test, const int*, input_iterator >(); + test, const int*, forward_iterator >(); + test, const int*, bidirectional_iterator >(); + test, const int*, random_access_iterator >(); + test, const int*, int*>(); + + test, input_iterator, output_iterator >(); + test, input_iterator, input_iterator >(); + test, input_iterator, forward_iterator >(); + test, input_iterator, bidirectional_iterator >(); + test, input_iterator, random_access_iterator >(); + test, input_iterator, int*>(); + + test, forward_iterator, output_iterator >(); + test, forward_iterator, input_iterator >(); + test, forward_iterator, forward_iterator >(); + test, forward_iterator, bidirectional_iterator >(); + test, forward_iterator, random_access_iterator >(); + test, forward_iterator, int*>(); + + test, bidirectional_iterator, output_iterator >(); + test, bidirectional_iterator, input_iterator >(); + test, bidirectional_iterator, forward_iterator >(); + test, bidirectional_iterator, bidirectional_iterator >(); + test, bidirectional_iterator, random_access_iterator >(); + test, bidirectional_iterator, int*>(); + + test, random_access_iterator, output_iterator >(); + test, random_access_iterator, input_iterator >(); + test, random_access_iterator, forward_iterator >(); + test, random_access_iterator, bidirectional_iterator >(); + test, random_access_iterator, random_access_iterator >(); + test, random_access_iterator, int*>(); + + test, const int*, output_iterator >(); + test, const int*, input_iterator >(); + test, const int*, forward_iterator >(); + test, const int*, bidirectional_iterator >(); + test, const int*, random_access_iterator >(); + test, const int*, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test >(); + test >(); + test >(); + test >(); + test >(); + test(); +} diff --git a/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp new file mode 100644 index 00000000000..6300eb905f4 --- /dev/null +++ b/libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template Op> +// requires OutputIterator && CopyConstructible +// OutIter +// transform(InIter first, InIter last, OutIter result, Op op); + +#include +#include +#include + +#include "../../iterators.h" + +template +void +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(), 1)); + assert(base(r) == ib + sa); + assert(ib[0] == 1); + assert(ib[1] == 2); + assert(ib[2] == 3); + assert(ib[3] == 4); + assert(ib[4] == 5); +} + +int main() +{ + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test, output_iterator >(); + test, input_iterator >(); + test, forward_iterator >(); + test, bidirectional_iterator >(); + test, random_access_iterator >(); + test, int*>(); + + test >(); + test >(); + test >(); + test >(); + test >(); + test(); +} -- cgit v1.2.3