55namespace {
66
77using bess::utils::LockLessQueue;
8+ using bess::utils::Queue;
89
910// Simple test to make sure one can get back out object
1011TEST (LLQueueTest, SingleInputOutput) {
@@ -53,6 +54,39 @@ TEST(LLQueueTest, MultiInputOutput) {
5354 }
5455}
5556
57+ // simple test to make sure that the queue is resized properly
58+ TEST (LLQueueTest, Resize) {
59+ LockLessQueue<int *> q (8 );
60+
61+ int n = 6 ;
62+ int * vals1[n];
63+ int * vals2[n];
64+ for (int i = 0 ; i < n; i++) {
65+ vals1[i] = new int ();
66+ vals2[i] = new int ();
67+ }
68+ ASSERT_EQ (q.Push (vals1, n), n);
69+ EXPECT_EQ (q.Size (), n);
70+
71+ ASSERT_EQ (q.Resize (16 ), 0 );
72+ ASSERT_EQ (q.Capacity (), 16 );
73+ ASSERT_EQ (q.Push (vals2, n), n);
74+ ASSERT_EQ (q.Size (), 2 * n);
75+
76+ int ** output = new int *[2 *n];
77+ ASSERT_EQ (q.Pop (output, 2 * n), 2 *n);
78+ for (int i = 0 ; i < n; i++) {
79+ ASSERT_EQ (output[i], vals1[i]);
80+ ASSERT_EQ (output[i + n], vals2[i]);
81+ }
82+
83+ for (int i = 0 ; i < n; i++) {
84+ delete vals1[i];
85+ delete vals2[i];
86+ }
87+ delete[] output;
88+ }
89+
5690// simple test to make sure that multiple objects can be enqueued and dequeued
5791// at the same time
5892TEST (LLQueueTest, MultiPushPop) {
@@ -66,7 +100,7 @@ TEST(LLQueueTest, MultiPushPop) {
66100 EXPECT_EQ (q.Size (), n);
67101
68102 int ** output = new int *[n];
69- q.Pop (output, n);
103+ ASSERT_EQ ( q.Pop (output, n) , n);
70104 for (int i = 0 ; i < n; i++) {
71105 ASSERT_EQ (output[i], vals[i]);
72106 }
0 commit comments