void test_transform_binary2_bad_alloc_async(ExPolicy p, IteratorTag) { typedef std::vector<int>::iterator base_iterator; typedef test::test_iterator<base_iterator, IteratorTag> iterator; std::vector<int> c1(10007); std::vector<int> c2(c1.size()); std::vector<int> d1(c1.size()); //-V656 std::iota(boost::begin(c1), boost::end(c1), std::rand()); std::iota(boost::begin(c2), boost::end(c2), std::rand()); bool caught_bad_alloc = false; bool returned_from_algorithm = false; try { auto f = hpx::parallel::transform(p, iterator(boost::begin(c1)), iterator(boost::end(c1)), boost::begin(c2), boost::end(c2), boost::begin(d1), throw_bad_alloc()); returned_from_algorithm = true; f.get(); HPX_TEST(false); } catch(std::bad_alloc const&) { caught_bad_alloc = true; } catch(...) { HPX_TEST(false); } HPX_TEST(caught_bad_alloc); HPX_TEST(returned_from_algorithm); }
void test_transform_binary2_bad_alloc(ExPolicy policy, IteratorTag) { static_assert( hpx::parallel::is_execution_policy<ExPolicy>::value, "hpx::parallel::is_execution_policy<ExPolicy>::value"); typedef std::vector<int>::iterator base_iterator; typedef test::test_iterator<base_iterator, IteratorTag> iterator; std::vector<int> c1(10007); std::vector<int> c2(c1.size()); std::vector<int> d1(c1.size()); //-V656 std::iota(boost::begin(c1), boost::end(c1), std::rand()); std::iota(boost::begin(c2), boost::end(c2), std::rand()); bool caught_bad_alloc = false; try { hpx::parallel::transform(policy, iterator(boost::begin(c1)), iterator(boost::end(c1)), boost::begin(c2), boost::end(c2), boost::begin(d1), throw_bad_alloc()); HPX_TEST(false); } catch(std::bad_alloc const&) { caught_bad_alloc = true; } catch(...) { HPX_TEST(false); } HPX_TEST(caught_bad_alloc); }
void test_stable_partition_bad_alloc(ExPolicy policy, IteratorTag) { static_assert( hpx::parallel::execution::is_execution_policy<ExPolicy>::value, "hpx::parallel::execution::is_execution_policy<ExPolicy>::value"); typedef std::vector<std::size_t>::iterator base_iterator; typedef test::test_iterator<base_iterator, IteratorTag> iterator; std::vector<std::size_t> c(10007); std::vector<std::size_t> d(c.size()); std::iota(boost::begin(c), boost::end(c), std::rand()); bool caught_bad_alloc = false; try { hpx::parallel::stable_partition(policy, iterator(boost::begin(c)), iterator(boost::end(c)), throw_bad_alloc()); HPX_TEST(false); } catch(std::bad_alloc const&) { caught_bad_alloc = true; } catch(...) { HPX_TEST(false); } HPX_TEST(caught_bad_alloc); }
void test_stable_partition_bad_alloc_async(ExPolicy p, IteratorTag) { typedef std::vector<std::size_t>::iterator base_iterator; typedef test::test_iterator<base_iterator, IteratorTag> iterator; std::vector<std::size_t> c(10007); std::vector<std::size_t> d(c.size()); std::iota(boost::begin(c), boost::end(c), std::rand()); bool caught_bad_alloc = false; bool returned_from_algorithm = false; try { auto f = hpx::parallel::stable_partition(p, iterator(boost::begin(c)), iterator(boost::end(c)), throw_bad_alloc()); returned_from_algorithm = true; f.get(); HPX_TEST(false); } catch(std::bad_alloc const&) { caught_bad_alloc = true; } catch(...) { HPX_TEST(false); } HPX_TEST(caught_bad_alloc); HPX_TEST(returned_from_algorithm); }
virtual void* do_allocate(std::size_t bytes, std::size_t alignment) { (void)bytes; (void)alignment; throw_bad_alloc(); return 0; }