MCPcopy Create free account
hub / github.com/cameron314/concurrentqueue / full_api

Method full_api

tests/unittests/unittests.cpp:3298–3849  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3296
3297 template<typename Traits>
3298 bool full_api()
3299 {
3300 // A simple test that exercises the full public API (just to make sure every function is implemented
3301 // and works on at least the most basic level)
3302
3303 // enqueue(T const&)
3304 {
3305 ConcurrentQueue<Copyable, Traits> q;
3306 Copyable original(12345);
3307 ASSERT_OR_FAIL(q.enqueue(original));
3308 Copyable item(0);
3309 ASSERT_OR_FAIL(q.try_dequeue(item));
3310 ASSERT_OR_FAIL(item.id == 12345);
3311 ASSERT_OR_FAIL(item.copied);
3312 ASSERT_OR_FAIL(!q.try_dequeue(item));
3313 }
3314
3315 // enqueue(T&&)
3316 {
3317 ConcurrentQueue<Moveable, Traits> q;
3318 ASSERT_OR_FAIL(q.enqueue(Moveable(12345)));
3319 Moveable item(0);
3320 ASSERT_OR_FAIL(q.try_dequeue(item));
3321 ASSERT_OR_FAIL(item.id == 12345);
3322 ASSERT_OR_FAIL(item.moved);
3323 ASSERT_OR_FAIL(!item.copied);
3324 ASSERT_OR_FAIL(!q.try_dequeue(item));
3325 }
3326 {
3327 ConcurrentQueue<Moveable, Traits> q;
3328 Moveable original(12345);
3329 ASSERT_OR_FAIL(q.enqueue(std::move(original)));
3330 Moveable item(0);
3331 ASSERT_OR_FAIL(q.try_dequeue(item));
3332 ASSERT_OR_FAIL(item.id == 12345);
3333 ASSERT_OR_FAIL(item.moved);
3334 ASSERT_OR_FAIL(!item.copied);
3335 ASSERT_OR_FAIL(!q.try_dequeue(item));
3336 }
3337 {
3338 ConcurrentQueue<Copyable, Traits> q;
3339 ASSERT_OR_FAIL(q.enqueue(Copyable(12345)));
3340 Copyable item(0);
3341 ASSERT_OR_FAIL(q.try_dequeue(item));
3342 ASSERT_OR_FAIL(item.id == 12345);
3343 ASSERT_OR_FAIL(item.copied);
3344 ASSERT_OR_FAIL(!q.try_dequeue(item));
3345 }
3346
3347 // enqueue(Token, T const&)
3348 {
3349 ConcurrentQueue<Copyable, Traits> q;
3350 ProducerToken t(q);
3351 Copyable original(12345);
3352 ASSERT_OR_FAIL(q.enqueue(t, original));
3353 Copyable item(0);
3354 ASSERT_OR_FAIL(q.try_dequeue(item));
3355 ASSERT_OR_FAIL(item.id == 12345);

Callers

nothing calls this directly

Calls 15

MoveableClass · 0.85
moveFunction · 0.85
CopyableClass · 0.85
FooClass · 0.70
swapFunction · 0.50
enqueueMethod · 0.45
try_dequeueMethod · 0.45
try_enqueueMethod · 0.45
enqueue_bulkMethod · 0.45

Tested by

no test coverage detected