[libcxx] r305453 - Renamed some of the newly added tests. No functional change

Marshall Clow via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 14 22:44:49 PDT 2017


Author: marshall
Date: Thu Jun 15 00:44:49 2017
New Revision: 305453

URL: http://llvm.org/viewvc/llvm-project?rev=305453&view=rev
Log:
Renamed some of the newly added tests. No functional change

Added:
    libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan.pass.cpp
      - copied unchanged from r305452, libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_init_op.pass.cpp
      - copied unchanged from r305452, libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter_init_op.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce.pass.cpp
      - copied unchanged from r305452, libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_init.pass.cpp
      - copied unchanged from r305452, libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_init_op.pass.cpp
      - copied unchanged from r305452, libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T_op.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_init_bop_uop.pass.cpp
      - copied unchanged from r305452, libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_iter_iter_iter_init_bop_uop.pass.cpp
Removed:
    libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter_init_op.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T_op.pass.cpp
    libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_iter_iter_iter_init_bop_uop.pass.cpp

Removed: libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter.pass.cpp?rev=305452&view=auto
==============================================================================
--- libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter.pass.cpp (original)
+++ libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter.pass.cpp (removed)
@@ -1,97 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-
-// template<class InputIterator, class OutputIterator, class T>
-//     OutputIterator exclusive_scan(InputIterator first, InputIterator last,
-//                                   OutputIterator result, T init);
-// 
-
-#include <numeric>
-#include <vector>
-#include <cassert>
-
-#include "test_iterators.h"
-
-template <class Iter1, class T, class Iter2>
-void
-test(Iter1 first, Iter1 last, T init, Iter2 rFirst, Iter2 rLast)
-{
-    std::vector<typename std::iterator_traits<Iter1>::value_type> v;
-    
-//  Not in place
-    std::exclusive_scan(first, last, std::back_inserter(v), init);
-    assert(std::equal(v.begin(), v.end(), rFirst, rLast));
-
-//  In place
-    v.clear();
-    v.assign(first, last);
-    std::exclusive_scan(v.begin(), v.end(), v.begin(), init);
-    assert(std::equal(v.begin(), v.end(), rFirst, rLast));  
-}
-
-
-template <class Iter>
-void
-test()
-{
-          int ia[]   = {1, 3, 5, 7,  9};
-    const int pRes[] = {0, 1, 4, 9, 16};
-    const unsigned sa = sizeof(ia) / sizeof(ia[0]);
-    static_assert(sa == sizeof(pRes) / sizeof(pRes[0]));       // just to be sure
-
-    for (unsigned int i = 0; i < sa; ++i )
-        test(Iter(ia), Iter(ia + i), 0, pRes, pRes + i);
-}
-
-int triangle(int n) { return n*(n+1)/2; }
-
-//  Basic sanity
-void basic_tests()
-{
-    {
-    std::vector<int> v(10);
-    std::fill(v.begin(), v.end(), 3);
-    std::exclusive_scan(v.begin(), v.end(), v.begin(), 50);
-    for (size_t i = 0; i < v.size(); ++i)
-        assert(v[i] == 50 + (int) i * 3);
-    }
-
-    {
-    std::vector<int> v(10);
-    std::iota(v.begin(), v.end(), 0);
-    std::exclusive_scan(v.begin(), v.end(), v.begin(), 30);
-    for (size_t i = 0; i < v.size(); ++i)
-        assert(v[i] == 30 + triangle(i-1));
-    }
-
-    {
-    std::vector<int> v(10);
-    std::iota(v.begin(), v.end(), 1);
-    std::exclusive_scan(v.begin(), v.end(), v.begin(), 40);
-    for (size_t i = 0; i < v.size(); ++i)
-        assert(v[i] == 40 + triangle(i));
-    }
-
-}
-
-int main()
-{
-    basic_tests();
-
-//  All the iterator categories
-    test<input_iterator        <const int*> >();
-    test<forward_iterator      <const int*> >();
-    test<bidirectional_iterator<const int*> >();
-    test<random_access_iterator<const int*> >();
-    test<const int*>();
-    test<      int*>();
-}

Removed: libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter_init_op.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter_init_op.pass.cpp?rev=305452&view=auto
==============================================================================
--- libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter_init_op.pass.cpp (original)
+++ libcxx/trunk/test/std/numerics/numeric.ops/exclusive.scan/exclusive_scan_iter_iter_iter_init_op.pass.cpp (removed)
@@ -1,87 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-
-// template<class InputIterator, class OutputIterator, class T, class BinaryOperation>
-//     OutputIterator
-//     exclusive_scan(InputIterator first, InputIterator last,
-//                    OutputIterator result, 
-//                    T init, BinaryOperation binary_op); // C++17
-
-#include <numeric>
-#include <vector>
-#include <cassert>
-
-#include "test_iterators.h"
-
-template <class Iter1, class T, class Op, class Iter2>
-void
-test(Iter1 first, Iter1 last, T init, Op op, Iter2 rFirst, Iter2 rLast)
-{
-    std::vector<typename std::iterator_traits<Iter1>::value_type> v;
-
-//  Not in place
-    std::exclusive_scan(first, last, std::back_inserter(v), init, op);
-    assert(std::equal(v.begin(), v.end(), rFirst, rLast));
-
-//  In place
-    v.clear();
-    v.assign(first, last);
-    std::exclusive_scan(v.begin(), v.end(), v.begin(), init, op);
-    assert(std::equal(v.begin(), v.end(), rFirst, rLast));  
-}
-
-
-template <class Iter>
-void
-test()
-{
-          int ia[]   = {1, 3, 5,  7,   9};
-    const int pRes[] = {0, 1, 4,  9,  16};
-    const int mRes[] = {1, 1, 3, 15, 105};
-    const unsigned sa = sizeof(ia) / sizeof(ia[0]);
-    static_assert(sa == sizeof(pRes) / sizeof(pRes[0]));       // just to be sure
-    static_assert(sa == sizeof(mRes) / sizeof(mRes[0]));       // just to be sure
-
-    for (unsigned int i = 0; i < sa; ++i ) {
-        test(Iter(ia), Iter(ia + i), 0, std::plus<>(),       pRes, pRes + i);
-        test(Iter(ia), Iter(ia + i), 1, std::multiplies<>(), mRes, mRes + i);
-        }
-}
-
-int main()
-{
-//  All the iterator categories
-    test<input_iterator        <const int*> >();
-    test<forward_iterator      <const int*> >();
-    test<bidirectional_iterator<const int*> >();
-    test<random_access_iterator<const int*> >();
-    test<const int*>();
-    test<      int*>();
-
-//  Make sure that the calculations are done using the init typedef
-    {
-    std::vector<unsigned char> v(10);
-    std::iota(v.begin(), v.end(), 1);
-    std::vector<int> res;
-    std::exclusive_scan(v.begin(), v.end(), std::back_inserter(res), 1, std::multiplies<>());
-
-    assert(res.size() == 10);
-    int j = 1;
-    assert(res[0] == 1);
-    for (size_t i = 1; i < v.size(); ++i)
-    {
-        j *= i;
-        assert(res[i] == j);
-    }
-    }
-}
- 
\ No newline at end of file

Removed: libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter.pass.cpp?rev=305452&view=auto
==============================================================================
--- libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter.pass.cpp (original)
+++ libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter.pass.cpp (removed)
@@ -1,63 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-
-// template<class InputIterator>
-//     typename iterator_traits<InputIterator>::value_type
-//     reduce(InputIterator first, InputIterator last);
-
-#include <numeric>
-#include <cassert>
-
-#include "test_iterators.h"
-
-template <class Iter, class T>
-void
-test(Iter first, Iter last, T x)
-{
-    static_assert( std::is_same_v<typename std::iterator_traits<decltype(first)>::value_type,
-                                decltype(std::reduce(first, last))> );
-    assert(std::reduce(first, last) == x);
-}
-
-template <class Iter>
-void
-test()
-{
-    int ia[] = {1, 2, 3, 4, 5, 6};
-    unsigned sa = sizeof(ia) / sizeof(ia[0]);
-    test(Iter(ia), Iter(ia), 0);
-    test(Iter(ia), Iter(ia+1), 1);
-    test(Iter(ia), Iter(ia+2), 3);
-    test(Iter(ia), Iter(ia+sa), 21);
-}
-
-template <typename T>
-void test_return_type()
-{
-    T *p = nullptr;
-    static_assert( std::is_same_v<T, decltype(std::reduce(p, p))> );
-}
-
-int main()
-{
-    test_return_type<char>();
-    test_return_type<int>();
-    test_return_type<unsigned long>();
-    test_return_type<float>();
-    test_return_type<double>();
-
-    test<input_iterator<const int*> >();
-    test<forward_iterator<const int*> >();
-    test<bidirectional_iterator<const int*> >();
-    test<random_access_iterator<const int*> >();
-    test<const int*>();
-}

Removed: libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T.pass.cpp?rev=305452&view=auto
==============================================================================
--- libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T.pass.cpp (original)
+++ libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T.pass.cpp (removed)
@@ -1,67 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-
-// template<class InputIterator, class T>
-//   T reduce(InputIterator first, InputIterator last, T init);
-
-#include <numeric>
-#include <cassert>
-
-#include "test_iterators.h"
-
-template <class Iter, class T>
-void
-test(Iter first, Iter last, T init, T x)
-{
-    static_assert( std::is_same_v<T, decltype(std::reduce(first, last, init))> );
-    assert(std::reduce(first, last, init) == x);
-}
-
-template <class Iter>
-void
-test()
-{
-    int ia[] = {1, 2, 3, 4, 5, 6};
-    unsigned sa = sizeof(ia) / sizeof(ia[0]);
-    test(Iter(ia), Iter(ia), 0, 0);
-    test(Iter(ia), Iter(ia), 1, 1);
-    test(Iter(ia), Iter(ia+1), 0, 1);
-    test(Iter(ia), Iter(ia+1), 2, 3);
-    test(Iter(ia), Iter(ia+2), 0, 3);
-    test(Iter(ia), Iter(ia+2), 3, 6);
-    test(Iter(ia), Iter(ia+sa), 0, 21);
-    test(Iter(ia), Iter(ia+sa), 4, 25);
-}
-
-template <typename T, typename Init>
-void test_return_type()
-{
-    T *p = nullptr;
-    static_assert( std::is_same_v<Init, decltype(std::reduce(p, p, Init{}))> );
-}
-
-int main()
-{
-    test_return_type<char, int>();
-    test_return_type<int, int>();
-    test_return_type<int, unsigned long>();
-    test_return_type<float, int>();
-    test_return_type<short, float>();
-    test_return_type<double, char>();
-    test_return_type<char, double>();
-
-    test<input_iterator<const int*> >();
-    test<forward_iterator<const int*> >();
-    test<bidirectional_iterator<const int*> >();
-    test<random_access_iterator<const int*> >();
-    test<const int*>();
-}

Removed: libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T_op.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T_op.pass.cpp?rev=305452&view=auto
==============================================================================
--- libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T_op.pass.cpp (original)
+++ libcxx/trunk/test/std/numerics/numeric.ops/reduce/reduce_iter_iter_T_op.pass.cpp (removed)
@@ -1,74 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-
-// template<class InputIterator, class T, class BinaryOperation>
-//   T reduce(InputIterator first, InputIterator last, T init, BinaryOperation op);
-  
-#include <numeric>
-#include <cassert>
-
-#include "test_iterators.h"
-
-template <class Iter, class T, class Op>
-void
-test(Iter first, Iter last, T init, Op op, T x)
-{
-    static_assert( std::is_same_v<T, decltype(std::reduce(first, last, init, op))>, "" );
-    assert(std::reduce(first, last, init, op) == x);
-}
-
-template <class Iter>
-void
-test()
-{
-    int ia[] = {1, 2, 3, 4, 5, 6};
-    unsigned sa = sizeof(ia) / sizeof(ia[0]);
-    test(Iter(ia), Iter(ia), 0, std::plus<>(), 0);
-    test(Iter(ia), Iter(ia), 1, std::multiplies<>(), 1);
-    test(Iter(ia), Iter(ia+1), 0, std::plus<>(), 1);
-    test(Iter(ia), Iter(ia+1), 2, std::multiplies<>(), 2);
-    test(Iter(ia), Iter(ia+2), 0, std::plus<>(), 3);
-    test(Iter(ia), Iter(ia+2), 3, std::multiplies<>(), 6);
-    test(Iter(ia), Iter(ia+sa), 0, std::plus<>(), 21);
-    test(Iter(ia), Iter(ia+sa), 4, std::multiplies<>(), 2880);
-}
-
-template <typename T, typename Init>
-void test_return_type()
-{
-    T *p = nullptr;
-    static_assert( std::is_same_v<Init, decltype(std::reduce(p, p, Init{}, std::plus<>()))>, "" );
-}
-
-int main()
-{
-    test_return_type<char, int>();
-    test_return_type<int, int>();
-    test_return_type<int, unsigned long>();
-    test_return_type<float, int>();
-    test_return_type<short, float>();
-    test_return_type<double, char>();
-    test_return_type<char, double>();
-
-    test<input_iterator<const int*> >();
-    test<forward_iterator<const int*> >();
-    test<bidirectional_iterator<const int*> >();
-    test<random_access_iterator<const int*> >();
-    test<const int*>();
-
-//	Make sure the math is done using the correct type
-    {
-    auto v = {1, 2, 3, 4, 5, 6, 7, 8};
-    unsigned res = std::reduce(v.begin(), v.end(), 1U, std::multiplies<>());
-    assert(res == 40320);		// 8! will not fit into a char
-    }
-}

Removed: libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_iter_iter_iter_init_bop_uop.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_iter_iter_iter_init_bop_uop.pass.cpp?rev=305452&view=auto
==============================================================================
--- libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_iter_iter_iter_init_bop_uop.pass.cpp (original)
+++ libcxx/trunk/test/std/numerics/numeric.ops/transform.exclusive.scan/transform_exclusive_scan_iter_iter_iter_init_bop_uop.pass.cpp (removed)
@@ -1,160 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-// UNSUPPORTED: c++98, c++03, c++11, c++14
-
-// template<class InputIterator, class OutputIterator, class T, 
-//          class BinaryOperation, class UnaryOperation>
-//   OutputIterator transform_exclusive_scan(InputIterator first, InputIterator last,
-//                                           OutputIterator result, T init,
-//                                           BinaryOperation binary_op,
-//                                           UnaryOperation unary_op);
-
-
-#include <numeric>
-#include <vector>
-#include <cassert>
-#include <iostream>
-
-#include "test_iterators.h"
-
-template <class _Tp = void>
-struct identity : std::unary_function<_Tp, _Tp>
-{
-    constexpr const _Tp& operator()(const _Tp& __x) const { return __x;}
-};
-
-template <>
-struct identity<void>
-{
-    template <class _Tp>
-    constexpr auto operator()(_Tp&& __x) const
-    _NOEXCEPT_(noexcept(_VSTD::forward<_Tp>(__x)))
-    -> decltype        (_VSTD::forward<_Tp>(__x))
-        { return        _VSTD::forward<_Tp>(__x); }
-};
-
-template <class Iter1, class BOp, class UOp, class T, class Iter2>
-void
-test(Iter1 first, Iter1 last, BOp bop, UOp uop, T init, Iter2 rFirst, Iter2 rLast)
-{
-    std::vector<typename std::iterator_traits<Iter1>::value_type> v;
-//  Test not in-place
-    std::transform_exclusive_scan(first, last, std::back_inserter(v), init, bop, uop);
-    assert(std::equal(v.begin(), v.end(), rFirst, rLast));
-
-//  Test in-place
-    v.clear();
-    v.assign(first, last);
-    std::transform_exclusive_scan(v.begin(), v.end(), v.begin(), init, bop, uop);
-    assert(std::equal(v.begin(), v.end(), rFirst, rLast));
-}
-
-
-template <class Iter>
-void
-test()
-{
-          int ia[]     = { 1,  3,  5,   7,   9};
-    const int pResI0[] = { 0,  1,  4,   9,  16};        // with identity
-    const int mResI0[] = { 0,  0,  0,   0,   0};        
-    const int pResN0[] = { 0, -1, -4,  -9, -16};        // with negate
-    const int mResN0[] = { 0,  0,  0,   0,   0};
-    const int pResI2[] = { 2,  3,  6,  11,  18};        // with identity
-    const int mResI2[] = { 2,  2,  6,  30, 210};        
-    const int pResN2[] = { 2,  1, -2,  -7, -14};        // with negate
-    const int mResN2[] = { 2, -2,  6, -30, 210};
-    const unsigned sa = sizeof(ia) / sizeof(ia[0]);
-    static_assert(sa == sizeof(pResI0) / sizeof(pResI0[0]));       // just to be sure
-    static_assert(sa == sizeof(mResI0) / sizeof(mResI0[0]));       // just to be sure
-    static_assert(sa == sizeof(pResN0) / sizeof(pResN0[0]));       // just to be sure
-    static_assert(sa == sizeof(mResN0) / sizeof(mResN0[0]));       // just to be sure
-    static_assert(sa == sizeof(pResI2) / sizeof(pResI2[0]));       // just to be sure
-    static_assert(sa == sizeof(mResI2) / sizeof(mResI2[0]));       // just to be sure
-    static_assert(sa == sizeof(pResN2) / sizeof(pResN2[0]));       // just to be sure
-    static_assert(sa == sizeof(mResN2) / sizeof(mResN2[0]));       // just to be sure
-
-    for (unsigned int i = 0; i < sa; ++i ) {
-        test(Iter(ia), Iter(ia + i), std::plus<>(),       identity<>(),    0, pResI0, pResI0 + i);
-        test(Iter(ia), Iter(ia + i), std::multiplies<>(), identity<>(),    0, mResI0, mResI0 + i);
-        test(Iter(ia), Iter(ia + i), std::plus<>(),       std::negate<>(), 0, pResN0, pResN0 + i);
-        test(Iter(ia), Iter(ia + i), std::multiplies<>(), std::negate<>(), 0, mResN0, mResN0 + i);
-        test(Iter(ia), Iter(ia + i), std::plus<>(),       identity<>(),    2, pResI2, pResI2 + i);
-        test(Iter(ia), Iter(ia + i), std::multiplies<>(), identity<>(),    2, mResI2, mResI2 + i);
-        test(Iter(ia), Iter(ia + i), std::plus<>(),       std::negate<>(), 2, pResN2, pResN2 + i);
-        test(Iter(ia), Iter(ia + i), std::multiplies<>(), std::negate<>(), 2, mResN2, mResN2 + i);
-        }
-}
-
-int triangle(int n) { return n*(n+1)/2; }
-
-//  Basic sanity
-void basic_tests()
-{
-    {
-    std::vector<int> v(10);
-    std::fill(v.begin(), v.end(), 3);
-    std::transform_exclusive_scan(v.begin(), v.end(), v.begin(), 50, std::plus<>(), identity<>());
-    for (size_t i = 0; i < v.size(); ++i)
-        assert(v[i] == 50 + (int) i * 3);
-    }
-
-    {
-    std::vector<int> v(10);
-    std::iota(v.begin(), v.end(), 0);
-    std::transform_exclusive_scan(v.begin(), v.end(), v.begin(), 30, std::plus<>(), identity<>());
-    for (size_t i = 0; i < v.size(); ++i)
-        assert(v[i] == 30 + triangle(i-1));
-    }
-
-    {
-    std::vector<int> v(10);
-    std::iota(v.begin(), v.end(), 1);
-    std::transform_exclusive_scan(v.begin(), v.end(), v.begin(), 40, std::plus<>(), identity<>());
-    for (size_t i = 0; i < v.size(); ++i)
-        assert(v[i] == 40 + triangle(i));
-    }
-
-    {
-    std::vector<int> v, res;
-    std::transform_exclusive_scan(v.begin(), v.end(), std::back_inserter(res), 40, std::plus<>(), identity<>());
-    assert(res.empty());
-    }
-
-//  Make sure that the calculations are done using the init typedef
-    {
-    std::vector<unsigned char> v(10);
-    std::iota(v.begin(), v.end(), 1);
-    std::vector<int> res;
-    std::transform_exclusive_scan(v.begin(), v.end(), std::back_inserter(res), 1, std::multiplies<>(), identity<>());
-
-    assert(res.size() == 10);
-    int j = 1;
-    assert(res[0] == 1);
-    for (size_t i = 1; i < res.size(); ++i)
-    {
-        j *= i;
-        assert(res[i] == j);
-    }
-    }
-}
-
-int main()
-{
-    basic_tests();
-    
-//  All the iterator categories
-    test<input_iterator        <const int*> >();
-    test<forward_iterator      <const int*> >();
-    test<bidirectional_iterator<const int*> >();
-    test<random_access_iterator<const int*> >();
-    test<const int*>();
-    test<      int*>();
-}




More information about the cfe-commits mailing list