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 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
25 #include "ocstackinternal.h"
27 #include "oic_malloc.h"
30 #include "gtest/gtest.h"
31 #include <sys/types.h>
38 //-----------------------------------------------------------------------------
40 //-----------------------------------------------------------------------------
47 #include "gtest_helper.h"
51 namespace itst = iotivity::test;
53 #define DEFAULT_CONTEXT_VALUE 0x99
55 //-----------------------------------------------------------------------------
57 //-----------------------------------------------------------------------------
58 static const char TAG[] = "TestHarness";
60 char gDeviceUUID[] = "myDeviceUUID";
61 char gManufacturerName[] = "myName";
62 char gTooLongManufacturerName[] = "extremelylongmanufacturername";
63 char gManufacturerUrl[] = "www.foooooooooooooooo.baaaaaaaaaaaaar";
65 static char pinNumber;
66 static OCDPDev_t peer;
68 std::chrono::seconds const SHORT_TEST_TIMEOUT = std::chrono::seconds(5);
70 //-----------------------------------------------------------------------------
72 //-----------------------------------------------------------------------------
73 extern "C" OCStackApplicationResult asyncDoResourcesCallback(void* ctx,
74 OCDoHandle /*handle*/, OCClientResponse * clientResponse)
76 OIC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback");
78 EXPECT_EQ(OC_STACK_OK, clientResponse->result);
80 if(ctx == (void*)DEFAULT_CONTEXT_VALUE) {
81 OIC_LOG_V(INFO, TAG, "Callback Context recvd successfully");
83 OIC_LOG_V(INFO, TAG, "result = %d", clientResponse->result);
85 return OC_STACK_KEEP_TRANSACTION;
88 static void resultCallback(OCDPDev_t *UNUSED1, OCStackResult UNUSED2)
94 //-----------------------------------------------------------------------------
96 //-----------------------------------------------------------------------------
97 OCEntityHandlerResult entityHandler(OCEntityHandlerFlag /*flag*/,
98 OCEntityHandlerRequest * /*entityHandlerRequest*/,
99 void* /*callbackParam*/)
101 OIC_LOG(INFO, TAG, "Entering entityHandler");
106 //-----------------------------------------------------------------------------
108 //-----------------------------------------------------------------------------
109 void InitStack(OCMode mode)
111 OIC_LOG(INFO, TAG, "Entering InitStack");
113 EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, mode));
114 OIC_LOG(INFO, TAG, "Leaving InitStack");
117 uint8_t InitNumExpectedResources()
120 // When presence is enabled, it is a resource and so is (currently) included
121 // in the returned resource count returned by the OCGetNumberOfResources API.
128 uint8_t InitResourceIndex()
131 // When presence is enabled, it is a resource and so is (currently) included
132 // in the returned resource count returned by the OCGetNumberOfResources API.
133 // The index of the presence resource is 0, so the first user app resource index
140 //-----------------------------------------------------------------------------
142 //-----------------------------------------------------------------------------
144 TEST(StackInit, StackInitNullAddr)
146 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
147 EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
148 EXPECT_EQ(OC_STACK_OK, OCStop());
151 TEST(StackInit, StackInitNullPort)
153 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
154 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
155 EXPECT_EQ(OC_STACK_OK, OCStop());
158 TEST(StackInit, StackInitNullAddrAndPort)
160 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
161 EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
162 EXPECT_EQ(OC_STACK_OK, OCStop());
165 TEST(StackInit, StackInitInvalidMode)
167 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
168 EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
169 EXPECT_EQ(OC_STACK_ERROR, OCStop());
172 TEST(StackStart, StackStartSuccessClient)
174 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
175 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
176 EXPECT_EQ(OC_STACK_OK, OCStop());
179 TEST(StackStart, StackStartSuccessServer)
181 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
182 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
183 EXPECT_EQ(OC_STACK_OK, OCStop());
186 TEST(StackStart, StackStartSuccessClientServer)
188 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
189 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER));
190 EXPECT_EQ(OC_STACK_OK, OCStop());
193 TEST(StackStart, StackStartSuccessiveInits)
195 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
196 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
197 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.2", 5683, OC_SERVER));
198 EXPECT_EQ(OC_STACK_OK, OCStop());
201 TEST(StackStart, SetPlatformInfoValid)
203 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
204 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
206 OCPlatformInfo info =
210 0, 0, 0, 0, 0, 0, 0, 0, 0
212 EXPECT_EQ(OC_STACK_OK, OCSetPlatformInfo(info));
213 EXPECT_EQ(OC_STACK_OK, OCStop());
216 TEST(StackStart, SetPlatformInfoWithClientMode)
218 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
219 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
221 OCPlatformInfo info =
225 0, 0, 0, 0, 0, 0, 0, 0, 0
227 EXPECT_EQ(OC_STACK_ERROR, OCSetPlatformInfo(info));
228 EXPECT_EQ(OC_STACK_OK, OCStop());
231 TEST(StackStart, SetPlatformInfoWithNoPlatformID)
233 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
234 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
236 OCPlatformInfo info =
240 0, 0, 0, 0, 0, 0, 0, 0, 0
243 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
244 EXPECT_EQ(OC_STACK_OK, OCStop());
247 TEST(StackStart, SetPlatformInfoWithNoManufacturerName)
249 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
250 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
252 OCPlatformInfo info =
255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
258 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
259 EXPECT_EQ(OC_STACK_OK, OCStop());
262 TEST(StackStart, SetPlatformInfoWithZeroLengthManufacturerName)
264 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
265 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
267 OCPlatformInfo info =
270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
272 info.manufacturerName = (char *) "";
274 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
275 EXPECT_EQ(OC_STACK_OK, OCStop());
278 TEST(StackStart, SetPlatformInfoWithTooLongManufacName)
280 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
281 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
283 OCPlatformInfo info =
286 gTooLongManufacturerName,
287 0, 0, 0, 0, 0, 0, 0, 0, 0
290 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
291 EXPECT_EQ(OC_STACK_OK, OCStop());
294 TEST(StackStart, SetPlatformInfoWithTooLongManufacURL)
296 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
297 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
298 OCPlatformInfo info =
303 0, 0, 0, 0, 0, 0, 0, 0
306 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
307 EXPECT_EQ(OC_STACK_OK, OCStop());
310 TEST(StackDiscovery, DISABLED_DoResourceDeviceDiscovery)
312 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
313 OCCallbackData cbData;
316 OIC_LOG(INFO, TAG, "Starting DoResourceDeviceDiscovery test ");
317 InitStack(OC_CLIENT);
319 /* Start a discovery query*/
320 char szQueryUri[64] = { 0 };
321 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
322 cbData.cb = asyncDoResourcesCallback;
323 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
325 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
335 EXPECT_EQ(OC_STACK_OK, OCStop());
338 TEST(StackStop, StackStopWithoutInit)
340 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
341 EXPECT_EQ(OC_STACK_ERROR, OCStop());
344 TEST(StackStop, StackStopRepeated)
346 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
347 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
348 EXPECT_EQ(OC_STACK_OK, OCStop());
349 EXPECT_EQ(OC_STACK_ERROR, OCStop());
352 TEST(StackResource, DISABLED_UpdateResourceNullURI)
354 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
355 OCCallbackData cbData;
358 OIC_LOG(INFO, TAG, "Starting UpdateResourceNullURI test");
359 InitStack(OC_CLIENT);
361 /* Start a discovery query*/
362 char szQueryUri[64] = { 0 };
363 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
364 cbData.cb = asyncDoResourcesCallback;
365 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
367 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
377 EXPECT_EQ(OC_STACK_OK, OCStop());
380 TEST(StackResource, CreateResourceBadParams)
382 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
383 OIC_LOG(INFO, TAG, "Starting CreateResourceBadParams test");
384 InitStack(OC_SERVER);
386 OCResourceHandle handle;
388 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(NULL, //&handle,
394 OC_DISCOVERABLE|OC_OBSERVABLE));
396 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
402 OC_DISCOVERABLE|OC_OBSERVABLE));
404 // Property bitmask out of range
405 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
411 128));// invalid bitmask for OCResourceProperty
413 EXPECT_EQ(OC_STACK_OK, OCStop());
416 TEST(StackResource, CreateResourceBadUri)
418 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
419 OIC_LOG(INFO, TAG, "Starting CreateResourceBadUri test");
420 InitStack(OC_SERVER);
422 const char *uri65 = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL";
424 OCResourceHandle handle;
426 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
432 OC_DISCOVERABLE|OC_OBSERVABLE));
434 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
440 OC_DISCOVERABLE|OC_OBSERVABLE));
442 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
448 OC_DISCOVERABLE|OC_OBSERVABLE));
450 EXPECT_EQ(OC_STACK_OK, OCStop());
453 TEST(StackResource, CreateResourceSuccess)
455 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
456 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
457 InitStack(OC_SERVER);
459 OCResourceHandle handle;
460 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
466 OC_DISCOVERABLE|OC_OBSERVABLE));
467 const char *url = OCGetResourceUri(handle);
468 EXPECT_STREQ("/a/led", url);
470 EXPECT_EQ(OC_STACK_OK, OCStop());
473 TEST(StackResource, CreateResourceSuccessWithResourcePolicyPropNone)
475 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
476 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccessWithResourcePolicyPropNone test");
477 InitStack(OC_SERVER);
479 OCResourceHandle handle;
480 // the resource is non-discoverable & non-observable by the client.
481 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
487 OC_RES_PROP_NONE));// the resource is non-discoverable &
488 // non-observable by the client.
489 const char* url = OCGetResourceUri(handle);
490 EXPECT_STREQ("/a/led", url);
492 EXPECT_EQ(OC_STACK_OK, OCStop());
495 TEST(StackResource, CreateResourceWithClientStackMode)
497 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
498 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
499 InitStack(OC_CLIENT);
501 OCResourceHandle handle;
502 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
508 OC_DISCOVERABLE|OC_OBSERVABLE));
510 EXPECT_EQ(OC_STACK_OK, OCStop());
513 TEST(StackResource, CreateResourceFailDuplicateUri)
515 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
516 OIC_LOG(INFO, TAG, "Starting CreateResourceFailDuplicateUri test");
517 InitStack(OC_SERVER);
519 OCResourceHandle handle;
520 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
526 OC_DISCOVERABLE|OC_OBSERVABLE));
527 const char *url = OCGetResourceUri(handle);
528 EXPECT_STREQ("/a/led", url);
530 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
536 OC_DISCOVERABLE|OC_OBSERVABLE));
538 EXPECT_EQ(OC_STACK_OK, OCStop());
541 TEST(StackResource, CreateResourceMultipleResources)
543 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
544 OIC_LOG(INFO, TAG, "Starting CreateResourceMultipleResources test");
545 InitStack(OC_SERVER);
547 OCResourceHandle handle1;
548 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
554 OC_DISCOVERABLE|OC_OBSERVABLE));
556 OCResourceHandle handle2;
557 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
563 OC_DISCOVERABLE|OC_OBSERVABLE));
564 OCResourceHandle handle3;
565 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
571 OC_DISCOVERABLE|OC_OBSERVABLE));
573 const char *url = OCGetResourceUri(handle1);
574 EXPECT_STREQ("/a/led1", url);
576 url = OCGetResourceUri(handle2);
577 EXPECT_STREQ("/a/led2", url);
579 url = OCGetResourceUri(handle3);
580 EXPECT_STREQ("/a/led3", url);
582 EXPECT_EQ(OC_STACK_OK, OCStop());
585 TEST(StackResource, CreateResourceBadResoureType)
587 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
588 OIC_LOG(INFO, TAG, "Starting CreateResourceBadResoureType test");
589 InitStack(OC_SERVER);
591 OCResourceHandle handle;
592 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
598 OC_DISCOVERABLE|OC_OBSERVABLE));
600 OCResourceHandle handle2;
601 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle2,
607 OC_DISCOVERABLE|OC_OBSERVABLE));
609 EXPECT_EQ(OC_STACK_OK, OCStop());
612 TEST(StackResource, CreateResourceGoodResourceType)
614 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
615 OIC_LOG(INFO, TAG, "Starting CreateResourceGoodResourceType test");
616 InitStack(OC_SERVER);
618 OCResourceHandle handle;
619 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
625 OC_DISCOVERABLE|OC_OBSERVABLE));
627 EXPECT_EQ(OC_STACK_OK, OCStop());
630 TEST(StackResource, ResourceTypeName)
632 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
633 OIC_LOG(INFO, TAG, "Starting ResourceTypeName test");
634 InitStack(OC_SERVER);
636 OCResourceHandle handle;
637 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
643 OC_DISCOVERABLE|OC_OBSERVABLE));
645 uint8_t numResourceTypes;
646 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
647 EXPECT_EQ(1, numResourceTypes);
648 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
649 EXPECT_STREQ("core.led", resourceTypeName);
651 // try getting resource type names with an invalid index
652 resourceTypeName = OCGetResourceTypeName(handle, 1);
653 EXPECT_STREQ(NULL, resourceTypeName);
654 // try getting resource type names with an invalid index
655 resourceTypeName = OCGetResourceTypeName(handle, 10);
656 EXPECT_STREQ(NULL, resourceTypeName);
658 EXPECT_EQ(OC_STACK_OK, OCStop());
661 TEST(StackResource, ResourceTypeAttrRepresentation)
663 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
664 OIC_LOG(INFO, TAG, "Starting ResourceTypeAttrRepresentation test");
665 InitStack(OC_SERVER);
667 OCResourceHandle handle;
668 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
674 OC_DISCOVERABLE|OC_OBSERVABLE));
676 uint8_t numResourceTypes;
677 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
678 EXPECT_EQ(1, numResourceTypes);
680 EXPECT_EQ(OC_STACK_OK, OCStop());
683 TEST(StackResource, ResourceTypeInterface)
685 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
686 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterface test");
687 InitStack(OC_SERVER);
689 OCResourceHandle handle;
690 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
696 OC_DISCOVERABLE|OC_OBSERVABLE));
698 uint8_t numResourceInterfaces;
699 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
700 EXPECT_EQ(1, numResourceInterfaces);
701 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
702 EXPECT_STREQ("core.rw", resourceInterfaceName);
704 // try getting resource interface names with an invalid index
705 resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
706 EXPECT_STREQ(NULL, resourceInterfaceName);
707 // try getting resource interface names with an invalid index
708 resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
709 EXPECT_STREQ(NULL, resourceInterfaceName);
711 EXPECT_EQ(OC_STACK_OK, OCStop());
714 TEST(StackResource, ResourceDefaultInterfaceAlwaysFirst)
716 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
718 OIC_LOG(INFO, TAG, "Starting ResourceDefaultInterfaceAlwaysFirst test");
720 InitStack(OC_SERVER);
722 OCResourceHandle handle;
723 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
729 OC_DISCOVERABLE|OC_OBSERVABLE));
730 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
731 OC_RSRVD_INTERFACE_DEFAULT));
732 uint8_t numResourceInterfaces;
733 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
734 EXPECT_EQ(2, numResourceInterfaces);
736 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
737 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
739 const char*interfaceName_2 = OCGetResourceInterfaceName(handle, 1);
740 EXPECT_STREQ("core.rw", interfaceName_2);
742 EXPECT_EQ(OC_STACK_OK, OCStop());
745 TEST(StackResource, ResourceDuplicateDefaultInterfaces)
747 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
749 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateDefaultInterfaces test");
751 InitStack(OC_SERVER);
753 OCResourceHandle handle;
754 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
760 OC_DISCOVERABLE|OC_OBSERVABLE));
762 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
763 OC_RSRVD_INTERFACE_DEFAULT));
764 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
765 OC_RSRVD_INTERFACE_DEFAULT));
767 uint8_t numResourceInterfaces;
768 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
769 EXPECT_EQ(2, numResourceInterfaces);
771 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
772 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
774 EXPECT_EQ(OC_STACK_OK, OCStop());
777 TEST(StackResource, ResourceDuplicateNonDefaultInterfaces)
779 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
781 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateInterfaces test");
783 InitStack(OC_SERVER);
785 OCResourceHandle handle;
786 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
792 OC_DISCOVERABLE|OC_OBSERVABLE));
794 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
796 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
799 uint8_t numResourceInterfaces;
800 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
801 EXPECT_EQ(1, numResourceInterfaces);
803 EXPECT_EQ(OC_STACK_OK, OCStop());
806 TEST(StackResource, ResourceTypeInterfaceMethods)
808 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
809 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterfaceMethods test");
810 InitStack(OC_SERVER);
812 OCResourceHandle handle;
813 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
819 OC_DISCOVERABLE|OC_OBSERVABLE));
821 uint8_t numResourceInterfaces;
822 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
823 EXPECT_EQ(1, numResourceInterfaces);
825 EXPECT_EQ(OC_STACK_OK, OCStop());
828 TEST(StackResource, GetResourceProperties)
830 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
831 OIC_LOG(INFO, TAG, "Starting GetResourceProperties test");
832 InitStack(OC_SERVER);
834 OCResourceHandle handle;
835 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
841 OC_DISCOVERABLE|OC_OBSERVABLE));
843 EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
844 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
846 EXPECT_EQ(OC_STACK_OK, OCStop());
849 TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
851 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
852 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResourceBad test");
853 InitStack(OC_SERVER);
854 uint8_t numResources = 0;
855 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
857 OCResourceHandle handle;
858 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
864 OC_DISCOVERABLE|OC_OBSERVABLE));
865 const char *url = OCGetResourceUri(handle);
866 EXPECT_STREQ("/a1/led", url);
868 //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
869 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
870 uint8_t numExpectedResources = 0;
872 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
873 EXPECT_EQ(numExpectedResources, numResources);
875 EXPECT_EQ(OC_STACK_OK, OCStop());
878 TEST(StackResource, StackTestResourceDiscoverOneResource)
880 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
881 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResource test");
882 InitStack(OC_SERVER);
884 OCResourceHandle handle;
885 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
891 OC_DISCOVERABLE|OC_OBSERVABLE));
892 const char *url = OCGetResourceUri(handle);
893 EXPECT_STREQ("/a/led", url);
895 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
896 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
898 EXPECT_EQ(OC_STACK_OK, OCStop());
901 TEST(StackResource, StackTestResourceDiscoverManyResources)
903 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
904 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverManyResources test");
905 InitStack(OC_SERVER);
907 OCResourceHandle handle1;
908 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
915 const char *url = OCGetResourceUri(handle1);
916 EXPECT_STREQ("/a/led1", url);
918 OCResourceHandle handle2;
919 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
925 OC_DISCOVERABLE|OC_OBSERVABLE));
926 url = OCGetResourceUri(handle2);
927 EXPECT_STREQ("/a/led2", url);
929 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
930 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
932 OCResourceHandle handle3;
933 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
939 OC_DISCOVERABLE|OC_OBSERVABLE));
940 url = OCGetResourceUri(handle3);
941 EXPECT_STREQ("/a/led3", url);
943 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_LL));
944 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_BATCH));
946 OCResourceHandle handle4;
947 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
954 url = OCGetResourceUri(handle4);
955 EXPECT_STREQ("/a/led4", url);
957 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
958 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_LL));
959 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_BATCH));
961 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
963 EXPECT_EQ(OC_STACK_OK, OCStop());
966 TEST(StackBind, BindResourceTypeNameBad)
968 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
969 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameBad test");
970 InitStack(OC_SERVER);
972 OCResourceHandle handle;
973 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
979 OC_DISCOVERABLE|OC_OBSERVABLE));
981 uint8_t numResourceTypes;
982 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
983 EXPECT_EQ(1, numResourceTypes);
984 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
985 EXPECT_STREQ("core.led", resourceTypeName);
987 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
989 EXPECT_EQ(OC_STACK_OK, OCStop());
992 TEST(StackBind, BindResourceTypeNameGood)
994 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
995 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood test");
996 InitStack(OC_SERVER);
998 OCResourceHandle handle;
999 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1005 OC_DISCOVERABLE|OC_OBSERVABLE));
1007 uint8_t numResourceTypes;
1008 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1009 EXPECT_EQ(1, numResourceTypes);
1010 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1011 EXPECT_STREQ("core.led", resourceTypeName);
1013 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1014 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1015 EXPECT_EQ(2, numResourceTypes);
1016 resourceTypeName = OCGetResourceTypeName(handle, 1);
1017 EXPECT_STREQ("core.brightled", resourceTypeName);
1019 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1020 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1021 EXPECT_EQ(3, numResourceTypes);
1022 resourceTypeName = OCGetResourceTypeName(handle, 2);
1023 EXPECT_STREQ("core.reallybrightled", resourceTypeName);
1025 EXPECT_EQ(OC_STACK_OK, OCStop());
1028 TEST(StackBind, BindResourceTypeAttribRepGood)
1030 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1031 OIC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
1032 InitStack(OC_SERVER);
1034 OCResourceHandle handle;
1035 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1041 OC_DISCOVERABLE|OC_OBSERVABLE));
1043 uint8_t numResourceTypes;
1044 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1045 EXPECT_EQ(1, numResourceTypes);
1047 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1048 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1049 EXPECT_EQ(2, numResourceTypes);
1051 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1052 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1053 EXPECT_EQ(3, numResourceTypes);
1055 EXPECT_EQ(OC_STACK_OK, OCStop());
1059 TEST(StackBind, BindResourceInterfaceNameBad)
1061 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1062 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
1063 InitStack(OC_SERVER);
1065 OCResourceHandle handle;
1066 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1072 OC_DISCOVERABLE|OC_OBSERVABLE));
1074 uint8_t numResourceInterfaces;
1075 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1076 EXPECT_EQ(1, numResourceInterfaces);
1077 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
1078 EXPECT_STREQ("core.rw", resourceInterfaceName);
1080 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, NULL));
1082 EXPECT_EQ(OC_STACK_OK, OCStop());
1085 TEST(StackBind, BindResourceInterfaceNameGood)
1087 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1088 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
1089 InitStack(OC_SERVER);
1091 OCResourceHandle handle;
1092 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1098 OC_DISCOVERABLE|OC_OBSERVABLE));
1100 uint8_t numResourceInterfaces;
1101 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1102 EXPECT_EQ(1, numResourceInterfaces);
1103 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
1104 EXPECT_STREQ("core.rw", resourceInterfaceName);
1106 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1108 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1109 EXPECT_EQ(2, numResourceInterfaces);
1110 resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1111 EXPECT_STREQ("core.r", resourceInterfaceName);
1113 EXPECT_EQ(OC_STACK_OK, OCStop());
1116 TEST(StackBind, BindResourceInterfaceMethodsBad)
1118 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1119 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
1120 InitStack(OC_SERVER);
1122 OCResourceHandle handle;
1123 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1129 OC_DISCOVERABLE|OC_OBSERVABLE));
1131 uint8_t numResourceInterfaces;
1132 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1133 EXPECT_EQ(1, numResourceInterfaces);
1135 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, 0));
1137 EXPECT_EQ(OC_STACK_OK, OCStop());
1140 TEST(StackBind, BindResourceInterfaceMethodsGood)
1142 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1143 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
1144 InitStack(OC_SERVER);
1146 OCResourceHandle handle;
1147 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1153 OC_DISCOVERABLE|OC_OBSERVABLE));
1155 uint8_t numResourceInterfaces;
1156 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1157 EXPECT_EQ(1, numResourceInterfaces);
1159 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1161 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1162 EXPECT_EQ(2, numResourceInterfaces);
1164 EXPECT_EQ(OC_STACK_OK, OCStop());
1167 TEST(StackBind, BindContainedResourceBad)
1169 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1170 OIC_LOG(INFO, TAG, "Starting BindContainedResourceBad test");
1171 InitStack(OC_SERVER);
1173 OCResourceHandle containerHandle;
1174 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1180 OC_DISCOVERABLE|OC_OBSERVABLE));
1182 OCResourceHandle handle0;
1183 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1189 OC_DISCOVERABLE|OC_OBSERVABLE));
1191 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResource(containerHandle, containerHandle));
1193 EXPECT_EQ(OC_STACK_ERROR, OCBindResource((OCResourceHandle) 0, handle0));
1195 EXPECT_EQ(OC_STACK_OK, OCStop());
1198 TEST(StackBind, BindContainedResourceGood)
1200 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1201 OIC_LOG(INFO, TAG, "Starting BindContainedResourceGood test");
1202 InitStack(OC_SERVER);
1204 uint8_t numResources = 0;
1205 uint8_t numExpectedResources = 0;
1207 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1209 OCResourceHandle containerHandle;
1210 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1216 OC_DISCOVERABLE|OC_OBSERVABLE));
1217 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1218 EXPECT_EQ(++numExpectedResources, numResources);
1220 OCResourceHandle handle0;
1221 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1227 OC_DISCOVERABLE|OC_OBSERVABLE));
1228 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1229 EXPECT_EQ(++numExpectedResources, numResources);
1231 OCResourceHandle handle1;
1232 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1238 OC_DISCOVERABLE|OC_OBSERVABLE));
1239 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1240 EXPECT_EQ(++numExpectedResources, numResources);
1242 OCResourceHandle handle2;
1243 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1249 OC_DISCOVERABLE|OC_OBSERVABLE));
1250 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1251 EXPECT_EQ(++numExpectedResources, numResources);
1253 OCResourceHandle handle3;
1254 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1260 OC_DISCOVERABLE|OC_OBSERVABLE));
1261 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1262 EXPECT_EQ(++numExpectedResources, numResources);
1264 OCResourceHandle handle4;
1265 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1271 OC_DISCOVERABLE|OC_OBSERVABLE));
1272 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1273 EXPECT_EQ(++numExpectedResources, numResources);
1275 OCResourceHandle handle5;
1276 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1282 OC_DISCOVERABLE|OC_OBSERVABLE));
1283 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1284 EXPECT_EQ(++numExpectedResources, numResources);
1287 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle0));
1288 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle1));
1289 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle2));
1290 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle3));
1291 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle4));
1292 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle5));
1294 EXPECT_EQ(handle0, OCGetResourceHandleFromCollection(containerHandle, 0));
1295 EXPECT_EQ(handle1, OCGetResourceHandleFromCollection(containerHandle, 1));
1296 EXPECT_EQ(handle2, OCGetResourceHandleFromCollection(containerHandle, 2));
1297 EXPECT_EQ(handle3, OCGetResourceHandleFromCollection(containerHandle, 3));
1298 EXPECT_EQ(handle4, OCGetResourceHandleFromCollection(containerHandle, 4));
1299 EXPECT_EQ(handle5, OCGetResourceHandleFromCollection(containerHandle, 5));
1301 EXPECT_EQ(OC_STACK_OK, OCStop());
1305 TEST(StackBind, BindEntityHandlerBad)
1307 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1308 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerBad test");
1309 InitStack(OC_SERVER);
1311 OCResourceHandle handle;
1312 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1318 OC_DISCOVERABLE|OC_OBSERVABLE));
1320 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL, NULL));
1322 EXPECT_EQ(OC_STACK_OK, OCStop());
1325 TEST(StackBind, BindEntityHandlerGood)
1327 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1328 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerGood test");
1329 InitStack(OC_SERVER);
1331 OCResourceHandle handle;
1332 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1338 OC_DISCOVERABLE|OC_OBSERVABLE));
1340 OCEntityHandler myHandler = entityHandler;
1342 EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler, NULL));
1344 EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
1346 EXPECT_EQ(OC_STACK_OK, OCStop());
1349 TEST(StackResourceAccess, GetResourceByIndex)
1351 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1352 OIC_LOG(INFO, TAG, "Starting GetResourceByIndex test");
1353 InitStack(OC_SERVER);
1355 uint8_t numResources = 0;
1356 uint8_t numExpectedResources = 0;
1357 uint8_t resourceIndex = 0;
1358 uint8_t prevResources = 0;
1359 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1360 prevResources = numExpectedResources;
1361 OCResourceHandle containerHandle;
1362 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1368 OC_DISCOVERABLE|OC_OBSERVABLE));
1369 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1370 EXPECT_EQ(++numExpectedResources, numResources);
1372 OCResourceHandle handle0;
1373 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1379 OC_DISCOVERABLE|OC_OBSERVABLE));
1380 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1381 EXPECT_EQ(++numExpectedResources, numResources);
1383 OCResourceHandle handle1;
1384 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1390 OC_DISCOVERABLE|OC_OBSERVABLE));
1391 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1392 EXPECT_EQ(++numExpectedResources, numResources);
1394 OCResourceHandle handle2;
1395 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1401 OC_DISCOVERABLE|OC_OBSERVABLE));
1402 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1403 EXPECT_EQ(++numExpectedResources, numResources);
1405 OCResourceHandle handle3;
1406 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1412 OC_DISCOVERABLE|OC_OBSERVABLE));
1413 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1414 EXPECT_EQ(++numExpectedResources, numResources);
1416 OCResourceHandle handle4;
1417 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1423 OC_DISCOVERABLE|OC_OBSERVABLE));
1424 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1425 EXPECT_EQ(++numExpectedResources, numResources);
1427 OCResourceHandle handle5;
1428 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1434 OC_DISCOVERABLE|OC_OBSERVABLE));
1435 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1436 EXPECT_EQ(++numExpectedResources, numResources);
1437 resourceIndex += prevResources;
1438 EXPECT_EQ(containerHandle, OCGetResourceHandle(resourceIndex));
1439 EXPECT_EQ(handle0, OCGetResourceHandle(++resourceIndex));
1440 EXPECT_EQ(handle1, OCGetResourceHandle(++resourceIndex));
1441 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1442 EXPECT_EQ(handle3, OCGetResourceHandle(++resourceIndex));
1443 EXPECT_EQ(handle4, OCGetResourceHandle(++resourceIndex));
1444 EXPECT_EQ(handle5, OCGetResourceHandle(++resourceIndex));
1446 EXPECT_EQ(OC_STACK_OK, OCStop());
1449 TEST(StackResourceAccess, DeleteHeadResource)
1451 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1452 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource test");
1453 InitStack(OC_SERVER);
1455 uint8_t numResources = 0;
1456 uint8_t numExpectedResources = 0;
1458 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1460 OCResourceHandle handle0;
1461 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1467 OC_DISCOVERABLE|OC_OBSERVABLE));
1468 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1469 EXPECT_EQ(++numExpectedResources, numResources);
1471 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1472 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1473 EXPECT_EQ(--numExpectedResources, numResources);
1475 EXPECT_EQ(OC_STACK_OK, OCStop());
1478 TEST(StackResourceAccess, DeleteHeadResource2)
1480 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1481 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource2 test");
1482 InitStack(OC_SERVER);
1484 uint8_t numResources = 0;
1485 uint8_t numExpectedResources = 0;
1487 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1488 OCResourceHandle handle0;
1489 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1495 OC_DISCOVERABLE|OC_OBSERVABLE));
1496 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1497 EXPECT_EQ(++numExpectedResources, numResources);
1499 OCResourceHandle handle1;
1500 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1506 OC_DISCOVERABLE|OC_OBSERVABLE));
1507 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1508 EXPECT_EQ(++numExpectedResources, numResources);
1510 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1511 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1512 EXPECT_EQ(--numExpectedResources, numResources);
1514 EXPECT_EQ(handle1, OCGetResourceHandle(numResources - 1));
1516 EXPECT_EQ(OC_STACK_OK, OCStop());
1520 TEST(StackResourceAccess, DeleteLastResource)
1522 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1523 OIC_LOG(INFO, TAG, "Starting DeleteLastResource test");
1524 InitStack(OC_SERVER);
1526 uint8_t numResources = 0;
1527 uint8_t numExpectedResources = 0;
1529 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1531 OCResourceHandle handle0;
1532 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1538 OC_DISCOVERABLE|OC_OBSERVABLE));
1539 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1540 EXPECT_EQ(++numExpectedResources, numResources);
1542 OCResourceHandle handle1;
1543 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1549 OC_DISCOVERABLE|OC_OBSERVABLE));
1550 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1551 EXPECT_EQ(++numExpectedResources, numResources);
1553 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1554 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1555 EXPECT_EQ(--numExpectedResources, numResources);
1557 EXPECT_EQ(handle0, OCGetResourceHandle(numResources - 1));
1559 OCResourceHandle handle2;
1560 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1566 OC_DISCOVERABLE|OC_OBSERVABLE));
1567 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1568 EXPECT_EQ(++numExpectedResources, numResources);
1570 EXPECT_EQ(OC_STACK_OK, OCStop());
1573 TEST(StackResourceAccess, DeleteMiddleResource)
1575 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1576 OIC_LOG(INFO, TAG, "Starting DeleteMiddleResource test");
1577 InitStack(OC_SERVER);
1579 uint8_t numResources = 0;
1580 uint8_t numExpectedResources = 0;
1581 uint8_t resourceIndex = InitResourceIndex();
1583 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1584 resourceIndex = numExpectedResources;
1585 OCResourceHandle handle0;
1586 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1592 OC_DISCOVERABLE|OC_OBSERVABLE));
1593 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1594 EXPECT_EQ(++numExpectedResources, numResources);
1596 OCResourceHandle handle1;
1597 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1603 OC_DISCOVERABLE|OC_OBSERVABLE));
1604 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1605 EXPECT_EQ(++numExpectedResources, numResources);
1607 OCResourceHandle handle2;
1608 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1614 OC_DISCOVERABLE|OC_OBSERVABLE));
1615 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1616 EXPECT_EQ(++numExpectedResources, numResources);
1618 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1619 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1620 EXPECT_EQ(--numExpectedResources, numResources);
1622 EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
1623 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1625 // Make sure the resource elements are still correct
1626 uint8_t numResourceInterfaces;
1627 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle2, &numResourceInterfaces));
1628 EXPECT_EQ(1, numResourceInterfaces);
1629 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle2, 0);
1630 EXPECT_STREQ("core.rw", resourceInterfaceName);
1632 EXPECT_EQ(OC_STACK_OK, OCStop());
1635 TEST(PODTests, OCHeaderOption)
1637 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1640 TEST(PODTests, OCCallbackData)
1642 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1645 TEST(OCDoDirectPairingTests, Nullpeer)
1647 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(NULL, pmSel, &pinNumber, &resultCallback));
1650 TEST(OCDoDirectPairingTests, NullCallback)
1652 EXPECT_EQ(OC_STACK_INVALID_CALLBACK,OCDoDirectPairing(&peer, pmSel, &pinNumber, NULL));
1655 TEST(OCDoDirectPairingTests, NullpinNumber)
1657 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(&peer, pmSel, NULL, &resultCallback));