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 extern "C" OCStackApplicationResult discoveryCallback(void* ctx,
95 OCDoHandle /*handle*/, OCClientResponse * clientResponse)
97 OIC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback");
99 EXPECT_EQ(OC_STACK_OK, clientResponse->result);
101 if(ctx == (void*)DEFAULT_CONTEXT_VALUE)
103 OIC_LOG_V(INFO, TAG, "Callback Context recvd successfully");
106 OIC_LOG_V(INFO, TAG, "result = %d", clientResponse->result);
108 OCDiscoveryPayload *discoveryPayload = ((OCDiscoveryPayload *) clientResponse->payload);
109 EXPECT_TRUE(discoveryPayload != NULL);
110 OCResourcePayload *res = discoveryPayload->resources;
112 for (OCResourcePayload *res1 = discoveryPayload->resources; res1; res1 = res1->next)
117 EXPECT_EQ("/a/led1", res->uri);
119 EXPECT_EQ("/a/led2", res->uri);
121 EXPECT_EQ("/a/led3", res->uri);
123 EXPECT_TRUE(res == NULL);
125 return OC_STACK_KEEP_TRANSACTION;
128 //-----------------------------------------------------------------------------
130 //-----------------------------------------------------------------------------
131 OCEntityHandlerResult entityHandler(OCEntityHandlerFlag /*flag*/,
132 OCEntityHandlerRequest * /*entityHandlerRequest*/,
133 void* /*callbackParam*/)
135 OIC_LOG(INFO, TAG, "Entering entityHandler");
140 //-----------------------------------------------------------------------------
142 //-----------------------------------------------------------------------------
143 void InitStack(OCMode mode)
145 OIC_LOG(INFO, TAG, "Entering InitStack");
147 EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, mode));
148 OIC_LOG(INFO, TAG, "Leaving InitStack");
151 uint8_t InitNumExpectedResources()
154 // When presence is enabled, it is a resource and so is (currently) included
155 // in the returned resource count returned by the OCGetNumberOfResources API.
162 uint8_t InitResourceIndex()
165 // When presence is enabled, it is a resource and so is (currently) included
166 // in the returned resource count returned by the OCGetNumberOfResources API.
167 // The index of the presence resource is 0, so the first user app resource index
174 //-----------------------------------------------------------------------------
176 //-----------------------------------------------------------------------------
178 TEST(StackInit, StackInitNullAddr)
180 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
181 EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
182 EXPECT_EQ(OC_STACK_OK, OCStop());
185 TEST(StackInit, StackInitNullPort)
187 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
188 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
189 EXPECT_EQ(OC_STACK_OK, OCStop());
192 TEST(StackInit, StackInitNullAddrAndPort)
194 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
195 EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
196 EXPECT_EQ(OC_STACK_OK, OCStop());
199 TEST(StackInit, StackInitInvalidMode)
201 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
202 EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
203 EXPECT_EQ(OC_STACK_ERROR, OCStop());
206 TEST(StackStart, StackStartSuccessClient)
208 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
209 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
210 EXPECT_EQ(OC_STACK_OK, OCStop());
213 TEST(StackStart, StackStartSuccessServer)
215 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
216 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
217 EXPECT_EQ(OC_STACK_OK, OCStop());
220 TEST(StackStart, StackStartSuccessClientServer)
222 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
223 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER));
224 EXPECT_EQ(OC_STACK_OK, OCStop());
227 TEST(StackStart, StackStartSuccessiveInits)
229 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
230 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
231 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.2", 5683, OC_SERVER));
232 EXPECT_EQ(OC_STACK_OK, OCStop());
235 TEST(StackStart, SetPlatformInfoValid)
237 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
238 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
240 OCPlatformInfo info =
244 0, 0, 0, 0, 0, 0, 0, 0, 0
246 EXPECT_EQ(OC_STACK_OK, OCSetPlatformInfo(info));
247 EXPECT_EQ(OC_STACK_OK, OCStop());
250 TEST(StackStart, SetPlatformInfoWithClientMode)
252 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
253 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
255 OCPlatformInfo info =
259 0, 0, 0, 0, 0, 0, 0, 0, 0
261 EXPECT_EQ(OC_STACK_ERROR, OCSetPlatformInfo(info));
262 EXPECT_EQ(OC_STACK_OK, OCStop());
265 TEST(StackStart, SetPlatformInfoWithNoPlatformID)
267 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
268 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
270 OCPlatformInfo info =
274 0, 0, 0, 0, 0, 0, 0, 0, 0
277 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
278 EXPECT_EQ(OC_STACK_OK, OCStop());
281 TEST(StackStart, SetPlatformInfoWithNoManufacturerName)
283 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
284 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
286 OCPlatformInfo info =
289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
292 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
293 EXPECT_EQ(OC_STACK_OK, OCStop());
296 TEST(StackStart, SetPlatformInfoWithZeroLengthManufacturerName)
298 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
299 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
301 OCPlatformInfo info =
304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
306 info.manufacturerName = (char *) "";
308 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
309 EXPECT_EQ(OC_STACK_OK, OCStop());
312 TEST(StackStart, SetPlatformInfoWithTooLongManufacName)
314 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
315 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
317 OCPlatformInfo info =
320 gTooLongManufacturerName,
321 0, 0, 0, 0, 0, 0, 0, 0, 0
324 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
325 EXPECT_EQ(OC_STACK_OK, OCStop());
328 TEST(StackStart, SetPlatformInfoWithTooLongManufacURL)
330 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
331 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
332 OCPlatformInfo info =
337 0, 0, 0, 0, 0, 0, 0, 0
340 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
341 EXPECT_EQ(OC_STACK_OK, OCStop());
344 TEST(StackDiscovery, DISABLED_DoResourceDeviceDiscovery)
346 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
347 OCCallbackData cbData;
350 OIC_LOG(INFO, TAG, "Starting DoResourceDeviceDiscovery test ");
351 InitStack(OC_CLIENT);
353 /* Start a discovery query*/
354 char szQueryUri[64] = { 0 };
355 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
356 cbData.cb = asyncDoResourcesCallback;
357 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
359 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
369 EXPECT_EQ(OC_STACK_OK, OCStop());
372 TEST(StackStop, StackStopWithoutInit)
374 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
375 EXPECT_EQ(OC_STACK_ERROR, OCStop());
378 TEST(StackStop, StackStopRepeated)
380 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
381 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
382 EXPECT_EQ(OC_STACK_OK, OCStop());
383 EXPECT_EQ(OC_STACK_ERROR, OCStop());
386 TEST(StackResource, DISABLED_UpdateResourceNullURI)
388 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
389 OCCallbackData cbData;
392 OIC_LOG(INFO, TAG, "Starting UpdateResourceNullURI test");
393 InitStack(OC_CLIENT);
395 /* Start a discovery query*/
396 char szQueryUri[64] = { 0 };
397 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
398 cbData.cb = asyncDoResourcesCallback;
399 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
401 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
411 EXPECT_EQ(OC_STACK_OK, OCStop());
414 TEST(StackResource, CreateResourceBadParams)
416 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
417 OIC_LOG(INFO, TAG, "Starting CreateResourceBadParams test");
418 InitStack(OC_SERVER);
420 OCResourceHandle handle;
422 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(NULL, //&handle,
428 OC_DISCOVERABLE|OC_OBSERVABLE));
430 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
436 OC_DISCOVERABLE|OC_OBSERVABLE));
438 // Property bitmask out of range
439 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
445 128));// invalid bitmask for OCResourceProperty
447 EXPECT_EQ(OC_STACK_OK, OCStop());
450 TEST(StackResource, CreateResourceBadUri)
452 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
453 OIC_LOG(INFO, TAG, "Starting CreateResourceBadUri test");
454 InitStack(OC_SERVER);
456 const char *uri257 = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVW";
458 OCResourceHandle handle;
460 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
466 OC_DISCOVERABLE|OC_OBSERVABLE));
468 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
474 OC_DISCOVERABLE|OC_OBSERVABLE));
476 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
482 OC_DISCOVERABLE|OC_OBSERVABLE));
484 EXPECT_EQ(OC_STACK_OK, OCStop());
487 TEST(StackResource, CreateResourceSuccess)
489 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
490 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
491 InitStack(OC_SERVER);
493 OCResourceHandle handle;
494 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
500 OC_DISCOVERABLE|OC_OBSERVABLE));
501 const char *url = OCGetResourceUri(handle);
502 EXPECT_STREQ("/a/led", url);
504 EXPECT_EQ(OC_STACK_OK, OCStop());
507 TEST(StackResource, CreateResourceSuccessWithResourcePolicyPropNone)
509 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
510 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccessWithResourcePolicyPropNone test");
511 InitStack(OC_SERVER);
513 OCResourceHandle handle;
514 // the resource is non-discoverable & non-observable by the client.
515 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
521 OC_RES_PROP_NONE));// the resource is non-discoverable &
522 // non-observable by the client.
523 const char* url = OCGetResourceUri(handle);
524 EXPECT_STREQ("/a/led", url);
526 EXPECT_EQ(OC_STACK_OK, OCStop());
529 TEST(StackResource, CreateResourceWithClientStackMode)
531 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
532 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
533 InitStack(OC_CLIENT);
535 OCResourceHandle handle;
536 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
542 OC_DISCOVERABLE|OC_OBSERVABLE));
544 EXPECT_EQ(OC_STACK_OK, OCStop());
547 TEST(StackResource, CreateResourceFailDuplicateUri)
549 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
550 OIC_LOG(INFO, TAG, "Starting CreateResourceFailDuplicateUri test");
551 InitStack(OC_SERVER);
553 OCResourceHandle handle;
554 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
560 OC_DISCOVERABLE|OC_OBSERVABLE));
561 const char *url = OCGetResourceUri(handle);
562 EXPECT_STREQ("/a/led", url);
564 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
570 OC_DISCOVERABLE|OC_OBSERVABLE));
572 EXPECT_EQ(OC_STACK_OK, OCStop());
575 TEST(StackResource, CreateResourceMultipleResources)
577 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
578 OIC_LOG(INFO, TAG, "Starting CreateResourceMultipleResources test");
579 InitStack(OC_SERVER);
581 OCResourceHandle handle1;
582 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
588 OC_DISCOVERABLE|OC_OBSERVABLE));
590 OCResourceHandle handle2;
591 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
597 OC_DISCOVERABLE|OC_OBSERVABLE));
598 OCResourceHandle handle3;
599 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
605 OC_DISCOVERABLE|OC_OBSERVABLE));
607 const char *url = OCGetResourceUri(handle1);
608 EXPECT_STREQ("/a/led1", url);
610 url = OCGetResourceUri(handle2);
611 EXPECT_STREQ("/a/led2", url);
613 url = OCGetResourceUri(handle3);
614 EXPECT_STREQ("/a/led3", url);
616 EXPECT_EQ(OC_STACK_OK, OCStop());
619 TEST(StackResource, CreateResourceBadResoureType)
621 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
622 OIC_LOG(INFO, TAG, "Starting CreateResourceBadResoureType test");
623 InitStack(OC_SERVER);
625 OCResourceHandle handle;
626 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
632 OC_DISCOVERABLE|OC_OBSERVABLE));
634 OCResourceHandle handle2;
635 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle2,
641 OC_DISCOVERABLE|OC_OBSERVABLE));
643 EXPECT_EQ(OC_STACK_OK, OCStop());
646 TEST(StackResource, CreateResourceGoodResourceType)
648 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
649 OIC_LOG(INFO, TAG, "Starting CreateResourceGoodResourceType test");
650 InitStack(OC_SERVER);
652 OCResourceHandle handle;
653 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
659 OC_DISCOVERABLE|OC_OBSERVABLE));
661 EXPECT_EQ(OC_STACK_OK, OCStop());
664 TEST(StackResource, ResourceTypeName)
666 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
667 OIC_LOG(INFO, TAG, "Starting ResourceTypeName test");
668 InitStack(OC_SERVER);
670 OCResourceHandle handle;
671 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
677 OC_DISCOVERABLE|OC_OBSERVABLE));
679 uint8_t numResourceTypes;
680 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
681 EXPECT_EQ(1, numResourceTypes);
682 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
683 EXPECT_STREQ("core.led", resourceTypeName);
685 // try getting resource type names with an invalid index
686 resourceTypeName = OCGetResourceTypeName(handle, 1);
687 EXPECT_STREQ(NULL, resourceTypeName);
688 // try getting resource type names with an invalid index
689 resourceTypeName = OCGetResourceTypeName(handle, 10);
690 EXPECT_STREQ(NULL, resourceTypeName);
692 EXPECT_EQ(OC_STACK_OK, OCStop());
695 TEST(StackResource, ResourceTypeAttrRepresentation)
697 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
698 OIC_LOG(INFO, TAG, "Starting ResourceTypeAttrRepresentation test");
699 InitStack(OC_SERVER);
701 OCResourceHandle handle;
702 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
708 OC_DISCOVERABLE|OC_OBSERVABLE));
710 uint8_t numResourceTypes;
711 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
712 EXPECT_EQ(1, numResourceTypes);
714 EXPECT_EQ(OC_STACK_OK, OCStop());
717 TEST(StackResource, ResourceTypeInterface)
719 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
720 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterface test");
721 InitStack(OC_SERVER);
723 OCResourceHandle handle;
724 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
730 OC_DISCOVERABLE|OC_OBSERVABLE));
732 uint8_t numResourceInterfaces;
733 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
734 EXPECT_EQ(2, numResourceInterfaces);
735 const char *resourceInterfaceName1 = OCGetResourceInterfaceName(handle, 0);
736 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, resourceInterfaceName1);
737 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
738 EXPECT_STREQ("core.rw", resourceInterfaceName);
740 // try getting resource interface names with an invalid index
741 resourceInterfaceName = OCGetResourceInterfaceName(handle, 2);
742 EXPECT_STREQ(NULL, resourceInterfaceName);
743 // try getting resource interface names with an invalid index
744 resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
745 EXPECT_STREQ(NULL, resourceInterfaceName);
747 EXPECT_EQ(OC_STACK_OK, OCStop());
750 TEST(StackResource, ResourceDefaultInterfaceAlwaysFirst)
752 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
754 OIC_LOG(INFO, TAG, "Starting ResourceDefaultInterfaceAlwaysFirst test");
756 InitStack(OC_SERVER);
758 OCResourceHandle handle;
759 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
765 OC_DISCOVERABLE|OC_OBSERVABLE));
766 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
767 OC_RSRVD_INTERFACE_DEFAULT));
768 uint8_t numResourceInterfaces;
769 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
770 EXPECT_EQ(2, numResourceInterfaces);
772 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
773 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
775 const char*interfaceName_2 = OCGetResourceInterfaceName(handle, 1);
776 EXPECT_STREQ("core.rw", interfaceName_2);
778 EXPECT_EQ(OC_STACK_OK, OCStop());
781 TEST(StackResource, ResourceDuplicateDefaultInterfaces)
783 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
785 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateDefaultInterfaces test");
787 InitStack(OC_SERVER);
789 OCResourceHandle handle;
790 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
796 OC_DISCOVERABLE|OC_OBSERVABLE));
798 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
799 OC_RSRVD_INTERFACE_DEFAULT));
800 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
801 OC_RSRVD_INTERFACE_DEFAULT));
803 uint8_t numResourceInterfaces;
804 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
805 EXPECT_EQ(2, numResourceInterfaces);
807 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
808 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
810 EXPECT_EQ(OC_STACK_OK, OCStop());
813 TEST(StackResource, ResourceDuplicateNonDefaultInterfaces)
815 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
817 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateInterfaces test");
819 InitStack(OC_SERVER);
821 OCResourceHandle handle;
822 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
828 OC_DISCOVERABLE|OC_OBSERVABLE));
830 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
832 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
835 uint8_t numResourceInterfaces;
836 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
837 EXPECT_EQ(2, numResourceInterfaces);
839 EXPECT_EQ(OC_STACK_OK, OCStop());
842 TEST(StackResource, ResourceTypeInterfaceMethods)
844 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
845 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterfaceMethods test");
846 InitStack(OC_SERVER);
848 OCResourceHandle handle;
849 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
855 OC_DISCOVERABLE|OC_OBSERVABLE));
857 uint8_t numResourceInterfaces;
858 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
859 EXPECT_EQ(2, numResourceInterfaces);
861 EXPECT_EQ(OC_STACK_OK, OCStop());
864 TEST(StackResource, GetResourceProperties)
866 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
867 OIC_LOG(INFO, TAG, "Starting GetResourceProperties test");
868 InitStack(OC_SERVER);
870 OCResourceHandle handle;
871 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
877 OC_DISCOVERABLE|OC_OBSERVABLE));
879 EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
880 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
882 EXPECT_EQ(OC_STACK_OK, OCStop());
885 TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
887 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
888 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResourceBad test");
889 InitStack(OC_SERVER);
890 uint8_t numResources = 0;
891 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
893 OCResourceHandle handle;
894 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
900 OC_DISCOVERABLE|OC_OBSERVABLE));
901 const char *url = OCGetResourceUri(handle);
902 EXPECT_STREQ("/a1/led", url);
904 //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
905 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
906 uint8_t numExpectedResources = 0;
908 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
909 EXPECT_EQ(numExpectedResources, numResources);
911 EXPECT_EQ(OC_STACK_OK, OCStop());
914 TEST(StackResource, StackTestResourceDiscoverOneResource)
916 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
917 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResource test");
918 InitStack(OC_SERVER);
920 OCResourceHandle handle;
921 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
927 OC_DISCOVERABLE|OC_OBSERVABLE));
928 const char *url = OCGetResourceUri(handle);
929 EXPECT_STREQ("/a/led", url);
931 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
932 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
934 EXPECT_EQ(OC_STACK_OK, OCStop());
937 TEST(StackResource, StackTestResourceDiscoverManyResources)
939 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
940 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverManyResources test");
941 InitStack(OC_SERVER);
943 OCResourceHandle handle1;
944 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
951 const char *url = OCGetResourceUri(handle1);
952 EXPECT_STREQ("/a/led1", url);
954 OCResourceHandle handle2;
955 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
961 OC_DISCOVERABLE|OC_OBSERVABLE));
962 url = OCGetResourceUri(handle2);
963 EXPECT_STREQ("/a/led2", url);
965 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
966 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
968 OCResourceHandle handle3;
969 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
975 OC_DISCOVERABLE|OC_OBSERVABLE));
976 url = OCGetResourceUri(handle3);
977 EXPECT_STREQ("/a/led3", url);
979 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_LL));
980 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_BATCH));
982 OCResourceHandle handle4;
983 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
990 url = OCGetResourceUri(handle4);
991 EXPECT_STREQ("/a/led4", url);
993 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
994 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_LL));
995 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_BATCH));
997 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
999 EXPECT_EQ(OC_STACK_OK, OCStop());
1002 TEST(StackBind, BindResourceTypeNameBad)
1004 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1005 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameBad test");
1006 InitStack(OC_SERVER);
1008 OCResourceHandle handle;
1009 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1015 OC_DISCOVERABLE|OC_OBSERVABLE));
1017 uint8_t numResourceTypes;
1018 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1019 EXPECT_EQ(1, numResourceTypes);
1020 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1021 EXPECT_STREQ("core.led", resourceTypeName);
1023 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
1025 EXPECT_EQ(OC_STACK_OK, OCStop());
1028 TEST(StackBind, BindResourceTypeNameGood)
1030 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1031 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood 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);
1046 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1047 EXPECT_STREQ("core.led", resourceTypeName);
1049 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1050 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1051 EXPECT_EQ(2, numResourceTypes);
1052 resourceTypeName = OCGetResourceTypeName(handle, 1);
1053 EXPECT_STREQ("core.brightled", resourceTypeName);
1055 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1056 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1057 EXPECT_EQ(3, numResourceTypes);
1058 resourceTypeName = OCGetResourceTypeName(handle, 2);
1059 EXPECT_STREQ("core.reallybrightled", resourceTypeName);
1061 EXPECT_EQ(OC_STACK_OK, OCStop());
1064 TEST(StackBind, BindResourceTypeAttribRepGood)
1066 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1067 OIC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
1068 InitStack(OC_SERVER);
1070 OCResourceHandle handle;
1071 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1077 OC_DISCOVERABLE|OC_OBSERVABLE));
1079 uint8_t numResourceTypes;
1080 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1081 EXPECT_EQ(1, numResourceTypes);
1083 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1084 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1085 EXPECT_EQ(2, numResourceTypes);
1087 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1088 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1089 EXPECT_EQ(3, numResourceTypes);
1091 EXPECT_EQ(OC_STACK_OK, OCStop());
1095 TEST(StackBind, BindResourceInterfaceNameBad)
1097 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1098 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
1099 InitStack(OC_SERVER);
1101 OCResourceHandle handle;
1102 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1108 OC_DISCOVERABLE|OC_OBSERVABLE));
1110 uint8_t numResourceInterfaces;
1111 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1112 EXPECT_EQ(2, numResourceInterfaces);
1113 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1114 EXPECT_STREQ("core.rw", resourceInterfaceName);
1116 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, NULL));
1118 EXPECT_EQ(OC_STACK_OK, OCStop());
1121 TEST(StackBind, BindResourceInterfaceNameGood)
1123 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1124 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
1125 InitStack(OC_SERVER);
1127 OCResourceHandle handle;
1128 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1134 OC_DISCOVERABLE|OC_OBSERVABLE));
1136 uint8_t numResourceInterfaces;
1137 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1138 EXPECT_EQ(2, numResourceInterfaces);
1139 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1140 EXPECT_STREQ("core.rw", resourceInterfaceName);
1142 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1144 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1145 EXPECT_EQ(3, numResourceInterfaces);
1146 resourceInterfaceName = OCGetResourceInterfaceName(handle, 2);
1147 EXPECT_STREQ("core.r", resourceInterfaceName);
1149 EXPECT_EQ(OC_STACK_OK, OCStop());
1152 TEST(StackBind, BindResourceInterfaceMethodsBad)
1154 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1155 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
1156 InitStack(OC_SERVER);
1158 OCResourceHandle handle;
1159 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1165 OC_DISCOVERABLE|OC_OBSERVABLE));
1167 uint8_t numResourceInterfaces;
1168 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1169 EXPECT_EQ(2, numResourceInterfaces);
1171 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, 0));
1173 EXPECT_EQ(OC_STACK_OK, OCStop());
1176 TEST(StackBind, BindResourceInterfaceMethodsGood)
1178 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1179 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
1180 InitStack(OC_SERVER);
1182 OCResourceHandle handle;
1183 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1189 OC_DISCOVERABLE|OC_OBSERVABLE));
1191 uint8_t numResourceInterfaces;
1192 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1193 EXPECT_EQ(2, numResourceInterfaces);
1195 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1197 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1198 EXPECT_EQ(3, numResourceInterfaces);
1200 EXPECT_EQ(OC_STACK_OK, OCStop());
1203 TEST(StackBind, BindContainedResourceBad)
1205 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1206 OIC_LOG(INFO, TAG, "Starting BindContainedResourceBad test");
1207 InitStack(OC_SERVER);
1209 OCResourceHandle containerHandle;
1210 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1216 OC_DISCOVERABLE|OC_OBSERVABLE));
1218 OCResourceHandle handle0;
1219 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1225 OC_DISCOVERABLE|OC_OBSERVABLE));
1227 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResource(containerHandle, containerHandle));
1229 EXPECT_EQ(OC_STACK_ERROR, OCBindResource((OCResourceHandle) 0, handle0));
1231 EXPECT_EQ(OC_STACK_OK, OCStop());
1234 TEST(StackBind, BindContainedResourceGood)
1236 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1237 OIC_LOG(INFO, TAG, "Starting BindContainedResourceGood test");
1238 InitStack(OC_SERVER);
1240 uint8_t numResources = 0;
1241 uint8_t numExpectedResources = 0;
1243 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1245 OCResourceHandle containerHandle;
1246 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1252 OC_DISCOVERABLE|OC_OBSERVABLE));
1253 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1254 EXPECT_EQ(++numExpectedResources, numResources);
1256 OCResourceHandle handle0;
1257 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1263 OC_DISCOVERABLE|OC_OBSERVABLE));
1264 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1265 EXPECT_EQ(++numExpectedResources, numResources);
1267 OCResourceHandle handle1;
1268 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1274 OC_DISCOVERABLE|OC_OBSERVABLE));
1275 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1276 EXPECT_EQ(++numExpectedResources, numResources);
1278 OCResourceHandle handle2;
1279 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1285 OC_DISCOVERABLE|OC_OBSERVABLE));
1286 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1287 EXPECT_EQ(++numExpectedResources, numResources);
1289 OCResourceHandle handle3;
1290 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1296 OC_DISCOVERABLE|OC_OBSERVABLE));
1297 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1298 EXPECT_EQ(++numExpectedResources, numResources);
1300 OCResourceHandle handle4;
1301 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1307 OC_DISCOVERABLE|OC_OBSERVABLE));
1308 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1309 EXPECT_EQ(++numExpectedResources, numResources);
1311 OCResourceHandle handle5;
1312 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1318 OC_DISCOVERABLE|OC_OBSERVABLE));
1319 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1320 EXPECT_EQ(++numExpectedResources, numResources);
1323 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle0));
1324 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle1));
1325 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle2));
1326 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle3));
1327 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle4));
1328 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle5));
1330 EXPECT_EQ(handle0, OCGetResourceHandleFromCollection(containerHandle, 0));
1331 EXPECT_EQ(handle1, OCGetResourceHandleFromCollection(containerHandle, 1));
1332 EXPECT_EQ(handle2, OCGetResourceHandleFromCollection(containerHandle, 2));
1333 EXPECT_EQ(handle3, OCGetResourceHandleFromCollection(containerHandle, 3));
1334 EXPECT_EQ(handle4, OCGetResourceHandleFromCollection(containerHandle, 4));
1335 EXPECT_EQ(handle5, OCGetResourceHandleFromCollection(containerHandle, 5));
1337 EXPECT_EQ(OC_STACK_OK, OCStop());
1341 TEST(StackBind, BindEntityHandlerBad)
1343 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1344 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerBad test");
1345 InitStack(OC_SERVER);
1347 OCResourceHandle handle;
1348 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1354 OC_DISCOVERABLE|OC_OBSERVABLE));
1356 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL, NULL));
1358 EXPECT_EQ(OC_STACK_OK, OCStop());
1361 TEST(StackBind, BindEntityHandlerGood)
1363 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1364 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerGood test");
1365 InitStack(OC_SERVER);
1367 OCResourceHandle handle;
1368 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1374 OC_DISCOVERABLE|OC_OBSERVABLE));
1376 OCEntityHandler myHandler = entityHandler;
1378 EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler, NULL));
1380 EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
1382 EXPECT_EQ(OC_STACK_OK, OCStop());
1385 TEST(StackResourceAccess, GetResourceByIndex)
1387 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1388 OIC_LOG(INFO, TAG, "Starting GetResourceByIndex test");
1389 InitStack(OC_SERVER);
1391 uint8_t numResources = 0;
1392 uint8_t numExpectedResources = 0;
1393 uint8_t resourceIndex = 0;
1394 uint8_t prevResources = 0;
1395 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1396 prevResources = numExpectedResources;
1397 OCResourceHandle containerHandle;
1398 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1404 OC_DISCOVERABLE|OC_OBSERVABLE));
1405 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1406 EXPECT_EQ(++numExpectedResources, numResources);
1408 OCResourceHandle handle0;
1409 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1415 OC_DISCOVERABLE|OC_OBSERVABLE));
1416 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1417 EXPECT_EQ(++numExpectedResources, numResources);
1419 OCResourceHandle handle1;
1420 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1426 OC_DISCOVERABLE|OC_OBSERVABLE));
1427 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1428 EXPECT_EQ(++numExpectedResources, numResources);
1430 OCResourceHandle handle2;
1431 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1437 OC_DISCOVERABLE|OC_OBSERVABLE));
1438 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1439 EXPECT_EQ(++numExpectedResources, numResources);
1441 OCResourceHandle handle3;
1442 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1448 OC_DISCOVERABLE|OC_OBSERVABLE));
1449 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1450 EXPECT_EQ(++numExpectedResources, numResources);
1452 OCResourceHandle handle4;
1453 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1459 OC_DISCOVERABLE|OC_OBSERVABLE));
1460 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1461 EXPECT_EQ(++numExpectedResources, numResources);
1463 OCResourceHandle handle5;
1464 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1470 OC_DISCOVERABLE|OC_OBSERVABLE));
1471 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1472 EXPECT_EQ(++numExpectedResources, numResources);
1473 resourceIndex += prevResources;
1474 EXPECT_EQ(containerHandle, OCGetResourceHandle(resourceIndex));
1475 EXPECT_EQ(handle0, OCGetResourceHandle(++resourceIndex));
1476 EXPECT_EQ(handle1, OCGetResourceHandle(++resourceIndex));
1477 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1478 EXPECT_EQ(handle3, OCGetResourceHandle(++resourceIndex));
1479 EXPECT_EQ(handle4, OCGetResourceHandle(++resourceIndex));
1480 EXPECT_EQ(handle5, OCGetResourceHandle(++resourceIndex));
1482 EXPECT_EQ(OC_STACK_OK, OCStop());
1485 TEST(StackResourceAccess, DeleteHeadResource)
1487 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1488 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource test");
1489 InitStack(OC_SERVER);
1491 uint8_t numResources = 0;
1492 uint8_t numExpectedResources = 0;
1494 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1496 OCResourceHandle handle0;
1497 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1503 OC_DISCOVERABLE|OC_OBSERVABLE));
1504 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1505 EXPECT_EQ(++numExpectedResources, numResources);
1507 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1508 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1509 EXPECT_EQ(--numExpectedResources, numResources);
1511 EXPECT_EQ(OC_STACK_OK, OCStop());
1514 TEST(StackResourceAccess, DeleteHeadResource2)
1516 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1517 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource2 test");
1518 InitStack(OC_SERVER);
1520 uint8_t numResources = 0;
1521 uint8_t numExpectedResources = 0;
1523 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1524 OCResourceHandle handle0;
1525 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1531 OC_DISCOVERABLE|OC_OBSERVABLE));
1532 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1533 EXPECT_EQ(++numExpectedResources, numResources);
1535 OCResourceHandle handle1;
1536 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1542 OC_DISCOVERABLE|OC_OBSERVABLE));
1543 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1544 EXPECT_EQ(++numExpectedResources, numResources);
1546 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1547 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1548 EXPECT_EQ(--numExpectedResources, numResources);
1550 EXPECT_EQ(handle1, OCGetResourceHandle(numResources - 1));
1552 EXPECT_EQ(OC_STACK_OK, OCStop());
1556 TEST(StackResourceAccess, DeleteLastResource)
1558 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1559 OIC_LOG(INFO, TAG, "Starting DeleteLastResource test");
1560 InitStack(OC_SERVER);
1562 uint8_t numResources = 0;
1563 uint8_t numExpectedResources = 0;
1565 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1567 OCResourceHandle handle0;
1568 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1574 OC_DISCOVERABLE|OC_OBSERVABLE));
1575 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1576 EXPECT_EQ(++numExpectedResources, numResources);
1578 OCResourceHandle handle1;
1579 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1585 OC_DISCOVERABLE|OC_OBSERVABLE));
1586 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1587 EXPECT_EQ(++numExpectedResources, numResources);
1589 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1590 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1591 EXPECT_EQ(--numExpectedResources, numResources);
1593 EXPECT_EQ(handle0, OCGetResourceHandle(numResources - 1));
1595 OCResourceHandle handle2;
1596 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1602 OC_DISCOVERABLE|OC_OBSERVABLE));
1603 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1604 EXPECT_EQ(++numExpectedResources, numResources);
1606 EXPECT_EQ(OC_STACK_OK, OCStop());
1609 TEST(StackResourceAccess, DeleteMiddleResource)
1611 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1612 OIC_LOG(INFO, TAG, "Starting DeleteMiddleResource test");
1613 InitStack(OC_SERVER);
1615 uint8_t numResources = 0;
1616 uint8_t numExpectedResources = 0;
1617 uint8_t resourceIndex = InitResourceIndex();
1619 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1620 resourceIndex = numExpectedResources;
1621 OCResourceHandle handle0;
1622 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1628 OC_DISCOVERABLE|OC_OBSERVABLE));
1629 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1630 EXPECT_EQ(++numExpectedResources, numResources);
1632 OCResourceHandle handle1;
1633 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1639 OC_DISCOVERABLE|OC_OBSERVABLE));
1640 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1641 EXPECT_EQ(++numExpectedResources, numResources);
1643 OCResourceHandle handle2;
1644 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1650 OC_DISCOVERABLE|OC_OBSERVABLE));
1651 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1652 EXPECT_EQ(++numExpectedResources, numResources);
1654 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1655 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1656 EXPECT_EQ(--numExpectedResources, numResources);
1658 EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
1659 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1661 // Make sure the resource elements are still correct
1662 uint8_t numResourceInterfaces;
1663 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle2, &numResourceInterfaces));
1664 EXPECT_EQ(2, numResourceInterfaces);
1665 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle2, 1);
1666 EXPECT_STREQ("core.rw", resourceInterfaceName);
1668 EXPECT_EQ(OC_STACK_OK, OCStop());
1671 TEST(PODTests, OCHeaderOption)
1673 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1676 TEST(PODTests, OCCallbackData)
1678 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1681 TEST(OCDoDirectPairingTests, Nullpeer)
1683 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(NULL, pmSel, &pinNumber, &resultCallback));
1686 TEST(OCDoDirectPairingTests, NullCallback)
1688 EXPECT_EQ(OC_STACK_INVALID_CALLBACK,OCDoDirectPairing(&peer, pmSel, &pinNumber, NULL));
1691 TEST(OCDoDirectPairingTests, NullpinNumber)
1693 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(&peer, pmSel, NULL, &resultCallback));
1696 TEST(StackResource, MultipleResourcesDiscovery)
1698 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1699 OIC_LOG(INFO, TAG, "Starting MultipleResourcesDiscovery test");
1700 InitStack(OC_SERVER);
1702 OCResourceHandle handle1;
1703 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1709 OC_DISCOVERABLE|OC_OBSERVABLE));
1711 OCResourceHandle handle2;
1712 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1718 OC_DISCOVERABLE|OC_OBSERVABLE));
1719 OCResourceHandle handle3;
1720 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1726 OC_DISCOVERABLE|OC_OBSERVABLE));
1727 /* Start a discovery query*/
1728 char szQueryUri[256] = "/oic/res?if=oic.if.ll";
1729 OCCallbackData cbData;
1730 cbData.cb = discoveryCallback;
1731 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
1735 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
1746 EXPECT_EQ(OC_STACK_OK, OCStop());