1 //******************************************************************
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "gtest/gtest.h"
25 class UQueueF : public testing::Test {
36 queue = u_queue_create();
37 ASSERT_TRUE(queue != NULL);
40 virtual void TearDown()
42 EXPECT_EQ(CA_STATUS_OK, u_queue_delete(queue));
48 u_queue_message_t *CreateQueueMessage(void *data, uint32_t size)
50 u_queue_message_t *message = (u_queue_message_t *) malloc(sizeof(u_queue_message_t));
64 u_queue_t *queue = u_queue_create();
65 ASSERT_TRUE(queue != NULL);
67 EXPECT_EQ(CA_STATUS_OK, u_queue_delete(queue));
70 TEST(UQueue, CreateMany)
72 for (int i = 0; i < 100; ++i)
74 u_queue_t *queue = u_queue_create();
75 ASSERT_TRUE(queue != NULL);
77 EXPECT_EQ(CA_STATUS_OK, u_queue_delete(queue));
81 TEST(UQueue, FreeNull)
83 EXPECT_EQ(CA_STATUS_FAILED, u_queue_delete(NULL));
86 TEST_F(UQueueF, Length)
88 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
91 u_queue_message_t *message = CreateQueueMessage(&dummy, sizeof(dummy));
92 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
94 ASSERT_EQ(static_cast<uint32_t>(1), u_queue_get_size(queue));
96 // Add a few times without checking, just in case checking has side-effects
98 message = CreateQueueMessage(&dummy, sizeof(dummy));
99 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
102 message = CreateQueueMessage(&dummy, sizeof(dummy));
103 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
106 message = CreateQueueMessage(&dummy, sizeof(dummy));
107 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
109 ASSERT_EQ(static_cast<uint32_t>(4), u_queue_get_size(queue));
112 TEST_F(UQueueF, LengthMulti)
114 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
116 for (int i = 0; i < 1000; ++i)
118 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
119 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
122 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
125 TEST_F(UQueueF, GetHead)
127 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
129 for (size_t i = 0; i < 1000; ++i)
131 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
132 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
134 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
136 for (size_t i = 0; i < 1000; ++i)
138 u_queue_message_t *value = u_queue_get_head(queue);
139 ASSERT_TRUE(value != NULL);
145 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
147 for (size_t i = 0; i < 1000; ++i)
149 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
150 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
152 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
154 for (size_t i = 0; i < 1000; ++i)
156 u_queue_message_t *value = u_queue_get_element(queue);
157 ASSERT_TRUE(value != NULL);
161 TEST_F(UQueueF, Remove)
163 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
165 for (size_t i = 0; i < 1000; ++i)
167 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
168 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
170 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
172 for (size_t i = 0; i < 1000; ++i)
174 EXPECT_EQ(CA_STATUS_OK, u_queue_remove_element(queue));
178 TEST_F(UQueueF, Reset)
180 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
182 for (size_t i = 0; i < 1000; ++i)
184 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
185 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
187 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
189 EXPECT_EQ(CA_STATUS_OK, u_queue_reset(queue));
191 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));