bool test_r_queue_add_remove(void) { int i, j; // Create queue with max size 5. RQueue* queue = r_queue_new (5); for (i = 0; i < 5; ++i) { mu_assert ("enqueue to available slot", r_queue_enqueue (queue, (void*)(intptr_t)((i + 1) * 10))); } mu_assert_eq (queue->capacity, 5, "original capacity is 5"); mu_assert ("enqueue but it's full! Increase Capacity!", r_queue_enqueue (queue, (void*)(intptr_t)60)); mu_assert_eq (queue->capacity, 10, "new capacity should be double old"); for (i = 0; i < 6; ++i) { j = (int)(intptr_t)r_queue_dequeue (queue); mu_assert_eq (j, (i + 1) * 10, "front item from queue"); } j = (int)(intptr_t)r_queue_dequeue (queue); mu_assert_eq (j, (int)(intptr_t)NULL, "Empty queue dequeue."); r_queue_free (queue); mu_end; }
R_API bool r_id_pool_kick_id(RIDPool* pool, ut32 kick) { if (!pool || (kick < pool->start_id) || (pool->start_id == pool->next_id)) { return false; } if (kick == (pool->next_id - 1)) { pool->next_id--; return true; } if (!pool->freed_ids) { pool->freed_ids = r_queue_new (2); } r_queue_enqueue (pool->freed_ids, (void*) (size_t) kick); return true; }