MCPcopy Create free account
hub / github.com/apache/incubator-pegasus / TEST

Function TEST

src/utils/test/priority_queue.cpp:60–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58
59typedef priority_queue<queue_data *, 3> my_priority_queue;
60TEST(core, priority_queue)
61{
62 my_priority_queue q("my_priority_queue_name");
63 ASSERT_EQ("my_priority_queue_name", q.get_name());
64 ASSERT_EQ(0, q.count());
65 ASSERT_EQ(nullptr, q.dequeue());
66
67 std::vector<queue_data> datas;
68 datas.push_back(queue_data(0, 1));
69 datas.push_back(queue_data(2, 1));
70 datas.push_back(queue_data(1, 1));
71 datas.push_back(queue_data(1, 2));
72 datas.push_back(queue_data(2, 2));
73 datas.push_back(queue_data(0, 2));
74 datas.push_back(queue_data(1, 3));
75 datas.push_back(queue_data(0, 3));
76 datas.push_back(queue_data(2, 3));
77
78 for (int i = 0; i < datas.size(); ++i) {
79 ASSERT_EQ(i, q.count());
80 queue_data *d = &datas[i];
81 ASSERT_EQ(i + 1, q.enqueue(d, d->priority));
82 ASSERT_EQ(i + 1, q.count());
83 }
84
85 std::vector<queue_data> sort_datas(datas);
86 std::sort(sort_datas.begin(), sort_datas.end(), [](const queue_data &l, const queue_data &r) {
87 return l.priority > r.priority ||
88 (l.priority == r.priority && l.queue_index < r.queue_index);
89 });
90
91 int count = sort_datas.size();
92 for (int i = 0; i < count; ++i) {
93 ASSERT_EQ(count, q.count());
94 queue_data *d = nullptr;
95 if (i % 2 == 0) {
96 d = q.dequeue();
97 } else {
98 long ct;
99 d = q.dequeue(ct);
100 ASSERT_EQ(count - 1, ct);
101 }
102 ASSERT_EQ(sort_datas[i].priority, d->priority);
103 ASSERT_EQ(sort_datas[i].queue_index, d->queue_index);
104 ASSERT_EQ(count - 1, q.count());
105 count--;
106 }
107}
108
109typedef blocking_priority_queue<queue_data *, 3> my_blocking_priority_queue;
110TEST(core, blocking_priority_queue)

Callers

nothing calls this directly

Calls 9

queue_dataClass · 0.85
get_nameMethod · 0.80
dequeue_with_timeoutMethod · 0.80
countMethod · 0.45
dequeueMethod · 0.45
sizeMethod · 0.45
enqueueMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected