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 #include "oic_malloc.h"
27 class UQueueF : public testing::Test {
38 queue = u_queue_create();
39 ASSERT_TRUE(queue != NULL);
42 virtual void TearDown()
44 EXPECT_EQ(CA_STATUS_OK, u_queue_delete(queue));
50 u_queue_message_t *CreateQueueMessage(void *data, uint32_t size)
52 u_queue_message_t *message = (u_queue_message_t *) OICMalloc(sizeof(u_queue_message_t));
66 u_queue_t *queue = u_queue_create();
67 ASSERT_TRUE(queue != NULL);
69 EXPECT_EQ(CA_STATUS_OK, u_queue_delete(queue));
72 TEST(UQueue, CreateMany)
74 for (int i = 0; i < 100; ++i)
76 u_queue_t *queue = u_queue_create();
77 ASSERT_TRUE(queue != NULL);
79 EXPECT_EQ(CA_STATUS_OK, u_queue_delete(queue));
83 TEST(UQueue, FreeNull)
85 EXPECT_EQ(CA_STATUS_FAILED, u_queue_delete(NULL));
88 TEST_F(UQueueF, Length)
90 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
93 u_queue_message_t *message = CreateQueueMessage(&dummy, sizeof(dummy));
94 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
96 ASSERT_EQ(static_cast<uint32_t>(1), u_queue_get_size(queue));
98 // Add a few times without checking, just in case checking has side-effects
100 message = CreateQueueMessage(&dummy, sizeof(dummy));
101 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
104 message = CreateQueueMessage(&dummy, sizeof(dummy));
105 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
108 message = CreateQueueMessage(&dummy, sizeof(dummy));
109 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
111 ASSERT_EQ(static_cast<uint32_t>(4), u_queue_get_size(queue));
114 TEST_F(UQueueF, LengthMulti)
116 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
118 for (int i = 0; i < 1000; ++i)
120 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
121 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
124 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
127 TEST_F(UQueueF, GetHead)
129 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
131 for (size_t i = 0; i < 1000; ++i)
133 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
134 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
136 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
138 for (size_t i = 0; i < 1000; ++i)
140 u_queue_message_t *value = u_queue_get_head(queue);
141 ASSERT_TRUE(value != NULL);
147 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
149 for (size_t i = 0; i < 1000; ++i)
151 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
152 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
154 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
156 for (size_t i = 0; i < 1000; ++i)
158 u_queue_message_t *value = u_queue_get_element(queue);
159 ASSERT_TRUE(value != NULL);
163 TEST_F(UQueueF, Remove)
165 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
167 for (size_t i = 0; i < 1000; ++i)
169 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
170 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
172 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
174 for (size_t i = 0; i < 1000; ++i)
176 EXPECT_EQ(CA_STATUS_OK, u_queue_remove_element(queue));
180 TEST_F(UQueueF, Reset)
182 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));
184 for (size_t i = 0; i < 1000; ++i)
186 u_queue_message_t *message = CreateQueueMessage(&i, sizeof(i));
187 EXPECT_EQ(CA_STATUS_OK, u_queue_add_element(queue, message));
189 ASSERT_EQ(static_cast<uint32_t>(1000), u_queue_get_size(queue));
191 EXPECT_EQ(CA_STATUS_OK, u_queue_reset(queue));
193 ASSERT_EQ(static_cast<uint32_t>(0), u_queue_get_size(queue));