summaryrefslogtreecommitdiffstats
path: root/pstl/test/test_uninitialized_construct.cpp
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2019-03-27 21:28:24 +0000
committerLouis Dionne <ldionne@apple.com>2019-03-27 21:28:24 +0000
commit3b62047b8b2209bed57d239f581bdbfc91a10b94 (patch)
treee321a0dea2d7355c3eca7c9cf9ae1f2b89823c1d /pstl/test/test_uninitialized_construct.cpp
parent4bc38cfe297746858a7159bd4a537261d628b47e (diff)
downloadbcm5719-llvm-3b62047b8b2209bed57d239f581bdbfc91a10b94.tar.gz
bcm5719-llvm-3b62047b8b2209bed57d239f581bdbfc91a10b94.zip
Restructure test suite to follow libc++ standard layout
Summary: Subsumes changes requested in https://reviews.llvm.org/D59110 Reviewers: EricWF, ldionne Subscribers: mgorny, krytarowski, jfb, jdoerfert, libcxx-commits Differential Revision: https://reviews.llvm.org/D59856 llvm-svn: 357124
Diffstat (limited to 'pstl/test/test_uninitialized_construct.cpp')
-rw-r--r--pstl/test/test_uninitialized_construct.cpp120
1 files changed, 0 insertions, 120 deletions
diff --git a/pstl/test/test_uninitialized_construct.cpp b/pstl/test/test_uninitialized_construct.cpp
deleted file mode 100644
index 88873a384ae..00000000000
--- a/pstl/test/test_uninitialized_construct.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// -*- C++ -*-
-//===-- test_uninitialized_construct.cpp ----------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// Tests for uninitialized_default_construct, uninitialized_default_construct_n,
-// uninitialized_value_construct, uninitialized_value_construct_n
-
-#include "pstl_test_config.h"
-
-#include "pstl/execution"
-#include "pstl/memory"
-#include "utils.h"
-
-using namespace TestUtils;
-
-// function of checking correctness for uninitialized.construct.value
-template <typename T, typename Iterator>
-bool
-IsCheckValueCorrectness(Iterator begin, Iterator end)
-{
- for (; begin != end; ++begin)
- {
- if (*begin != T())
- {
- return false;
- }
- }
- return true;
-}
-
-struct test_uninit_construct
-{
- template <typename Policy, typename Iterator>
- void
- operator()(Policy&& exec, Iterator begin, Iterator end, size_t n, /*is_trivial<T>=*/std::false_type)
- {
- typedef typename std::iterator_traits<Iterator>::value_type T;
- // it needs for cleaning memory that was filled by default constructors in unique_ptr<T[]> p(new T[n])
- // and for cleaning memory after last calling of uninitialized_value_construct_n.
- // It is important for non-trivial types
- std::destroy_n(exec, begin, n);
-
- // reset counter of constructors
- T::SetCount(0);
- // run algorithm
- std::uninitialized_default_construct(exec, begin, end);
- // compare counter of constructors to length of container
- EXPECT_TRUE(T::Count() == n, "wrong uninitialized_default_construct");
- // destroy objects for testing new algorithms on same memory
- std::destroy(exec, begin, end);
-
- std::uninitialized_default_construct_n(exec, begin, n);
- EXPECT_TRUE(T::Count() == n, "wrong uninitialized_default_construct_n");
- std::destroy_n(exec, begin, n);
-
- std::uninitialized_value_construct(exec, begin, end);
- EXPECT_TRUE(T::Count() == n, "wrong uninitialized_value_construct");
- std::destroy(exec, begin, end);
-
- std::uninitialized_value_construct_n(exec, begin, n);
- EXPECT_TRUE(T::Count() == n, "wrong uninitialized_value_construct_n");
- }
-
- template <typename Policy, typename Iterator>
- void
- operator()(Policy&& exec, Iterator begin, Iterator end, size_t n, /*is_trivial<T>=*/std::true_type)
- {
- typedef typename std::iterator_traits<Iterator>::value_type T;
-
- std::uninitialized_default_construct(exec, begin, end);
- std::destroy(exec, begin, end);
-
- std::uninitialized_default_construct_n(exec, begin, n);
- std::destroy_n(exec, begin, n);
-
- std::uninitialized_value_construct(exec, begin, end);
- // check correctness for uninitialized.construct.value
- EXPECT_TRUE(IsCheckValueCorrectness<T>(begin, end), "wrong uninitialized_value_construct");
- std::destroy(exec, begin, end);
-
- std::uninitialized_value_construct_n(exec, begin, n);
- EXPECT_TRUE(IsCheckValueCorrectness<T>(begin, end), "wrong uninitialized_value_construct_n");
- std::destroy_n(exec, begin, n);
- }
-};
-
-template <typename T>
-void
-test_uninit_construct_by_type()
-{
- std::size_t N = 100000;
- for (size_t n = 0; n <= N; n = n <= 16 ? n + 1 : size_t(3.1415 * n))
- {
- std::unique_ptr<T[]> p(new T[n]);
- invoke_on_all_policies(test_uninit_construct(), p.get(), std::next(p.get(), n), n, std::is_trivial<T>());
- }
-}
-
-int32_t
-main()
-{
-
- // for user-defined types
-#if !__PSTL_ICC_16_VC14_TEST_PAR_TBB_RT_RELEASE_64_BROKEN
- test_uninit_construct_by_type<Wrapper<int32_t>>();
- test_uninit_construct_by_type<Wrapper<std::vector<std::string>>>();
-#endif
-
- // for trivial types
- test_uninit_construct_by_type<int8_t>();
- test_uninit_construct_by_type<float64_t>();
-
- std::cout << done() << std::endl;
- return 0;
-}
OpenPOWER on IntegriCloud