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 *uri65 = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL";
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(1, numResourceInterfaces);
735 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
736 EXPECT_STREQ("core.rw", resourceInterfaceName);
738 // try getting resource interface names with an invalid index
739 resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
740 EXPECT_STREQ(NULL, resourceInterfaceName);
741 // try getting resource interface names with an invalid index
742 resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
743 EXPECT_STREQ(NULL, resourceInterfaceName);
745 EXPECT_EQ(OC_STACK_OK, OCStop());
748 TEST(StackResource, ResourceDefaultInterfaceAlwaysFirst)
750 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
752 OIC_LOG(INFO, TAG, "Starting ResourceDefaultInterfaceAlwaysFirst test");
754 InitStack(OC_SERVER);
756 OCResourceHandle handle;
757 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
763 OC_DISCOVERABLE|OC_OBSERVABLE));
764 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
765 OC_RSRVD_INTERFACE_DEFAULT));
766 uint8_t numResourceInterfaces;
767 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
768 EXPECT_EQ(2, numResourceInterfaces);
770 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
771 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
773 const char*interfaceName_2 = OCGetResourceInterfaceName(handle, 1);
774 EXPECT_STREQ("core.rw", interfaceName_2);
776 EXPECT_EQ(OC_STACK_OK, OCStop());
779 TEST(StackResource, ResourceDuplicateDefaultInterfaces)
781 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
783 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateDefaultInterfaces test");
785 InitStack(OC_SERVER);
787 OCResourceHandle handle;
788 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
794 OC_DISCOVERABLE|OC_OBSERVABLE));
796 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
797 OC_RSRVD_INTERFACE_DEFAULT));
798 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
799 OC_RSRVD_INTERFACE_DEFAULT));
801 uint8_t numResourceInterfaces;
802 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
803 EXPECT_EQ(2, numResourceInterfaces);
805 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
806 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
808 EXPECT_EQ(OC_STACK_OK, OCStop());
811 TEST(StackResource, ResourceDuplicateNonDefaultInterfaces)
813 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
815 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateInterfaces test");
817 InitStack(OC_SERVER);
819 OCResourceHandle handle;
820 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
826 OC_DISCOVERABLE|OC_OBSERVABLE));
828 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
830 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
833 uint8_t numResourceInterfaces;
834 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
835 EXPECT_EQ(1, numResourceInterfaces);
837 EXPECT_EQ(OC_STACK_OK, OCStop());
840 TEST(StackResource, ResourceTypeInterfaceMethods)
842 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
843 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterfaceMethods test");
844 InitStack(OC_SERVER);
846 OCResourceHandle handle;
847 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
853 OC_DISCOVERABLE|OC_OBSERVABLE));
855 uint8_t numResourceInterfaces;
856 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
857 EXPECT_EQ(1, numResourceInterfaces);
859 EXPECT_EQ(OC_STACK_OK, OCStop());
862 TEST(StackResource, GetResourceProperties)
864 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
865 OIC_LOG(INFO, TAG, "Starting GetResourceProperties test");
866 InitStack(OC_SERVER);
868 OCResourceHandle handle;
869 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
875 OC_DISCOVERABLE|OC_OBSERVABLE));
877 EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
878 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
880 EXPECT_EQ(OC_STACK_OK, OCStop());
883 TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
885 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
886 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResourceBad test");
887 InitStack(OC_SERVER);
888 uint8_t numResources = 0;
889 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
891 OCResourceHandle handle;
892 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
898 OC_DISCOVERABLE|OC_OBSERVABLE));
899 const char *url = OCGetResourceUri(handle);
900 EXPECT_STREQ("/a1/led", url);
902 //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
903 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
904 uint8_t numExpectedResources = 0;
906 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
907 EXPECT_EQ(numExpectedResources, numResources);
909 EXPECT_EQ(OC_STACK_OK, OCStop());
912 TEST(StackResource, StackTestResourceDiscoverOneResource)
914 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
915 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResource test");
916 InitStack(OC_SERVER);
918 OCResourceHandle handle;
919 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
925 OC_DISCOVERABLE|OC_OBSERVABLE));
926 const char *url = OCGetResourceUri(handle);
927 EXPECT_STREQ("/a/led", url);
929 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
930 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
932 EXPECT_EQ(OC_STACK_OK, OCStop());
935 TEST(StackResource, StackTestResourceDiscoverManyResources)
937 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
938 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverManyResources test");
939 InitStack(OC_SERVER);
941 OCResourceHandle handle1;
942 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
949 const char *url = OCGetResourceUri(handle1);
950 EXPECT_STREQ("/a/led1", url);
952 OCResourceHandle handle2;
953 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
959 OC_DISCOVERABLE|OC_OBSERVABLE));
960 url = OCGetResourceUri(handle2);
961 EXPECT_STREQ("/a/led2", url);
963 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
964 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
966 OCResourceHandle handle3;
967 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
973 OC_DISCOVERABLE|OC_OBSERVABLE));
974 url = OCGetResourceUri(handle3);
975 EXPECT_STREQ("/a/led3", url);
977 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_LL));
978 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_BATCH));
980 OCResourceHandle handle4;
981 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
988 url = OCGetResourceUri(handle4);
989 EXPECT_STREQ("/a/led4", url);
991 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
992 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_LL));
993 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_BATCH));
995 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
997 EXPECT_EQ(OC_STACK_OK, OCStop());
1000 TEST(StackBind, BindResourceTypeNameBad)
1002 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1003 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameBad test");
1004 InitStack(OC_SERVER);
1006 OCResourceHandle handle;
1007 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1013 OC_DISCOVERABLE|OC_OBSERVABLE));
1015 uint8_t numResourceTypes;
1016 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1017 EXPECT_EQ(1, numResourceTypes);
1018 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1019 EXPECT_STREQ("core.led", resourceTypeName);
1021 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
1023 EXPECT_EQ(OC_STACK_OK, OCStop());
1026 TEST(StackBind, BindResourceTypeNameGood)
1028 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1029 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood test");
1030 InitStack(OC_SERVER);
1032 OCResourceHandle handle;
1033 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1039 OC_DISCOVERABLE|OC_OBSERVABLE));
1041 uint8_t numResourceTypes;
1042 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1043 EXPECT_EQ(1, numResourceTypes);
1044 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1045 EXPECT_STREQ("core.led", resourceTypeName);
1047 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1048 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1049 EXPECT_EQ(2, numResourceTypes);
1050 resourceTypeName = OCGetResourceTypeName(handle, 1);
1051 EXPECT_STREQ("core.brightled", resourceTypeName);
1053 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1054 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1055 EXPECT_EQ(3, numResourceTypes);
1056 resourceTypeName = OCGetResourceTypeName(handle, 2);
1057 EXPECT_STREQ("core.reallybrightled", resourceTypeName);
1059 EXPECT_EQ(OC_STACK_OK, OCStop());
1062 TEST(StackBind, BindResourceTypeAttribRepGood)
1064 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1065 OIC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
1066 InitStack(OC_SERVER);
1068 OCResourceHandle handle;
1069 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1075 OC_DISCOVERABLE|OC_OBSERVABLE));
1077 uint8_t numResourceTypes;
1078 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1079 EXPECT_EQ(1, numResourceTypes);
1081 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1082 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1083 EXPECT_EQ(2, numResourceTypes);
1085 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1086 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1087 EXPECT_EQ(3, numResourceTypes);
1089 EXPECT_EQ(OC_STACK_OK, OCStop());
1093 TEST(StackBind, BindResourceInterfaceNameBad)
1095 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1096 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
1097 InitStack(OC_SERVER);
1099 OCResourceHandle handle;
1100 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1106 OC_DISCOVERABLE|OC_OBSERVABLE));
1108 uint8_t numResourceInterfaces;
1109 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1110 EXPECT_EQ(1, numResourceInterfaces);
1111 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
1112 EXPECT_STREQ("core.rw", resourceInterfaceName);
1114 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, NULL));
1116 EXPECT_EQ(OC_STACK_OK, OCStop());
1119 TEST(StackBind, BindResourceInterfaceNameGood)
1121 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1122 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
1123 InitStack(OC_SERVER);
1125 OCResourceHandle handle;
1126 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1132 OC_DISCOVERABLE|OC_OBSERVABLE));
1134 uint8_t numResourceInterfaces;
1135 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1136 EXPECT_EQ(1, numResourceInterfaces);
1137 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
1138 EXPECT_STREQ("core.rw", resourceInterfaceName);
1140 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1142 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1143 EXPECT_EQ(2, numResourceInterfaces);
1144 resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1145 EXPECT_STREQ("core.r", resourceInterfaceName);
1147 EXPECT_EQ(OC_STACK_OK, OCStop());
1150 TEST(StackBind, BindResourceInterfaceMethodsBad)
1152 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1153 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
1154 InitStack(OC_SERVER);
1156 OCResourceHandle handle;
1157 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1163 OC_DISCOVERABLE|OC_OBSERVABLE));
1165 uint8_t numResourceInterfaces;
1166 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1167 EXPECT_EQ(1, numResourceInterfaces);
1169 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, 0));
1171 EXPECT_EQ(OC_STACK_OK, OCStop());
1174 TEST(StackBind, BindResourceInterfaceMethodsGood)
1176 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1177 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
1178 InitStack(OC_SERVER);
1180 OCResourceHandle handle;
1181 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1187 OC_DISCOVERABLE|OC_OBSERVABLE));
1189 uint8_t numResourceInterfaces;
1190 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1191 EXPECT_EQ(1, numResourceInterfaces);
1193 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1195 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1196 EXPECT_EQ(2, numResourceInterfaces);
1198 EXPECT_EQ(OC_STACK_OK, OCStop());
1201 TEST(StackBind, BindContainedResourceBad)
1203 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1204 OIC_LOG(INFO, TAG, "Starting BindContainedResourceBad test");
1205 InitStack(OC_SERVER);
1207 OCResourceHandle containerHandle;
1208 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1214 OC_DISCOVERABLE|OC_OBSERVABLE));
1216 OCResourceHandle handle0;
1217 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1223 OC_DISCOVERABLE|OC_OBSERVABLE));
1225 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResource(containerHandle, containerHandle));
1227 EXPECT_EQ(OC_STACK_ERROR, OCBindResource((OCResourceHandle) 0, handle0));
1229 EXPECT_EQ(OC_STACK_OK, OCStop());
1232 TEST(StackBind, BindContainedResourceGood)
1234 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1235 OIC_LOG(INFO, TAG, "Starting BindContainedResourceGood test");
1236 InitStack(OC_SERVER);
1238 uint8_t numResources = 0;
1239 uint8_t numExpectedResources = 0;
1241 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1243 OCResourceHandle containerHandle;
1244 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1250 OC_DISCOVERABLE|OC_OBSERVABLE));
1251 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1252 EXPECT_EQ(++numExpectedResources, numResources);
1254 OCResourceHandle handle0;
1255 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1261 OC_DISCOVERABLE|OC_OBSERVABLE));
1262 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1263 EXPECT_EQ(++numExpectedResources, numResources);
1265 OCResourceHandle handle1;
1266 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1272 OC_DISCOVERABLE|OC_OBSERVABLE));
1273 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1274 EXPECT_EQ(++numExpectedResources, numResources);
1276 OCResourceHandle handle2;
1277 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1283 OC_DISCOVERABLE|OC_OBSERVABLE));
1284 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1285 EXPECT_EQ(++numExpectedResources, numResources);
1287 OCResourceHandle handle3;
1288 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1294 OC_DISCOVERABLE|OC_OBSERVABLE));
1295 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1296 EXPECT_EQ(++numExpectedResources, numResources);
1298 OCResourceHandle handle4;
1299 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1305 OC_DISCOVERABLE|OC_OBSERVABLE));
1306 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1307 EXPECT_EQ(++numExpectedResources, numResources);
1309 OCResourceHandle handle5;
1310 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1316 OC_DISCOVERABLE|OC_OBSERVABLE));
1317 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1318 EXPECT_EQ(++numExpectedResources, numResources);
1321 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle0));
1322 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle1));
1323 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle2));
1324 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle3));
1325 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle4));
1326 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle5));
1328 EXPECT_EQ(handle0, OCGetResourceHandleFromCollection(containerHandle, 0));
1329 EXPECT_EQ(handle1, OCGetResourceHandleFromCollection(containerHandle, 1));
1330 EXPECT_EQ(handle2, OCGetResourceHandleFromCollection(containerHandle, 2));
1331 EXPECT_EQ(handle3, OCGetResourceHandleFromCollection(containerHandle, 3));
1332 EXPECT_EQ(handle4, OCGetResourceHandleFromCollection(containerHandle, 4));
1333 EXPECT_EQ(handle5, OCGetResourceHandleFromCollection(containerHandle, 5));
1335 EXPECT_EQ(OC_STACK_OK, OCStop());
1339 TEST(StackBind, BindEntityHandlerBad)
1341 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1342 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerBad test");
1343 InitStack(OC_SERVER);
1345 OCResourceHandle handle;
1346 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1352 OC_DISCOVERABLE|OC_OBSERVABLE));
1354 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL, NULL));
1356 EXPECT_EQ(OC_STACK_OK, OCStop());
1359 TEST(StackBind, BindEntityHandlerGood)
1361 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1362 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerGood test");
1363 InitStack(OC_SERVER);
1365 OCResourceHandle handle;
1366 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1372 OC_DISCOVERABLE|OC_OBSERVABLE));
1374 OCEntityHandler myHandler = entityHandler;
1376 EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler, NULL));
1378 EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
1380 EXPECT_EQ(OC_STACK_OK, OCStop());
1383 TEST(StackResourceAccess, GetResourceByIndex)
1385 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1386 OIC_LOG(INFO, TAG, "Starting GetResourceByIndex test");
1387 InitStack(OC_SERVER);
1389 uint8_t numResources = 0;
1390 uint8_t numExpectedResources = 0;
1391 uint8_t resourceIndex = 0;
1392 uint8_t prevResources = 0;
1393 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1394 prevResources = numExpectedResources;
1395 OCResourceHandle containerHandle;
1396 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1402 OC_DISCOVERABLE|OC_OBSERVABLE));
1403 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1404 EXPECT_EQ(++numExpectedResources, numResources);
1406 OCResourceHandle handle0;
1407 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1413 OC_DISCOVERABLE|OC_OBSERVABLE));
1414 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1415 EXPECT_EQ(++numExpectedResources, numResources);
1417 OCResourceHandle handle1;
1418 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1424 OC_DISCOVERABLE|OC_OBSERVABLE));
1425 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1426 EXPECT_EQ(++numExpectedResources, numResources);
1428 OCResourceHandle handle2;
1429 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1435 OC_DISCOVERABLE|OC_OBSERVABLE));
1436 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1437 EXPECT_EQ(++numExpectedResources, numResources);
1439 OCResourceHandle handle3;
1440 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1446 OC_DISCOVERABLE|OC_OBSERVABLE));
1447 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1448 EXPECT_EQ(++numExpectedResources, numResources);
1450 OCResourceHandle handle4;
1451 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1457 OC_DISCOVERABLE|OC_OBSERVABLE));
1458 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1459 EXPECT_EQ(++numExpectedResources, numResources);
1461 OCResourceHandle handle5;
1462 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1468 OC_DISCOVERABLE|OC_OBSERVABLE));
1469 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1470 EXPECT_EQ(++numExpectedResources, numResources);
1471 resourceIndex += prevResources;
1472 EXPECT_EQ(containerHandle, OCGetResourceHandle(resourceIndex));
1473 EXPECT_EQ(handle0, OCGetResourceHandle(++resourceIndex));
1474 EXPECT_EQ(handle1, OCGetResourceHandle(++resourceIndex));
1475 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1476 EXPECT_EQ(handle3, OCGetResourceHandle(++resourceIndex));
1477 EXPECT_EQ(handle4, OCGetResourceHandle(++resourceIndex));
1478 EXPECT_EQ(handle5, OCGetResourceHandle(++resourceIndex));
1480 EXPECT_EQ(OC_STACK_OK, OCStop());
1483 TEST(StackResourceAccess, DeleteHeadResource)
1485 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1486 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource test");
1487 InitStack(OC_SERVER);
1489 uint8_t numResources = 0;
1490 uint8_t numExpectedResources = 0;
1492 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1494 OCResourceHandle handle0;
1495 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1501 OC_DISCOVERABLE|OC_OBSERVABLE));
1502 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1503 EXPECT_EQ(++numExpectedResources, numResources);
1505 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1506 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1507 EXPECT_EQ(--numExpectedResources, numResources);
1509 EXPECT_EQ(OC_STACK_OK, OCStop());
1512 TEST(StackResourceAccess, DeleteHeadResource2)
1514 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1515 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource2 test");
1516 InitStack(OC_SERVER);
1518 uint8_t numResources = 0;
1519 uint8_t numExpectedResources = 0;
1521 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1522 OCResourceHandle handle0;
1523 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1529 OC_DISCOVERABLE|OC_OBSERVABLE));
1530 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1531 EXPECT_EQ(++numExpectedResources, numResources);
1533 OCResourceHandle handle1;
1534 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1540 OC_DISCOVERABLE|OC_OBSERVABLE));
1541 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1542 EXPECT_EQ(++numExpectedResources, numResources);
1544 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1545 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1546 EXPECT_EQ(--numExpectedResources, numResources);
1548 EXPECT_EQ(handle1, OCGetResourceHandle(numResources - 1));
1550 EXPECT_EQ(OC_STACK_OK, OCStop());
1554 TEST(StackResourceAccess, DeleteLastResource)
1556 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1557 OIC_LOG(INFO, TAG, "Starting DeleteLastResource test");
1558 InitStack(OC_SERVER);
1560 uint8_t numResources = 0;
1561 uint8_t numExpectedResources = 0;
1563 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1565 OCResourceHandle handle0;
1566 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1572 OC_DISCOVERABLE|OC_OBSERVABLE));
1573 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1574 EXPECT_EQ(++numExpectedResources, numResources);
1576 OCResourceHandle handle1;
1577 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1583 OC_DISCOVERABLE|OC_OBSERVABLE));
1584 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1585 EXPECT_EQ(++numExpectedResources, numResources);
1587 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1588 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1589 EXPECT_EQ(--numExpectedResources, numResources);
1591 EXPECT_EQ(handle0, OCGetResourceHandle(numResources - 1));
1593 OCResourceHandle handle2;
1594 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1600 OC_DISCOVERABLE|OC_OBSERVABLE));
1601 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1602 EXPECT_EQ(++numExpectedResources, numResources);
1604 EXPECT_EQ(OC_STACK_OK, OCStop());
1607 TEST(StackResourceAccess, DeleteMiddleResource)
1609 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1610 OIC_LOG(INFO, TAG, "Starting DeleteMiddleResource test");
1611 InitStack(OC_SERVER);
1613 uint8_t numResources = 0;
1614 uint8_t numExpectedResources = 0;
1615 uint8_t resourceIndex = InitResourceIndex();
1617 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1618 resourceIndex = numExpectedResources;
1619 OCResourceHandle handle0;
1620 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1626 OC_DISCOVERABLE|OC_OBSERVABLE));
1627 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1628 EXPECT_EQ(++numExpectedResources, numResources);
1630 OCResourceHandle handle1;
1631 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1637 OC_DISCOVERABLE|OC_OBSERVABLE));
1638 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1639 EXPECT_EQ(++numExpectedResources, numResources);
1641 OCResourceHandle handle2;
1642 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1648 OC_DISCOVERABLE|OC_OBSERVABLE));
1649 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1650 EXPECT_EQ(++numExpectedResources, numResources);
1652 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1653 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1654 EXPECT_EQ(--numExpectedResources, numResources);
1656 EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
1657 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1659 // Make sure the resource elements are still correct
1660 uint8_t numResourceInterfaces;
1661 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle2, &numResourceInterfaces));
1662 EXPECT_EQ(1, numResourceInterfaces);
1663 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle2, 0);
1664 EXPECT_STREQ("core.rw", resourceInterfaceName);
1666 EXPECT_EQ(OC_STACK_OK, OCStop());
1669 TEST(PODTests, OCHeaderOption)
1671 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1674 TEST(PODTests, OCCallbackData)
1676 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1679 TEST(OCDoDirectPairingTests, Nullpeer)
1681 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(NULL, pmSel, &pinNumber, &resultCallback));
1684 TEST(OCDoDirectPairingTests, NullCallback)
1686 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(&peer, pmSel, &pinNumber, NULL));
1689 TEST(OCDoDirectPairingTests, NullpinNumber)
1691 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(&peer, pmSel, NULL, &resultCallback));
1694 TEST(StackResource, MultipleResourcesDiscovery)
1696 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1697 OIC_LOG(INFO, TAG, "Starting MultipleResourcesDiscovery test");
1698 InitStack(OC_SERVER);
1700 OCResourceHandle handle1;
1701 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1707 OC_DISCOVERABLE|OC_OBSERVABLE));
1709 OCResourceHandle handle2;
1710 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1716 OC_DISCOVERABLE|OC_OBSERVABLE));
1717 OCResourceHandle handle3;
1718 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1724 OC_DISCOVERABLE|OC_OBSERVABLE));
1725 /* Start a discovery query*/
1726 char szQueryUri[256] = "/oic/res?if=oic.if.ll";
1727 OCCallbackData cbData;
1728 cbData.cb = discoveryCallback;
1729 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
1733 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
1744 EXPECT_EQ(OC_STACK_OK, OCStop());