TEST_F(CancelTokenTest, test_copy_constructor_refCount)
{
    CancelToken cancelToken;
    CancelToken copyToken(cancelToken);

    EXPECT_EQ(cancelToken.getRefCount(), 2);
    EXPECT_EQ(copyToken.getRefCount(), 2);
}
TEST_F(CancelTokenTest, test_token_signalled_after_trigger)
{
    CancelToken cancelToken;

    cancelToken.triggerCancel();

    EXPECT_EQ(cancelToken.isSignalled(), TRUE);
}
TEST_F(CancelTokenTest, test_destructor) 
{
    CancelToken cancelToken;
    {
        CancelToken copyToken(cancelToken);
        EXPECT_EQ(copyToken.getRefCount(), 2);
    }
    EXPECT_EQ(cancelToken.getRefCount(), 1);
}
TEST_F(CancelTokenTest, test_copy_constructor)
{
    CancelToken cancelToken;

    CancelToken copyToken(cancelToken);

    EXPECT_EQ(copyToken.isSignalled(), FALSE);
    
    cancelToken.triggerCancel();

    EXPECT_EQ(copyToken.isSignalled(), TRUE);

}
Beispiel #5
0
        FwdIter upper_bound(FwdIter first, FwdIter last, T const& value,
            F && f, CancelToken& tok)
        {
            typedef typename std::iterator_traits<FwdIter>::difference_type
                difference_type;

            difference_type count = std::distance(first, last);
            while (count > 0)
            {
                if (tok.was_cancelled())
                    break;

                difference_type step = count / 2;
                FwdIter it = detail::next(first, step);

                if (!f(*it, value))
                {
                    first = ++it;
                    count -= step + 1;
                }
                else
                {
                    count = step;
                }
            }
            return first;
        }
Beispiel #6
0
 HPX_HOST_DEVICE
 static Begin call(Begin it, End end, CancelToken& tok, F && func)
 {
     for (/**/; it != end; ++it)
     {
         if (tok.was_cancelled())
             break;
         func(it);
     }
     return it;
 }
Beispiel #7
0
 static FwdIter call_with_token(Iter it, std::size_t count,
     FwdIter dest, CancelToken& tok, F && f, Cleanup && cleanup)
 {
     FwdIter base = dest;
     try {
         for (/**/; count != 0; (void) --count, ++it, ++dest)
         {
             if (tok.was_cancelled())
                 break;
             f(it, dest);
         }
         return dest;
     }
     catch (...) {
         tok.cancel();
         for (/**/; base != dest; ++base)
             cleanup(base);
         throw;
     }
 }
Beispiel #8
0
 HPX_HOST_DEVICE
 static Iter call(Iter it, std::size_t count, CancelToken& tok,
     F && f)
 {
     for (/**/; count != 0; (void) --count, ++it)
     {
         if (tok.was_cancelled())
             break;
         f(it);
     }
     return it;
 }
Beispiel #9
0
 static Iter
 call(std::size_t base_idx, Iter it, std::size_t count,
     CancelToken& tok, F && f)
 {
     for (/**/; count != 0; (void) --count, ++it, ++base_idx)
     {
         if (tok.was_cancelled(base_idx))
             break;
         f(*it, base_idx);
     }
     return it;
 }
Beispiel #10
0
        bool sequential_includes(InIter1 first1, InIter1 last1, InIter2 first2,
            InIter2 last2, F && f, CancelToken& tok)
        {
            while (first2 != last2)
            {
                if (tok.was_cancelled())
                    return false;

                if (first1 == last1 || f(*first2, *first1))
                    return false;
                if (!f(*first1, *first2))
                    ++first2;

                ++first1;
            }
            return true;
        }
TEST_F(CancelTokenTest, test_initial_refCount)
{
    CancelToken cancelToken;

    EXPECT_EQ(cancelToken.getRefCount(), 1);
}
TEST_F(CancelTokenTest, test_token_is_not_signalled_initially) 
{
    CancelToken cancelToken;

    EXPECT_EQ(cancelToken.isSignalled(), FALSE);
}