1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH 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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 #include "ocpayload.h"
26 #include "ocstackinternal.h"
28 #include "oic_malloc.h"
31 #include "gtest/gtest.h"
32 #include <sys/types.h>
39 //-----------------------------------------------------------------------------
41 //-----------------------------------------------------------------------------
48 #include "gtest_helper.h"
52 namespace itst = iotivity::test;
54 #define DEFAULT_CONTEXT_VALUE 0x99
56 //-----------------------------------------------------------------------------
58 //-----------------------------------------------------------------------------
59 static const char TAG[] = "TestHarness";
61 char gDeviceUUID[] = "myDeviceUUID";
62 char gManufacturerName[] = "myName";
63 char gTooLongManufacturerName[] = "extremelylongmanufacturername";
64 char gManufacturerUrl[] = "www.foooooooooooooooo.baaaaaaaaaaaaar";
66 static char pinNumber;
67 static OCDPDev_t peer;
69 std::chrono::seconds const SHORT_TEST_TIMEOUT = std::chrono::seconds(5);
71 //-----------------------------------------------------------------------------
73 //-----------------------------------------------------------------------------
74 extern "C" OCStackApplicationResult asyncDoResourcesCallback(void* ctx,
75 OCDoHandle /*handle*/, OCClientResponse * clientResponse)
77 OIC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback");
79 EXPECT_EQ(OC_STACK_OK, clientResponse->result);
81 if(ctx == (void*)DEFAULT_CONTEXT_VALUE) {
82 OIC_LOG_V(INFO, TAG, "Callback Context recvd successfully");
84 OIC_LOG_V(INFO, TAG, "result = %d", clientResponse->result);
86 return OC_STACK_KEEP_TRANSACTION;
89 static void resultCallback(OCDPDev_t *UNUSED1, OCStackResult UNUSED2)
95 extern "C" OCStackApplicationResult discoveryCallback(void* ctx,
96 OCDoHandle /*handle*/, OCClientResponse * clientResponse)
98 OIC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback");
100 EXPECT_EQ(OC_STACK_OK, clientResponse->result);
102 if(ctx == (void*)DEFAULT_CONTEXT_VALUE)
104 OIC_LOG_V(INFO, TAG, "Callback Context recvd successfully");
107 OIC_LOG_V(INFO, TAG, "result = %d", clientResponse->result);
109 OCDiscoveryPayload *discoveryPayload = ((OCDiscoveryPayload *) clientResponse->payload);
110 EXPECT_TRUE(discoveryPayload != NULL);
111 OCResourcePayload *res = discoveryPayload->resources;
113 for (OCResourcePayload *res1 = discoveryPayload->resources; res1; res1 = res1->next)
118 EXPECT_EQ("/a/led1", res->uri);
120 EXPECT_EQ("/a/led2", res->uri);
122 EXPECT_EQ("/a/led3", res->uri);
124 EXPECT_TRUE(res == NULL);
126 return OC_STACK_KEEP_TRANSACTION;
129 //-----------------------------------------------------------------------------
131 //-----------------------------------------------------------------------------
132 OCEntityHandlerResult entityHandler(OCEntityHandlerFlag /*flag*/,
133 OCEntityHandlerRequest * /*entityHandlerRequest*/,
134 void* /*callbackParam*/)
136 OIC_LOG(INFO, TAG, "Entering entityHandler");
141 //-----------------------------------------------------------------------------
143 //-----------------------------------------------------------------------------
144 void InitStack(OCMode mode)
146 OIC_LOG(INFO, TAG, "Entering InitStack");
148 EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, mode));
149 OIC_LOG(INFO, TAG, "Leaving InitStack");
152 uint8_t InitNumExpectedResources()
155 // When presence is enabled, it is a resource and so is (currently) included
156 // in the returned resource count returned by the OCGetNumberOfResources API.
163 uint8_t InitResourceIndex()
166 // When presence is enabled, it is a resource and so is (currently) included
167 // in the returned resource count returned by the OCGetNumberOfResources API.
168 // The index of the presence resource is 0, so the first user app resource index
175 //-----------------------------------------------------------------------------
177 //-----------------------------------------------------------------------------
179 TEST(StackInit, StackInitNullAddr)
181 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
182 EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
183 EXPECT_EQ(OC_STACK_OK, OCStop());
186 TEST(StackInit, StackInitNullPort)
188 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
189 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
190 EXPECT_EQ(OC_STACK_OK, OCStop());
193 TEST(StackInit, StackInitNullAddrAndPort)
195 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
196 EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
197 EXPECT_EQ(OC_STACK_OK, OCStop());
200 TEST(StackInit, StackInitInvalidMode)
202 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
203 EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
204 EXPECT_EQ(OC_STACK_ERROR, OCStop());
207 TEST(StackStart, StackStartSuccessClient)
209 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
210 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
211 EXPECT_EQ(OC_STACK_OK, OCStop());
214 TEST(StackStart, StackStartSuccessServer)
216 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
217 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
218 EXPECT_EQ(OC_STACK_OK, OCStop());
221 TEST(StackStart, StackStartSuccessClientServer)
223 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
224 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER));
225 EXPECT_EQ(OC_STACK_OK, OCStop());
228 TEST(StackStart, StackStartSuccessiveInits)
230 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
231 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
232 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.2", 5683, OC_SERVER));
233 EXPECT_EQ(OC_STACK_OK, OCStop());
236 TEST(StackStart, SetPlatformInfoValid)
238 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
239 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
241 OCPlatformInfo info =
245 0, 0, 0, 0, 0, 0, 0, 0, 0
247 EXPECT_EQ(OC_STACK_OK, OCSetPlatformInfo(info));
248 EXPECT_EQ(OC_STACK_OK, OCStop());
251 TEST(StackStart, SetPlatformInfoWithClientMode)
253 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
254 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
256 OCPlatformInfo info =
260 0, 0, 0, 0, 0, 0, 0, 0, 0
262 EXPECT_EQ(OC_STACK_ERROR, OCSetPlatformInfo(info));
263 EXPECT_EQ(OC_STACK_OK, OCStop());
266 TEST(StackStart, SetPlatformInfoWithNoPlatformID)
268 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
269 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
271 OCPlatformInfo info =
275 0, 0, 0, 0, 0, 0, 0, 0, 0
278 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
279 EXPECT_EQ(OC_STACK_OK, OCStop());
282 TEST(StackStart, SetPlatformInfoWithNoManufacturerName)
284 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
285 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
287 OCPlatformInfo info =
290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
293 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
294 EXPECT_EQ(OC_STACK_OK, OCStop());
297 TEST(StackStart, SetPlatformInfoWithZeroLengthManufacturerName)
299 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
300 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
302 OCPlatformInfo info =
305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
307 info.manufacturerName = (char *) "";
309 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
310 EXPECT_EQ(OC_STACK_OK, OCStop());
313 TEST(StackStart, SetPlatformInfoWithTooLongManufacName)
315 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
316 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
318 OCPlatformInfo info =
321 gTooLongManufacturerName,
322 0, 0, 0, 0, 0, 0, 0, 0, 0
325 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
326 EXPECT_EQ(OC_STACK_OK, OCStop());
329 TEST(StackStart, SetPlatformInfoWithTooLongManufacURL)
331 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
332 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
333 OCPlatformInfo info =
338 0, 0, 0, 0, 0, 0, 0, 0
341 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
342 EXPECT_EQ(OC_STACK_OK, OCStop());
345 TEST(StackDiscovery, DISABLED_DoResourceDeviceDiscovery)
347 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
348 OCCallbackData cbData;
351 OIC_LOG(INFO, TAG, "Starting DoResourceDeviceDiscovery test ");
352 InitStack(OC_CLIENT);
354 /* Start a discovery query*/
355 char szQueryUri[64] = { 0 };
356 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
357 cbData.cb = asyncDoResourcesCallback;
358 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
360 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
370 EXPECT_EQ(OC_STACK_OK, OCStop());
373 TEST(StackStop, StackStopWithoutInit)
375 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
376 EXPECT_EQ(OC_STACK_ERROR, OCStop());
379 TEST(StackStop, StackStopRepeated)
381 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
382 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
383 EXPECT_EQ(OC_STACK_OK, OCStop());
384 EXPECT_EQ(OC_STACK_ERROR, OCStop());
387 TEST(StackResource, DISABLED_UpdateResourceNullURI)
389 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
390 OCCallbackData cbData;
393 OIC_LOG(INFO, TAG, "Starting UpdateResourceNullURI test");
394 InitStack(OC_CLIENT);
396 /* Start a discovery query*/
397 char szQueryUri[64] = { 0 };
398 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
399 cbData.cb = asyncDoResourcesCallback;
400 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
402 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
412 EXPECT_EQ(OC_STACK_OK, OCStop());
415 TEST(StackResource, CreateResourceBadParams)
417 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
418 OIC_LOG(INFO, TAG, "Starting CreateResourceBadParams test");
419 InitStack(OC_SERVER);
421 OCResourceHandle handle;
423 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(NULL, //&handle,
429 OC_DISCOVERABLE|OC_OBSERVABLE));
431 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
437 OC_DISCOVERABLE|OC_OBSERVABLE));
439 // Property bitmask out of range
440 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
446 128));// invalid bitmask for OCResourceProperty
448 EXPECT_EQ(OC_STACK_OK, OCStop());
451 TEST(StackResource, CreateResourceBadUri)
453 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
454 OIC_LOG(INFO, TAG, "Starting CreateResourceBadUri test");
455 InitStack(OC_SERVER);
457 const char *uri257 = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW";
459 OCResourceHandle handle;
461 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
467 OC_DISCOVERABLE|OC_OBSERVABLE));
469 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
475 OC_DISCOVERABLE|OC_OBSERVABLE));
477 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
483 OC_DISCOVERABLE|OC_OBSERVABLE));
485 EXPECT_EQ(OC_STACK_OK, OCStop());
488 TEST(StackResource, CreateResourceSuccess)
490 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
491 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
492 InitStack(OC_SERVER);
494 OCResourceHandle handle;
495 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
501 OC_DISCOVERABLE|OC_OBSERVABLE));
502 const char *url = OCGetResourceUri(handle);
503 EXPECT_STREQ("/a/led", url);
505 EXPECT_EQ(OC_STACK_OK, OCStop());
508 TEST(StackResource, CreateResourceSuccessWithResourcePolicyPropNone)
510 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
511 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccessWithResourcePolicyPropNone test");
512 InitStack(OC_SERVER);
514 OCResourceHandle handle;
515 // the resource is non-discoverable & non-observable by the client.
516 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
522 OC_RES_PROP_NONE));// the resource is non-discoverable &
523 // non-observable by the client.
524 const char* url = OCGetResourceUri(handle);
525 EXPECT_STREQ("/a/led", url);
527 EXPECT_EQ(OC_STACK_OK, OCStop());
530 TEST(StackResource, CreateResourceWithClientStackMode)
532 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
533 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
534 InitStack(OC_CLIENT);
536 OCResourceHandle handle;
537 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
543 OC_DISCOVERABLE|OC_OBSERVABLE));
545 EXPECT_EQ(OC_STACK_OK, OCStop());
548 TEST(StackResource, CreateResourceFailDuplicateUri)
550 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
551 OIC_LOG(INFO, TAG, "Starting CreateResourceFailDuplicateUri test");
552 InitStack(OC_SERVER);
554 OCResourceHandle handle;
555 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
561 OC_DISCOVERABLE|OC_OBSERVABLE));
562 const char *url = OCGetResourceUri(handle);
563 EXPECT_STREQ("/a/led", url);
565 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
571 OC_DISCOVERABLE|OC_OBSERVABLE));
573 EXPECT_EQ(OC_STACK_OK, OCStop());
576 TEST(StackResource, CreateResourceMultipleResources)
578 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
579 OIC_LOG(INFO, TAG, "Starting CreateResourceMultipleResources test");
580 InitStack(OC_SERVER);
582 OCResourceHandle handle1;
583 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
589 OC_DISCOVERABLE|OC_OBSERVABLE));
591 OCResourceHandle handle2;
592 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
598 OC_DISCOVERABLE|OC_OBSERVABLE));
599 OCResourceHandle handle3;
600 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
606 OC_DISCOVERABLE|OC_OBSERVABLE));
608 const char *url = OCGetResourceUri(handle1);
609 EXPECT_STREQ("/a/led1", url);
611 url = OCGetResourceUri(handle2);
612 EXPECT_STREQ("/a/led2", url);
614 url = OCGetResourceUri(handle3);
615 EXPECT_STREQ("/a/led3", url);
617 EXPECT_EQ(OC_STACK_OK, OCStop());
620 TEST(StackResource, CreateResourceBadResoureType)
622 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
623 OIC_LOG(INFO, TAG, "Starting CreateResourceBadResoureType test");
624 InitStack(OC_SERVER);
626 OCResourceHandle handle;
627 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
633 OC_DISCOVERABLE|OC_OBSERVABLE));
635 OCResourceHandle handle2;
636 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle2,
642 OC_DISCOVERABLE|OC_OBSERVABLE));
644 EXPECT_EQ(OC_STACK_OK, OCStop());
647 TEST(StackResource, CreateResourceGoodResourceType)
649 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
650 OIC_LOG(INFO, TAG, "Starting CreateResourceGoodResourceType test");
651 InitStack(OC_SERVER);
653 OCResourceHandle handle;
654 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
660 OC_DISCOVERABLE|OC_OBSERVABLE));
662 EXPECT_EQ(OC_STACK_OK, OCStop());
665 TEST(StackResource, ResourceTypeName)
667 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
668 OIC_LOG(INFO, TAG, "Starting ResourceTypeName test");
669 InitStack(OC_SERVER);
671 OCResourceHandle handle;
672 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
678 OC_DISCOVERABLE|OC_OBSERVABLE));
680 uint8_t numResourceTypes;
681 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
682 EXPECT_EQ(1, numResourceTypes);
683 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
684 EXPECT_STREQ("core.led", resourceTypeName);
686 // try getting resource type names with an invalid index
687 resourceTypeName = OCGetResourceTypeName(handle, 1);
688 EXPECT_STREQ(NULL, resourceTypeName);
689 // try getting resource type names with an invalid index
690 resourceTypeName = OCGetResourceTypeName(handle, 10);
691 EXPECT_STREQ(NULL, resourceTypeName);
693 EXPECT_EQ(OC_STACK_OK, OCStop());
696 TEST(StackResource, ResourceTypeAttrRepresentation)
698 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
699 OIC_LOG(INFO, TAG, "Starting ResourceTypeAttrRepresentation test");
700 InitStack(OC_SERVER);
702 OCResourceHandle handle;
703 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
709 OC_DISCOVERABLE|OC_OBSERVABLE));
711 uint8_t numResourceTypes;
712 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
713 EXPECT_EQ(1, numResourceTypes);
715 EXPECT_EQ(OC_STACK_OK, OCStop());
718 TEST(StackResource, ResourceTypeInterface)
720 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
721 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterface test");
722 InitStack(OC_SERVER);
724 OCResourceHandle handle;
725 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
731 OC_DISCOVERABLE|OC_OBSERVABLE));
733 uint8_t numResourceInterfaces;
734 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
735 EXPECT_EQ(2, numResourceInterfaces);
736 const char *resourceInterfaceName1 = OCGetResourceInterfaceName(handle, 0);
737 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, resourceInterfaceName1);
738 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
739 EXPECT_STREQ("core.rw", resourceInterfaceName);
741 // try getting resource interface names with an invalid index
742 resourceInterfaceName = OCGetResourceInterfaceName(handle, 2);
743 EXPECT_STREQ(NULL, resourceInterfaceName);
744 // try getting resource interface names with an invalid index
745 resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
746 EXPECT_STREQ(NULL, resourceInterfaceName);
748 EXPECT_EQ(OC_STACK_OK, OCStop());
751 TEST(StackResource, ResourceDefaultInterfaceAlwaysFirst)
753 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
755 OIC_LOG(INFO, TAG, "Starting ResourceDefaultInterfaceAlwaysFirst test");
757 InitStack(OC_SERVER);
759 OCResourceHandle handle;
760 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
766 OC_DISCOVERABLE|OC_OBSERVABLE));
767 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
768 OC_RSRVD_INTERFACE_DEFAULT));
769 uint8_t numResourceInterfaces;
770 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
771 EXPECT_EQ(2, numResourceInterfaces);
773 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
774 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
776 const char*interfaceName_2 = OCGetResourceInterfaceName(handle, 1);
777 EXPECT_STREQ("core.rw", interfaceName_2);
779 EXPECT_EQ(OC_STACK_OK, OCStop());
782 TEST(StackResource, ResourceDuplicateDefaultInterfaces)
784 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
786 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateDefaultInterfaces test");
788 InitStack(OC_SERVER);
790 OCResourceHandle handle;
791 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
797 OC_DISCOVERABLE|OC_OBSERVABLE));
799 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
800 OC_RSRVD_INTERFACE_DEFAULT));
801 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
802 OC_RSRVD_INTERFACE_DEFAULT));
804 uint8_t numResourceInterfaces;
805 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
806 EXPECT_EQ(2, numResourceInterfaces);
808 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
809 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
811 EXPECT_EQ(OC_STACK_OK, OCStop());
814 TEST(StackResource, ResourceDuplicateNonDefaultInterfaces)
816 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
818 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateInterfaces test");
820 InitStack(OC_SERVER);
822 OCResourceHandle handle;
823 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
829 OC_DISCOVERABLE|OC_OBSERVABLE));
831 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
833 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
836 uint8_t numResourceInterfaces;
837 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
838 EXPECT_EQ(2, numResourceInterfaces);
840 EXPECT_EQ(OC_STACK_OK, OCStop());
843 TEST(StackResource, ResourceTypeInterfaceMethods)
845 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
846 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterfaceMethods test");
847 InitStack(OC_SERVER);
849 OCResourceHandle handle;
850 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
856 OC_DISCOVERABLE|OC_OBSERVABLE));
858 uint8_t numResourceInterfaces;
859 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
860 EXPECT_EQ(2, numResourceInterfaces);
862 EXPECT_EQ(OC_STACK_OK, OCStop());
865 TEST(StackResource, GetResourceProperties)
867 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
868 OIC_LOG(INFO, TAG, "Starting GetResourceProperties test");
869 InitStack(OC_SERVER);
871 OCResourceHandle handle;
872 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
878 OC_DISCOVERABLE|OC_OBSERVABLE));
880 EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
881 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
883 EXPECT_EQ(OC_STACK_OK, OCStop());
886 TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
888 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
889 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResourceBad test");
890 InitStack(OC_SERVER);
891 uint8_t numResources = 0;
892 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
894 OCResourceHandle handle;
895 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
901 OC_DISCOVERABLE|OC_OBSERVABLE));
902 const char *url = OCGetResourceUri(handle);
903 EXPECT_STREQ("/a1/led", url);
905 //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
906 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
907 uint8_t numExpectedResources = 0;
909 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
910 EXPECT_EQ(numExpectedResources, numResources);
912 EXPECT_EQ(OC_STACK_OK, OCStop());
915 TEST(StackResource, StackTestResourceDiscoverOneResource)
917 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
918 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResource test");
919 InitStack(OC_SERVER);
921 OCResourceHandle handle;
922 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
928 OC_DISCOVERABLE|OC_OBSERVABLE));
929 const char *url = OCGetResourceUri(handle);
930 EXPECT_STREQ("/a/led", url);
932 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
933 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
935 EXPECT_EQ(OC_STACK_OK, OCStop());
938 TEST(StackResource, StackTestResourceDiscoverManyResources)
940 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
941 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverManyResources test");
942 InitStack(OC_SERVER);
944 OCResourceHandle handle1;
945 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
952 const char *url = OCGetResourceUri(handle1);
953 EXPECT_STREQ("/a/led1", url);
955 OCResourceHandle handle2;
956 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
962 OC_DISCOVERABLE|OC_OBSERVABLE));
963 url = OCGetResourceUri(handle2);
964 EXPECT_STREQ("/a/led2", url);
966 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
967 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
969 OCResourceHandle handle3;
970 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
976 OC_DISCOVERABLE|OC_OBSERVABLE));
977 url = OCGetResourceUri(handle3);
978 EXPECT_STREQ("/a/led3", url);
980 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_LL));
981 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_BATCH));
983 OCResourceHandle handle4;
984 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
991 url = OCGetResourceUri(handle4);
992 EXPECT_STREQ("/a/led4", url);
994 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
995 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_LL));
996 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_BATCH));
998 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
1000 EXPECT_EQ(OC_STACK_OK, OCStop());
1003 TEST(StackBind, BindResourceTypeNameBad)
1005 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1006 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameBad test");
1007 InitStack(OC_SERVER);
1009 OCResourceHandle handle;
1010 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1016 OC_DISCOVERABLE|OC_OBSERVABLE));
1018 uint8_t numResourceTypes;
1019 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1020 EXPECT_EQ(1, numResourceTypes);
1021 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1022 EXPECT_STREQ("core.led", resourceTypeName);
1024 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
1025 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, "core.nameBad"));
1026 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, "core.name bad"));
1028 EXPECT_EQ(OC_STACK_OK, OCStop());
1031 TEST(StackBind, BindResourceTypeNameGood)
1033 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1034 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood test");
1035 InitStack(OC_SERVER);
1037 OCResourceHandle handle;
1038 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1044 OC_DISCOVERABLE|OC_OBSERVABLE));
1046 uint8_t numResourceTypes;
1047 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1048 EXPECT_EQ(1, numResourceTypes);
1049 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1050 EXPECT_STREQ("core.led", resourceTypeName);
1052 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1053 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1054 EXPECT_EQ(2, numResourceTypes);
1055 resourceTypeName = OCGetResourceTypeName(handle, 1);
1056 EXPECT_STREQ("core.brightled", resourceTypeName);
1058 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1059 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1060 EXPECT_EQ(3, numResourceTypes);
1061 resourceTypeName = OCGetResourceTypeName(handle, 2);
1062 EXPECT_STREQ("core.reallybrightled", resourceTypeName);
1064 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "x.ReallyReallyBrightLED"));
1065 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1066 EXPECT_EQ(4, numResourceTypes);
1067 resourceTypeName = OCGetResourceTypeName(handle, 3);
1068 EXPECT_STREQ("x.ReallyReallyBrightLED", resourceTypeName);
1070 EXPECT_EQ(OC_STACK_OK, OCStop());
1073 TEST(StackBind, BindResourceTypeAttribRepGood)
1075 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1076 OIC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
1077 InitStack(OC_SERVER);
1079 OCResourceHandle handle;
1080 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1086 OC_DISCOVERABLE|OC_OBSERVABLE));
1088 uint8_t numResourceTypes;
1089 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1090 EXPECT_EQ(1, numResourceTypes);
1092 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1093 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1094 EXPECT_EQ(2, numResourceTypes);
1096 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1097 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1098 EXPECT_EQ(3, numResourceTypes);
1100 EXPECT_EQ(OC_STACK_OK, OCStop());
1104 TEST(StackBind, BindResourceInterfaceNameBad)
1106 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1107 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
1108 InitStack(OC_SERVER);
1110 OCResourceHandle handle;
1111 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1117 OC_DISCOVERABLE|OC_OBSERVABLE));
1119 uint8_t numResourceInterfaces;
1120 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1121 EXPECT_EQ(2, numResourceInterfaces);
1122 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1123 EXPECT_STREQ("core.rw", resourceInterfaceName);
1125 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, NULL));
1127 EXPECT_EQ(OC_STACK_OK, OCStop());
1130 TEST(StackBind, BindResourceInterfaceNameGood)
1132 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1133 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
1134 InitStack(OC_SERVER);
1136 OCResourceHandle handle;
1137 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1143 OC_DISCOVERABLE|OC_OBSERVABLE));
1145 uint8_t numResourceInterfaces;
1146 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1147 EXPECT_EQ(2, numResourceInterfaces);
1148 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1149 EXPECT_STREQ("core.rw", resourceInterfaceName);
1151 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1153 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1154 EXPECT_EQ(3, numResourceInterfaces);
1155 resourceInterfaceName = OCGetResourceInterfaceName(handle, 2);
1156 EXPECT_STREQ("core.r", resourceInterfaceName);
1158 EXPECT_EQ(OC_STACK_OK, OCStop());
1161 TEST(StackBind, BindResourceInterfaceMethodsBad)
1163 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1164 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
1165 InitStack(OC_SERVER);
1167 OCResourceHandle handle;
1168 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1174 OC_DISCOVERABLE|OC_OBSERVABLE));
1176 uint8_t numResourceInterfaces;
1177 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1178 EXPECT_EQ(2, numResourceInterfaces);
1180 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, 0));
1182 EXPECT_EQ(OC_STACK_OK, OCStop());
1185 TEST(StackBind, BindResourceInterfaceMethodsGood)
1187 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1188 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
1189 InitStack(OC_SERVER);
1191 OCResourceHandle handle;
1192 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1198 OC_DISCOVERABLE|OC_OBSERVABLE));
1200 uint8_t numResourceInterfaces;
1201 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1202 EXPECT_EQ(2, numResourceInterfaces);
1204 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1206 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1207 EXPECT_EQ(3, numResourceInterfaces);
1209 EXPECT_EQ(OC_STACK_OK, OCStop());
1212 TEST(StackBind, BindContainedResourceBad)
1214 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1215 OIC_LOG(INFO, TAG, "Starting BindContainedResourceBad test");
1216 InitStack(OC_SERVER);
1218 OCResourceHandle containerHandle;
1219 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1225 OC_DISCOVERABLE|OC_OBSERVABLE));
1227 OCResourceHandle handle0;
1228 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1234 OC_DISCOVERABLE|OC_OBSERVABLE));
1236 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResource(containerHandle, containerHandle));
1238 EXPECT_EQ(OC_STACK_ERROR, OCBindResource((OCResourceHandle) 0, handle0));
1240 EXPECT_EQ(OC_STACK_OK, OCStop());
1243 TEST(StackBind, BindContainedResourceGood)
1245 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1246 OIC_LOG(INFO, TAG, "Starting BindContainedResourceGood test");
1247 InitStack(OC_SERVER);
1249 uint8_t numResources = 0;
1250 uint8_t numExpectedResources = 0;
1252 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1254 OCResourceHandle containerHandle;
1255 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1261 OC_DISCOVERABLE|OC_OBSERVABLE));
1262 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1263 EXPECT_EQ(++numExpectedResources, numResources);
1265 OCResourceHandle handle0;
1266 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1272 OC_DISCOVERABLE|OC_OBSERVABLE));
1273 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1274 EXPECT_EQ(++numExpectedResources, numResources);
1276 OCResourceHandle handle1;
1277 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1283 OC_DISCOVERABLE|OC_OBSERVABLE));
1284 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1285 EXPECT_EQ(++numExpectedResources, numResources);
1287 OCResourceHandle handle2;
1288 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1294 OC_DISCOVERABLE|OC_OBSERVABLE));
1295 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1296 EXPECT_EQ(++numExpectedResources, numResources);
1298 OCResourceHandle handle3;
1299 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1305 OC_DISCOVERABLE|OC_OBSERVABLE));
1306 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1307 EXPECT_EQ(++numExpectedResources, numResources);
1309 OCResourceHandle handle4;
1310 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1316 OC_DISCOVERABLE|OC_OBSERVABLE));
1317 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1318 EXPECT_EQ(++numExpectedResources, numResources);
1320 OCResourceHandle handle5;
1321 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1327 OC_DISCOVERABLE|OC_OBSERVABLE));
1328 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1329 EXPECT_EQ(++numExpectedResources, numResources);
1332 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle0));
1333 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle1));
1334 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle2));
1335 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle3));
1336 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle4));
1337 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle5));
1339 EXPECT_EQ(handle0, OCGetResourceHandleFromCollection(containerHandle, 0));
1340 EXPECT_EQ(handle1, OCGetResourceHandleFromCollection(containerHandle, 1));
1341 EXPECT_EQ(handle2, OCGetResourceHandleFromCollection(containerHandle, 2));
1342 EXPECT_EQ(handle3, OCGetResourceHandleFromCollection(containerHandle, 3));
1343 EXPECT_EQ(handle4, OCGetResourceHandleFromCollection(containerHandle, 4));
1344 EXPECT_EQ(handle5, OCGetResourceHandleFromCollection(containerHandle, 5));
1346 EXPECT_EQ(OC_STACK_OK, OCStop());
1350 TEST(StackBind, BindEntityHandlerBad)
1352 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1353 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerBad test");
1354 InitStack(OC_SERVER);
1356 OCResourceHandle handle;
1357 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1363 OC_DISCOVERABLE|OC_OBSERVABLE));
1365 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL, NULL));
1367 EXPECT_EQ(OC_STACK_OK, OCStop());
1370 TEST(StackBind, BindEntityHandlerGood)
1372 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1373 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerGood test");
1374 InitStack(OC_SERVER);
1376 OCResourceHandle handle;
1377 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1383 OC_DISCOVERABLE|OC_OBSERVABLE));
1385 OCEntityHandler myHandler = entityHandler;
1387 EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler, NULL));
1389 EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
1391 EXPECT_EQ(OC_STACK_OK, OCStop());
1394 TEST(StackResourceAccess, GetResourceByIndex)
1396 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1397 OIC_LOG(INFO, TAG, "Starting GetResourceByIndex test");
1398 InitStack(OC_SERVER);
1400 uint8_t numResources = 0;
1401 uint8_t numExpectedResources = 0;
1402 uint8_t resourceIndex = 0;
1403 uint8_t prevResources = 0;
1404 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1405 prevResources = numExpectedResources;
1406 OCResourceHandle containerHandle;
1407 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1413 OC_DISCOVERABLE|OC_OBSERVABLE));
1414 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1415 EXPECT_EQ(++numExpectedResources, numResources);
1417 OCResourceHandle handle0;
1418 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1424 OC_DISCOVERABLE|OC_OBSERVABLE));
1425 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1426 EXPECT_EQ(++numExpectedResources, numResources);
1428 OCResourceHandle handle1;
1429 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1435 OC_DISCOVERABLE|OC_OBSERVABLE));
1436 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1437 EXPECT_EQ(++numExpectedResources, numResources);
1439 OCResourceHandle handle2;
1440 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1446 OC_DISCOVERABLE|OC_OBSERVABLE));
1447 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1448 EXPECT_EQ(++numExpectedResources, numResources);
1450 OCResourceHandle handle3;
1451 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1457 OC_DISCOVERABLE|OC_OBSERVABLE));
1458 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1459 EXPECT_EQ(++numExpectedResources, numResources);
1461 OCResourceHandle handle4;
1462 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1468 OC_DISCOVERABLE|OC_OBSERVABLE));
1469 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1470 EXPECT_EQ(++numExpectedResources, numResources);
1472 OCResourceHandle handle5;
1473 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1479 OC_DISCOVERABLE|OC_OBSERVABLE));
1480 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1481 EXPECT_EQ(++numExpectedResources, numResources);
1482 resourceIndex += prevResources;
1483 EXPECT_EQ(containerHandle, OCGetResourceHandle(resourceIndex));
1484 EXPECT_EQ(handle0, OCGetResourceHandle(++resourceIndex));
1485 EXPECT_EQ(handle1, OCGetResourceHandle(++resourceIndex));
1486 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1487 EXPECT_EQ(handle3, OCGetResourceHandle(++resourceIndex));
1488 EXPECT_EQ(handle4, OCGetResourceHandle(++resourceIndex));
1489 EXPECT_EQ(handle5, OCGetResourceHandle(++resourceIndex));
1491 EXPECT_EQ(OC_STACK_OK, OCStop());
1494 TEST(StackResourceAccess, DeleteHeadResource)
1496 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1497 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource test");
1498 InitStack(OC_SERVER);
1500 uint8_t numResources = 0;
1501 uint8_t numExpectedResources = 0;
1503 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1505 OCResourceHandle handle0;
1506 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1512 OC_DISCOVERABLE|OC_OBSERVABLE));
1513 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1514 EXPECT_EQ(++numExpectedResources, numResources);
1516 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1517 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1518 EXPECT_EQ(--numExpectedResources, numResources);
1520 EXPECT_EQ(OC_STACK_OK, OCStop());
1523 TEST(StackResourceAccess, DeleteHeadResource2)
1525 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1526 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource2 test");
1527 InitStack(OC_SERVER);
1529 uint8_t numResources = 0;
1530 uint8_t numExpectedResources = 0;
1532 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1533 OCResourceHandle handle0;
1534 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1540 OC_DISCOVERABLE|OC_OBSERVABLE));
1541 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1542 EXPECT_EQ(++numExpectedResources, numResources);
1544 OCResourceHandle handle1;
1545 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1551 OC_DISCOVERABLE|OC_OBSERVABLE));
1552 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1553 EXPECT_EQ(++numExpectedResources, numResources);
1555 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1556 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1557 EXPECT_EQ(--numExpectedResources, numResources);
1559 EXPECT_EQ(handle1, OCGetResourceHandle(numResources - 1));
1561 EXPECT_EQ(OC_STACK_OK, OCStop());
1565 TEST(StackResourceAccess, DeleteLastResource)
1567 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1568 OIC_LOG(INFO, TAG, "Starting DeleteLastResource test");
1569 InitStack(OC_SERVER);
1571 uint8_t numResources = 0;
1572 uint8_t numExpectedResources = 0;
1574 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1576 OCResourceHandle handle0;
1577 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1583 OC_DISCOVERABLE|OC_OBSERVABLE));
1584 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1585 EXPECT_EQ(++numExpectedResources, numResources);
1587 OCResourceHandle handle1;
1588 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1594 OC_DISCOVERABLE|OC_OBSERVABLE));
1595 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1596 EXPECT_EQ(++numExpectedResources, numResources);
1598 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1599 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1600 EXPECT_EQ(--numExpectedResources, numResources);
1602 EXPECT_EQ(handle0, OCGetResourceHandle(numResources - 1));
1604 OCResourceHandle handle2;
1605 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1611 OC_DISCOVERABLE|OC_OBSERVABLE));
1612 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1613 EXPECT_EQ(++numExpectedResources, numResources);
1615 EXPECT_EQ(OC_STACK_OK, OCStop());
1618 TEST(StackResourceAccess, DeleteMiddleResource)
1620 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1621 OIC_LOG(INFO, TAG, "Starting DeleteMiddleResource test");
1622 InitStack(OC_SERVER);
1624 uint8_t numResources = 0;
1625 uint8_t numExpectedResources = 0;
1626 uint8_t resourceIndex = InitResourceIndex();
1628 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1629 resourceIndex = numExpectedResources;
1630 OCResourceHandle handle0;
1631 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1637 OC_DISCOVERABLE|OC_OBSERVABLE));
1638 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1639 EXPECT_EQ(++numExpectedResources, numResources);
1641 OCResourceHandle handle1;
1642 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1648 OC_DISCOVERABLE|OC_OBSERVABLE));
1649 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1650 EXPECT_EQ(++numExpectedResources, numResources);
1652 OCResourceHandle handle2;
1653 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1659 OC_DISCOVERABLE|OC_OBSERVABLE));
1660 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1661 EXPECT_EQ(++numExpectedResources, numResources);
1663 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1664 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1665 EXPECT_EQ(--numExpectedResources, numResources);
1667 EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
1668 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1670 // Make sure the resource elements are still correct
1671 uint8_t numResourceInterfaces;
1672 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle2, &numResourceInterfaces));
1673 EXPECT_EQ(2, numResourceInterfaces);
1674 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle2, 1);
1675 EXPECT_STREQ("core.rw", resourceInterfaceName);
1677 EXPECT_EQ(OC_STACK_OK, OCStop());
1680 TEST(PODTests, OCHeaderOption)
1682 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1685 TEST(PODTests, OCCallbackData)
1687 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1690 TEST(OCDoDirectPairingTests, Nullpeer)
1692 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(NULL, pmSel, &pinNumber, &resultCallback));
1695 TEST(OCDoDirectPairingTests, NullCallback)
1697 EXPECT_EQ(OC_STACK_INVALID_CALLBACK,OCDoDirectPairing(&peer, pmSel, &pinNumber, NULL));
1700 TEST(OCDoDirectPairingTests, NullpinNumber)
1702 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(&peer, pmSel, NULL, &resultCallback));
1705 TEST(StackResource, MultipleResourcesDiscovery)
1707 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1708 OIC_LOG(INFO, TAG, "Starting MultipleResourcesDiscovery test");
1709 InitStack(OC_SERVER);
1711 OCResourceHandle handle1;
1712 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1718 OC_DISCOVERABLE|OC_OBSERVABLE));
1720 OCResourceHandle handle2;
1721 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1727 OC_DISCOVERABLE|OC_OBSERVABLE));
1728 OCResourceHandle handle3;
1729 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1735 OC_DISCOVERABLE|OC_OBSERVABLE));
1736 /* Start a discovery query*/
1737 char szQueryUri[256] = "/oic/res?if=oic.if.ll";
1738 OCCallbackData cbData;
1739 cbData.cb = discoveryCallback;
1740 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
1744 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
1755 EXPECT_EQ(OC_STACK_OK, OCStop());
1758 TEST(StackPayload, CloneByteString)
1760 uint8_t bytes[] = { 0, 1, 2, 3 };
1761 OCByteString byteString;
1762 byteString.bytes = bytes;
1763 byteString.len = sizeof(bytes);
1765 OCRepPayload *original = OCRepPayloadCreate();
1766 ASSERT_TRUE(original != NULL);
1767 EXPECT_TRUE(OCRepPayloadSetPropByteString(original, "name", byteString));
1769 OCRepPayload *clone = OCRepPayloadClone(original);
1770 ASSERT_TRUE(clone != NULL);
1772 OCRepPayloadDestroy(original);
1774 OCByteString cloneByteString;
1775 EXPECT_TRUE(OCRepPayloadGetPropByteString(clone, "name", &cloneByteString));
1776 ASSERT_TRUE(cloneByteString.bytes != NULL);
1777 EXPECT_EQ(sizeof(bytes), cloneByteString.len);
1778 EXPECT_TRUE(0 == memcmp(bytes, cloneByteString.bytes, sizeof(bytes)));
1779 OICFree(cloneByteString.bytes);
1781 OCRepPayloadDestroy(clone);