1 /* *****************************************************************
3 * Copyright 2015 Samsung Electronics All Rights Reserved.
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 * *****************************************************************/
20 #include "gtest/gtest.h"
21 #include "provisioningdatabasemanager.h"
23 #define DB_FILE "PDM.db"
24 const char ID_1 [] = "1111111111111111";
25 const char ID_2 [] = "2111111111111111";
26 const char ID_3 [] = "3111111111111111";
27 const char ID_4 [] = "4111111111111111";
28 const char ID_5 [] = "5111111111111111";
29 const char ID_6 [] = "6111111111111111";
30 const char ID_7 [] = "7111111111111111";
31 const char ID_8 [] = "8111111111111111";
32 const char ID_9 [] = "9111111111111111";
33 const char ID_10[] = "1222222222222222";
34 const char ID_11[] = "2222222222222222";
35 const char ID_12[] = "3222222222222222";
36 const char ID_13[] = "4222222222222222";
39 TEST(CallPDMAPIbeforeInit, BeforeInit)
41 if (0 == access(DB_FILE, F_OK))
43 EXPECT_EQ(0, unlink(DB_FILE));
45 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMAddDevice(NULL));
46 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMIsDuplicateDevice(NULL,NULL));
47 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMLinkDevices(NULL, NULL));
48 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMUnlinkDevices(NULL, NULL));
49 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMDeleteDevice(NULL));
50 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetOwnedDevices(NULL, NULL));
51 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetLinkedDevices(NULL, NULL, NULL));
52 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMSetLinkStale(NULL, NULL));
53 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMGetToBeUnlinkedDevices(NULL, NULL));
54 EXPECT_EQ(OC_STACK_PDM_IS_NOT_INITIALIZED, PDMIsLinkExists(NULL, NULL, NULL));
57 TEST(PDMInitTest, PDMInitWithNULL)
59 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
62 TEST(PDMAddDeviceTest, NullUUID)
64 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMAddDevice(NULL));
67 TEST(PDMIsDuplicateDeviceTest, NullUUID)
69 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMIsDuplicateDevice(NULL,NULL));
73 TEST(PDMIsDuplicateDeviceTest, ValidUUID)
75 OicUuid_t uid1 = {{0,}};
76 memcpy(&uid1.id, ID_1, sizeof(uid1.id));
78 OicUuid_t uid2 = {{0,}};
79 memcpy(&uid2.id, ID_2, sizeof(uid2.id));
81 OicUuid_t uid3 = {{0,}};
82 memcpy(&uid3.id, ID_3, sizeof(uid3.id));
83 bool isDuplicate = true;
84 EXPECT_EQ(OC_STACK_OK, PDMIsDuplicateDevice(&uid1,&isDuplicate));
85 EXPECT_TRUE(isDuplicate);
87 EXPECT_EQ(OC_STACK_OK, PDMIsDuplicateDevice(&uid3, &isDuplicate));
88 EXPECT_FALSE(isDuplicate);
91 TEST(PDMAddDeviceTest, ValidUUID)
93 OicUuid_t uid = {{0,}};
95 uint8_t id[UUID_LENGTH] = {0,};
96 for (size_t i = 0 ; i < sizeof(id) ; i++)
98 int tem = rand() % 25;
103 memcpy(&uid.id, &id, UUID_LENGTH);
105 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid));
106 PDMDeleteDevice(&uid);
109 TEST(PDMLinkDevicesTest, NULLDevice1)
111 OicUuid_t uid = {{0,}};
112 memcpy(&uid.id, ID_2, sizeof(uid.id));
113 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMLinkDevices(NULL, &uid));
116 TEST(PDMLinkDevicesTest, NULLDevice2)
118 OicUuid_t uid = {{0,}};
119 memcpy(&uid.id, ID_3, sizeof(uid.id));
120 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMLinkDevices(&uid, NULL));
123 TEST(PDMLinkDevicesTest, ValidCase)
125 OicUuid_t uid1 = {{0,}};
126 memcpy(&uid1.id, ID_4, sizeof(uid1.id));
128 OicUuid_t uid2 = {{0,}};
129 memcpy(&uid2.id, ID_5, sizeof(uid2.id));
131 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid2));
134 TEST(PDMUnlinkDevicesTest, NULLDevice1)
136 OicUuid_t uid = {{0,}};
137 memcpy(&uid.id, ID_3, sizeof(uid.id));
138 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMUnlinkDevices(NULL, &uid));
141 TEST(PDMUnlinkDevicesTest, NULLDevice2)
143 OicUuid_t uid = {{0,}};
144 memcpy(&uid.id, ID_3, sizeof(uid.id));
145 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMUnlinkDevices(&uid, NULL));
148 TEST(PDMUnlinkDevices, ValidCase)
150 OicUuid_t uid1 = {{0,}};
151 memcpy(&uid1.id, ID_4, sizeof(uid1.id));
152 OicUuid_t uid2 = {{0,}};
153 memcpy(&uid2.id, ID_5, sizeof(uid2.id));
154 EXPECT_EQ(OC_STACK_OK, PDMUnlinkDevices(&uid1, &uid2));
158 TEST (PDMDeleteDevice, NULLDeviceID)
160 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMDeleteDevice(NULL));
163 TEST (PDMDeleteDevice, ValidButNonExistDeviceID)
166 OicUuid_t uid = {{0,}};
167 uint8_t id[UUID_LENGTH] = {0,};
168 for (size_t i = 0 ; i < sizeof(id) ; i++)
170 int tem = rand() % 25;
175 memcpy(&uid.id, &id, sizeof(uid.id));
176 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMDeleteDevice(&uid));
179 TEST(PDMGetOwnedDevices, ValidCase)
181 OCUuidList_t *list = NULL;
182 size_t noOfDevcies = 0;
183 EXPECT_EQ(OC_STACK_OK, PDMGetOwnedDevices(&list, &noOfDevcies));
186 TEST(PDMGetLinkedDevices, NULLDeviceID)
188 OCUuidList_t *list = NULL;
189 size_t noOfDevices = 0;
190 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMGetLinkedDevices(NULL, &list, &noOfDevices));
193 TEST(PDMGetLinkedDevices, ValidCase)
195 OicUuid_t uid = {{0,}};
196 memcpy(&uid.id, ID_1, sizeof(uid.id));
197 OCUuidList_t *list = NULL;
198 size_t noOfDevices = 0;
199 EXPECT_EQ(OC_STACK_OK, PDMGetLinkedDevices(&uid, &list, &noOfDevices));
202 TEST(PDMGetLinkedDevices, InvalidCase)
204 OicUuid_t uid = {{0,}};
205 memcpy(&uid.id, ID_6, sizeof(uid.id));
206 OCUuidList_t *list = NULL;
207 size_t noOfDevices = 0;
208 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMGetLinkedDevices(&uid, &list, &noOfDevices));
211 TEST(PDMSetLinkStale, NULLDeviceID1)
213 OicUuid_t uid = {{0,}};
214 memcpy(&uid.id, ID_1, sizeof(uid.id));
215 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetLinkStale(NULL, &uid));
218 TEST(PDMSetLinkStale, NULLDeviceID2)
220 OicUuid_t uid = {{0,}};
221 memcpy(&uid.id, ID_1, sizeof(uid.id));
222 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetLinkStale(&uid, NULL));
225 TEST(PDMSetLinkStale, ValidCase)
227 OicUuid_t uid1 = {{0,}};
228 memcpy(&uid1.id, ID_6, sizeof(uid1.id));
229 OicUuid_t uid2 = {{0,}};
230 memcpy(&uid2.id, ID_1, sizeof(uid2.id));
232 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetLinkStale(&uid1, &uid2));
234 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
236 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid2));
238 EXPECT_EQ(OC_STACK_OK, PDMSetLinkStale(&uid1, &uid2));
241 TEST(PDMGetToBeUnlinkedDevices, ValidCase)
243 OCPairList_t *list = NULL;
244 size_t noOfDevices = 0;
245 EXPECT_EQ(OC_STACK_OK, PDMGetToBeUnlinkedDevices(&list, &noOfDevices));
248 TEST(PDMClose, ValidCase)
250 EXPECT_EQ(OC_STACK_OK, PDMClose());
253 TEST(PDMDestoryOicUuidLinkList, NULLParam)
255 PDMDestoryOicUuidLinkList(NULL);
258 TEST(PDMDestoryStaleLinkList, NULLParam)
260 PDMDestoryStaleLinkList(NULL);
263 TEST(PDMIsLinkExistsTest, DuplicateID)
265 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
266 OicUuid_t uid1 = {{0,}};
267 memcpy(&uid1.id, ID_7, sizeof(uid1.id));
268 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
269 OicUuid_t uid2 = {{0,}};
270 memcpy(&uid2.id, ID_8, sizeof(uid2.id));
271 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid2));
273 bool linkExisits = true;
274 OCStackResult res = PDMIsLinkExists(&uid1, &uid2, &linkExisits);
275 EXPECT_EQ(OC_STACK_OK, res);
276 EXPECT_FALSE(linkExisits);
279 TEST(PDMSetDeviceStaleTest, NULLUUID)
281 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
282 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMSetDeviceStale(NULL));
285 TEST(PDMSetDeviceStaleTest, VALIDUUID)
287 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
288 OicUuid_t uid1 = {{0,}};
289 memcpy(&uid1.id, ID_9, sizeof(uid1.id));
290 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
291 EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1));
294 TEST(PDMSetDeviceStaleTest, StaleDeviceNotinDeviceList)
296 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
297 OicUuid_t uid1 = {{0,}};
298 memcpy(&uid1.id, ID_10, sizeof(uid1.id));
299 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
300 EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1));
302 OCUuidList_t *list = NULL;
303 size_t noOfDevcies = 0;
304 EXPECT_EQ(OC_STACK_OK, PDMGetOwnedDevices(&list, &noOfDevcies));
308 EXPECT_FALSE(0 == memcmp(list->dev.id, uid1.id,sizeof(uid1.id)));
313 TEST(PDMSetDeviceStaleTest, StaleDeviceNotinLinkedDevice)
315 EXPECT_EQ(OC_STACK_OK, PDMInit(NULL));
316 OicUuid_t uid1 = {{0,}};
317 memcpy(&uid1.id, ID_11, sizeof(uid1.id));
319 OicUuid_t uid2 = {{0,}};
320 memcpy(&uid2.id, ID_12, sizeof(uid2.id));
322 OicUuid_t uid3 = {{0,}};
323 memcpy(&uid3.id, ID_13, sizeof(uid3.id));
325 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid1));
326 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid2));
327 EXPECT_EQ(OC_STACK_OK, PDMAddDevice(&uid3));
329 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid2));
330 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid2, &uid3));
331 EXPECT_EQ(OC_STACK_OK, PDMLinkDevices(&uid1, &uid3));
333 EXPECT_EQ(OC_STACK_OK,PDMSetDeviceStale(&uid1));
335 OCUuidList_t *list1 = NULL;
336 size_t noOfDevices1 = 0;
337 EXPECT_EQ(OC_STACK_INVALID_PARAM, PDMGetLinkedDevices(&uid1, &list1, &noOfDevices1));
339 OCUuidList_t *list2 = NULL;
340 size_t noOfDevices2 = 0;
341 EXPECT_EQ(OC_STACK_OK, PDMGetLinkedDevices(&uid2, &list2, &noOfDevices2));
342 OCUuidList_t *ptr = list2;
345 EXPECT_FALSE(0 == memcmp(ptr->dev.id, uid1.id,sizeof(uid1.id)));
351 EXPECT_TRUE(0 == memcmp(ptr->dev.id, uid3.id,sizeof(uid3.id)));
355 OCUuidList_t *list3 = NULL;
356 size_t noOfDevices3 = 0;
357 EXPECT_EQ(OC_STACK_OK, PDMGetLinkedDevices(&uid3, &list3, &noOfDevices3));
361 EXPECT_FALSE(0 == memcmp(ptr->dev.id, uid1.id,sizeof(uid1.id)));
368 EXPECT_TRUE(0 == memcmp(ptr->dev.id, uid2.id,sizeof(uid2.id)));