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(void *UNUSED1, OCDPDev_t *UNUSED2, OCStackResult UNUSED3)
95 extern "C" OCStackApplicationResult discoveryCallback(void* ctx,
96 OCDoHandle /*handle*/, OCClientResponse * clientResponse)
98 OIC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback");
100 EXPECT_EQ(OC_STACK_OK, clientResponse->result);
102 if(ctx == (void*)DEFAULT_CONTEXT_VALUE)
104 OIC_LOG_V(INFO, TAG, "Callback Context recvd successfully");
107 OIC_LOG_V(INFO, TAG, "result = %d", clientResponse->result);
109 OCDiscoveryPayload *discoveryPayload = ((OCDiscoveryPayload *) clientResponse->payload);
110 EXPECT_TRUE(discoveryPayload != NULL);
111 OCResourcePayload *res = discoveryPayload->resources;
113 for (OCResourcePayload *res1 = discoveryPayload->resources; res1; res1 = res1->next)
118 EXPECT_EQ("/a/led1", res->uri);
120 EXPECT_EQ("/a/led2", res->uri);
122 EXPECT_EQ("/a/led3", res->uri);
124 EXPECT_TRUE(res == NULL);
126 return OC_STACK_KEEP_TRANSACTION;
129 //-----------------------------------------------------------------------------
131 //-----------------------------------------------------------------------------
132 OCEntityHandlerResult entityHandler(OCEntityHandlerFlag /*flag*/,
133 OCEntityHandlerRequest * /*entityHandlerRequest*/,
134 void* /*callbackParam*/)
136 OIC_LOG(INFO, TAG, "Entering entityHandler");
141 //-----------------------------------------------------------------------------
143 //-----------------------------------------------------------------------------
144 void InitStack(OCMode mode)
146 OIC_LOG(INFO, TAG, "Entering InitStack");
148 EXPECT_EQ(OC_STACK_OK, OCInit(NULL, 0, mode));
149 OIC_LOG(INFO, TAG, "Leaving InitStack");
152 uint8_t InitNumExpectedResources()
155 // When presence is enabled, it is a resource and so is (currently) included
156 // in the returned resource count returned by the OCGetNumberOfResources API.
163 uint8_t InitResourceIndex()
166 // When presence is enabled, it is a resource and so is (currently) included
167 // in the returned resource count returned by the OCGetNumberOfResources API.
168 // The index of the presence resource is 0, so the first user app resource index
175 //-----------------------------------------------------------------------------
177 //-----------------------------------------------------------------------------
179 TEST(StackInit, StackInitNullAddr)
181 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
182 EXPECT_EQ(OC_STACK_OK, OCInit(0, 5683, OC_SERVER));
183 EXPECT_EQ(OC_STACK_OK, OCStop());
186 TEST(StackInit, StackInitNullPort)
188 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
189 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 0, OC_SERVER));
190 EXPECT_EQ(OC_STACK_OK, OCStop());
193 TEST(StackInit, StackInitNullAddrAndPort)
195 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
196 EXPECT_EQ(OC_STACK_OK, OCInit(0, 0, OC_SERVER));
197 EXPECT_EQ(OC_STACK_OK, OCStop());
200 TEST(StackInit, StackInitInvalidMode)
202 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
203 EXPECT_EQ(OC_STACK_ERROR, OCInit(0, 0, (OCMode)10));
204 EXPECT_EQ(OC_STACK_ERROR, OCStop());
207 TEST(StackStart, StackStartSuccessClient)
209 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
210 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
211 EXPECT_EQ(OC_STACK_OK, OCStop());
214 TEST(StackStart, StackStartSuccessServer)
216 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
217 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
218 EXPECT_EQ(OC_STACK_OK, OCStop());
221 TEST(StackStart, StackStartSuccessClientServer)
223 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
224 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER));
225 EXPECT_EQ(OC_STACK_OK, OCStop());
228 TEST(StackStart, StackStartSuccessiveInits)
230 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
231 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
232 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.2", 5683, OC_SERVER));
233 EXPECT_EQ(OC_STACK_OK, OCStop());
236 TEST(StackStart, SetPlatformInfoValid)
238 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
239 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
241 OCPlatformInfo info =
245 0, 0, 0, 0, 0, 0, 0, 0, 0
247 EXPECT_EQ(OC_STACK_OK, OCSetPlatformInfo(info));
248 EXPECT_EQ(OC_STACK_OK, OCStop());
251 TEST(StackStart, SetPlatformInfoWithClientMode)
253 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
254 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
256 OCPlatformInfo info =
260 0, 0, 0, 0, 0, 0, 0, 0, 0
262 EXPECT_EQ(OC_STACK_ERROR, OCSetPlatformInfo(info));
263 EXPECT_EQ(OC_STACK_OK, OCStop());
266 TEST(StackStart, SetPlatformInfoWithNoPlatformID)
268 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
269 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
271 OCPlatformInfo info =
275 0, 0, 0, 0, 0, 0, 0, 0, 0
278 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
279 EXPECT_EQ(OC_STACK_OK, OCStop());
282 TEST(StackStart, SetPlatformInfoWithNoManufacturerName)
284 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
285 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
287 OCPlatformInfo info =
290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
293 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
294 EXPECT_EQ(OC_STACK_OK, OCStop());
297 TEST(StackStart, SetPlatformInfoWithZeroLengthManufacturerName)
299 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
300 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
302 OCPlatformInfo info =
305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
307 info.manufacturerName = (char *) "";
309 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
310 EXPECT_EQ(OC_STACK_OK, OCStop());
313 TEST(StackStart, SetPlatformInfoWithTooLongManufacName)
315 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
316 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
318 OCPlatformInfo info =
321 gTooLongManufacturerName,
322 0, 0, 0, 0, 0, 0, 0, 0, 0
325 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
326 EXPECT_EQ(OC_STACK_OK, OCStop());
329 TEST(StackStart, SetPlatformInfoWithTooLongManufacURL)
331 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
332 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_SERVER));
333 OCPlatformInfo info =
338 0, 0, 0, 0, 0, 0, 0, 0
341 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSetPlatformInfo(info));
342 EXPECT_EQ(OC_STACK_OK, OCStop());
345 TEST(StackDiscovery, DISABLED_DoResourceDeviceDiscovery)
347 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
348 OCCallbackData cbData;
351 OIC_LOG(INFO, TAG, "Starting DoResourceDeviceDiscovery test ");
352 InitStack(OC_CLIENT);
354 /* Start a discovery query*/
355 char szQueryUri[MAX_QUERY_LENGTH] = { 0 };
356 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
357 cbData.cb = asyncDoResourcesCallback;
358 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
360 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
370 EXPECT_EQ(OC_STACK_OK, OCStop());
373 TEST(StackStop, StackStopWithoutInit)
375 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
376 EXPECT_EQ(OC_STACK_ERROR, OCStop());
379 TEST(StackStop, StackStopRepeated)
381 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
382 EXPECT_EQ(OC_STACK_OK, OCInit("127.0.0.1", 5683, OC_CLIENT));
383 EXPECT_EQ(OC_STACK_OK, OCStop());
384 EXPECT_EQ(OC_STACK_ERROR, OCStop());
387 TEST(StackResource, DISABLED_UpdateResourceNullURI)
389 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
390 OCCallbackData cbData;
393 OIC_LOG(INFO, TAG, "Starting UpdateResourceNullURI test");
394 InitStack(OC_CLIENT);
396 /* Start a discovery query*/
397 char szQueryUri[MAX_QUERY_LENGTH] = { 0 };
398 strcpy(szQueryUri, OC_RSRVD_WELL_KNOWN_URI);
399 cbData.cb = asyncDoResourcesCallback;
400 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
402 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
412 EXPECT_EQ(OC_STACK_OK, OCStop());
415 TEST(StackResource, CreateResourceBadParams)
417 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
418 OIC_LOG(INFO, TAG, "Starting CreateResourceBadParams test");
419 InitStack(OC_SERVER);
421 OCResourceHandle handle;
423 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(NULL, //&handle,
429 OC_DISCOVERABLE|OC_OBSERVABLE));
431 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
437 OC_DISCOVERABLE|OC_OBSERVABLE));
439 // Property bitmask out of range
440 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
446 128));// invalid bitmask for OCResourceProperty
448 EXPECT_EQ(OC_STACK_OK, OCStop());
451 TEST(StackResource, CreateResourceBadUri)
453 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
454 OIC_LOG(INFO, TAG, "Starting CreateResourceBadUri test");
455 InitStack(OC_SERVER);
457 const char *uri65 = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKL";
459 OCResourceHandle handle;
461 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
467 OC_DISCOVERABLE|OC_OBSERVABLE));
469 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
475 OC_DISCOVERABLE|OC_OBSERVABLE));
477 EXPECT_EQ(OC_STACK_INVALID_URI, OCCreateResource(&handle,
483 OC_DISCOVERABLE|OC_OBSERVABLE));
485 EXPECT_EQ(OC_STACK_OK, OCStop());
488 TEST(StackResource, CreateResourceSuccess)
490 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
491 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
492 InitStack(OC_SERVER);
494 OCResourceHandle handle;
495 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
501 OC_DISCOVERABLE|OC_OBSERVABLE));
502 const char *url = OCGetResourceUri(handle);
503 EXPECT_STREQ("/a/led", url);
505 EXPECT_EQ(OC_STACK_OK, OCStop());
508 TEST(StackResource, CreateResourceSuccessWithResourcePolicyPropNone)
510 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
511 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccessWithResourcePolicyPropNone test");
512 InitStack(OC_SERVER);
514 OCResourceHandle handle;
515 // the resource is non-discoverable & non-observable by the client.
516 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
522 OC_RES_PROP_NONE));// the resource is non-discoverable &
523 // non-observable by the client.
524 const char* url = OCGetResourceUri(handle);
525 EXPECT_STREQ("/a/led", url);
527 EXPECT_EQ(OC_STACK_OK, OCStop());
530 TEST(StackResource, CreateResourceWithClientStackMode)
532 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
533 OIC_LOG(INFO, TAG, "Starting CreateResourceSuccess test");
534 InitStack(OC_CLIENT);
536 OCResourceHandle handle;
537 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
543 OC_DISCOVERABLE|OC_OBSERVABLE));
545 EXPECT_EQ(OC_STACK_OK, OCStop());
548 TEST(StackResource, CreateResourceFailDuplicateUri)
550 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
551 OIC_LOG(INFO, TAG, "Starting CreateResourceFailDuplicateUri test");
552 InitStack(OC_SERVER);
554 OCResourceHandle handle;
555 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
561 OC_DISCOVERABLE|OC_OBSERVABLE));
562 const char *url = OCGetResourceUri(handle);
563 EXPECT_STREQ("/a/led", url);
565 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
571 OC_DISCOVERABLE|OC_OBSERVABLE));
573 EXPECT_EQ(OC_STACK_OK, OCStop());
576 TEST(StackResource, CreateResourceMultipleResources)
578 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
579 OIC_LOG(INFO, TAG, "Starting CreateResourceMultipleResources test");
580 InitStack(OC_SERVER);
582 OCResourceHandle handle1;
583 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
589 OC_DISCOVERABLE|OC_OBSERVABLE));
591 OCResourceHandle handle2;
592 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
598 OC_DISCOVERABLE|OC_OBSERVABLE));
599 OCResourceHandle handle3;
600 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
606 OC_DISCOVERABLE|OC_OBSERVABLE));
608 const char *url = OCGetResourceUri(handle1);
609 EXPECT_STREQ("/a/led1", url);
611 url = OCGetResourceUri(handle2);
612 EXPECT_STREQ("/a/led2", url);
614 url = OCGetResourceUri(handle3);
615 EXPECT_STREQ("/a/led3", url);
617 EXPECT_EQ(OC_STACK_OK, OCStop());
620 TEST(StackResource, CreateResourceBadResoureType)
622 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
623 OIC_LOG(INFO, TAG, "Starting CreateResourceBadResoureType test");
624 InitStack(OC_SERVER);
626 OCResourceHandle handle;
627 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle,
633 OC_DISCOVERABLE|OC_OBSERVABLE));
635 OCResourceHandle handle2;
636 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCCreateResource(&handle2,
642 OC_DISCOVERABLE|OC_OBSERVABLE));
644 EXPECT_EQ(OC_STACK_OK, OCStop());
647 TEST(StackResource, CreateResourceGoodResourceType)
649 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
650 OIC_LOG(INFO, TAG, "Starting CreateResourceGoodResourceType test");
651 InitStack(OC_SERVER);
653 OCResourceHandle handle;
654 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
660 OC_DISCOVERABLE|OC_OBSERVABLE));
662 EXPECT_EQ(OC_STACK_OK, OCStop());
665 TEST(StackResource, ResourceTypeName)
667 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
668 OIC_LOG(INFO, TAG, "Starting ResourceTypeName test");
669 InitStack(OC_SERVER);
671 OCResourceHandle handle;
672 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
678 OC_DISCOVERABLE|OC_OBSERVABLE));
680 uint8_t numResourceTypes;
681 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
682 EXPECT_EQ(1, numResourceTypes);
683 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
684 EXPECT_STREQ("core.led", resourceTypeName);
686 // try getting resource type names with an invalid index
687 resourceTypeName = OCGetResourceTypeName(handle, 1);
688 EXPECT_STREQ(NULL, resourceTypeName);
689 // try getting resource type names with an invalid index
690 resourceTypeName = OCGetResourceTypeName(handle, 10);
691 EXPECT_STREQ(NULL, resourceTypeName);
693 EXPECT_EQ(OC_STACK_OK, OCStop());
696 TEST(StackResource, ResourceTypeAttrRepresentation)
698 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
699 OIC_LOG(INFO, TAG, "Starting ResourceTypeAttrRepresentation test");
700 InitStack(OC_SERVER);
702 OCResourceHandle handle;
703 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
709 OC_DISCOVERABLE|OC_OBSERVABLE));
711 uint8_t numResourceTypes;
712 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
713 EXPECT_EQ(1, numResourceTypes);
715 EXPECT_EQ(OC_STACK_OK, OCStop());
718 TEST(StackResource, ResourceTypeInterface)
720 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
721 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterface test");
722 InitStack(OC_SERVER);
724 OCResourceHandle handle;
725 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
731 OC_DISCOVERABLE|OC_OBSERVABLE));
733 uint8_t numResourceInterfaces;
734 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
735 EXPECT_EQ(2, numResourceInterfaces);
736 const char *resourceInterfaceName1 = OCGetResourceInterfaceName(handle, 0);
737 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, resourceInterfaceName1);
738 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
739 EXPECT_STREQ("core.rw", resourceInterfaceName);
741 // try getting resource interface names with an invalid index
742 resourceInterfaceName = OCGetResourceInterfaceName(handle, 2);
743 EXPECT_STREQ(NULL, resourceInterfaceName);
744 // try getting resource interface names with an invalid index
745 resourceInterfaceName = OCGetResourceInterfaceName(handle, 10);
746 EXPECT_STREQ(NULL, resourceInterfaceName);
748 EXPECT_EQ(OC_STACK_OK, OCStop());
751 TEST(StackResource, ResourceDefaultInterfaceAlwaysFirst)
753 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
755 OIC_LOG(INFO, TAG, "Starting ResourceDefaultInterfaceAlwaysFirst test");
757 InitStack(OC_SERVER);
759 OCResourceHandle handle;
760 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
766 OC_DISCOVERABLE|OC_OBSERVABLE));
767 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
768 OC_RSRVD_INTERFACE_DEFAULT));
769 uint8_t numResourceInterfaces;
770 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
771 EXPECT_EQ(2, numResourceInterfaces);
773 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
774 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
776 const char*interfaceName_2 = OCGetResourceInterfaceName(handle, 1);
777 EXPECT_STREQ("core.rw", interfaceName_2);
779 EXPECT_EQ(OC_STACK_OK, OCStop());
782 TEST(StackResource, ResourceDuplicateDefaultInterfaces)
784 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
786 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateDefaultInterfaces test");
788 InitStack(OC_SERVER);
790 OCResourceHandle handle;
791 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
797 OC_DISCOVERABLE|OC_OBSERVABLE));
799 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
800 OC_RSRVD_INTERFACE_DEFAULT));
801 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
802 OC_RSRVD_INTERFACE_DEFAULT));
804 uint8_t numResourceInterfaces;
805 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
806 EXPECT_EQ(2, numResourceInterfaces);
808 const char *interfaceName_1 = OCGetResourceInterfaceName(handle, 0);
809 EXPECT_STREQ(OC_RSRVD_INTERFACE_DEFAULT, interfaceName_1);
811 EXPECT_EQ(OC_STACK_OK, OCStop());
814 TEST(StackResource, ResourceDuplicateNonDefaultInterfaces)
816 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
818 OIC_LOG(INFO, TAG, "Starting ResourceDuplicateInterfaces test");
820 InitStack(OC_SERVER);
822 OCResourceHandle handle;
823 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
829 OC_DISCOVERABLE|OC_OBSERVABLE));
831 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
833 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle,
836 uint8_t numResourceInterfaces;
837 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
838 EXPECT_EQ(2, numResourceInterfaces);
840 EXPECT_EQ(OC_STACK_OK, OCStop());
843 TEST(StackResource, ResourceTypeInterfaceMethods)
845 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
846 OIC_LOG(INFO, TAG, "Starting ResourceTypeInterfaceMethods test");
847 InitStack(OC_SERVER);
849 OCResourceHandle handle;
850 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
856 OC_DISCOVERABLE|OC_OBSERVABLE));
858 uint8_t numResourceInterfaces;
859 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
860 EXPECT_EQ(2, numResourceInterfaces);
862 EXPECT_EQ(OC_STACK_OK, OCStop());
865 TEST(StackResource, GetResourceProperties)
867 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
868 OIC_LOG(INFO, TAG, "Starting GetResourceProperties test");
869 InitStack(OC_SERVER);
871 OCResourceHandle handle;
872 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
878 OC_DISCOVERABLE|OC_OBSERVABLE));
880 EXPECT_EQ(OC_ACTIVE|OC_DISCOVERABLE|OC_OBSERVABLE, OCGetResourceProperties(handle));
881 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
883 EXPECT_EQ(OC_STACK_OK, OCStop());
886 TEST(StackResource, StackTestResourceDiscoverOneResourceBad)
888 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
889 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResourceBad test");
890 InitStack(OC_SERVER);
891 uint8_t numResources = 0;
892 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
894 OCResourceHandle handle;
895 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
901 OC_DISCOVERABLE|OC_OBSERVABLE));
902 const char *url = OCGetResourceUri(handle);
903 EXPECT_STREQ("/a1/led", url);
905 //EXPECT_EQ(OC_STACK_INVALID_URI, OCHandleServerRequest(&res, uri, query, req, rsp));
906 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
907 uint8_t numExpectedResources = 0;
909 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
910 EXPECT_EQ(numExpectedResources, numResources);
912 EXPECT_EQ(OC_STACK_OK, OCStop());
915 TEST(StackResource, StackTestResourceDiscoverOneResource)
917 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
918 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverOneResource test");
919 InitStack(OC_SERVER);
921 OCResourceHandle handle;
922 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
928 OC_DISCOVERABLE|OC_OBSERVABLE));
929 const char *url = OCGetResourceUri(handle);
930 EXPECT_STREQ("/a/led", url);
932 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
933 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle));
935 EXPECT_EQ(OC_STACK_OK, OCStop());
938 TEST(StackResource, StackTestResourceDiscoverManyResources)
940 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
941 OIC_LOG(INFO, TAG, "Starting StackTestResourceDiscoverManyResources test");
942 InitStack(OC_SERVER);
944 OCResourceHandle handle1;
945 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
952 const char *url = OCGetResourceUri(handle1);
953 EXPECT_STREQ("/a/led1", url);
955 OCResourceHandle handle2;
956 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
962 OC_DISCOVERABLE|OC_OBSERVABLE));
963 url = OCGetResourceUri(handle2);
964 EXPECT_STREQ("/a/led2", url);
966 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.brightled"));
967 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle2, "core.colorled"));
969 OCResourceHandle handle3;
970 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
976 OC_DISCOVERABLE|OC_OBSERVABLE));
977 url = OCGetResourceUri(handle3);
978 EXPECT_STREQ("/a/led3", url);
980 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_LL));
981 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle3, OC_RSRVD_INTERFACE_BATCH));
983 OCResourceHandle handle4;
984 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
991 url = OCGetResourceUri(handle4);
992 EXPECT_STREQ("/a/led4", url);
994 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle4, "core.brightled"));
995 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_LL));
996 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle4, OC_RSRVD_INTERFACE_BATCH));
998 //EXPECT_EQ(OC_STACK_OK, OCHandleServerRequest(&res, uri, query, req, rsp));
1000 EXPECT_EQ(OC_STACK_OK, OCStop());
1003 TEST(StackBind, BindResourceTypeNameBad)
1005 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1006 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameBad test");
1007 InitStack(OC_SERVER);
1009 OCResourceHandle handle;
1010 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1016 OC_DISCOVERABLE|OC_OBSERVABLE));
1018 uint8_t numResourceTypes;
1019 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1020 EXPECT_EQ(1, numResourceTypes);
1021 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1022 EXPECT_STREQ("core.led", resourceTypeName);
1024 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceTypeToResource(handle, NULL));
1026 EXPECT_EQ(OC_STACK_OK, OCStop());
1029 TEST(StackBind, BindResourceTypeNameGood)
1031 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1032 OIC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood test");
1033 InitStack(OC_SERVER);
1035 OCResourceHandle handle;
1036 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1042 OC_DISCOVERABLE|OC_OBSERVABLE));
1044 uint8_t numResourceTypes;
1045 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1046 EXPECT_EQ(1, numResourceTypes);
1047 const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
1048 EXPECT_STREQ("core.led", resourceTypeName);
1050 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1051 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1052 EXPECT_EQ(2, numResourceTypes);
1053 resourceTypeName = OCGetResourceTypeName(handle, 1);
1054 EXPECT_STREQ("core.brightled", resourceTypeName);
1056 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1057 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1058 EXPECT_EQ(3, numResourceTypes);
1059 resourceTypeName = OCGetResourceTypeName(handle, 2);
1060 EXPECT_STREQ("core.reallybrightled", resourceTypeName);
1062 EXPECT_EQ(OC_STACK_OK, OCStop());
1065 TEST(StackBind, BindResourceTypeAttribRepGood)
1067 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1068 OIC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
1069 InitStack(OC_SERVER);
1071 OCResourceHandle handle;
1072 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1078 OC_DISCOVERABLE|OC_OBSERVABLE));
1080 uint8_t numResourceTypes;
1081 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1082 EXPECT_EQ(1, numResourceTypes);
1084 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
1085 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1086 EXPECT_EQ(2, numResourceTypes);
1088 EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
1089 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
1090 EXPECT_EQ(3, numResourceTypes);
1092 EXPECT_EQ(OC_STACK_OK, OCStop());
1096 TEST(StackBind, BindResourceInterfaceNameBad)
1098 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1099 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
1100 InitStack(OC_SERVER);
1102 OCResourceHandle handle;
1103 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1109 OC_DISCOVERABLE|OC_OBSERVABLE));
1111 uint8_t numResourceInterfaces;
1112 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1113 EXPECT_EQ(2, numResourceInterfaces);
1114 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1115 EXPECT_STREQ("core.rw", resourceInterfaceName);
1117 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, NULL));
1119 EXPECT_EQ(OC_STACK_OK, OCStop());
1122 TEST(StackBind, BindResourceInterfaceNameGood)
1124 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1125 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
1126 InitStack(OC_SERVER);
1128 OCResourceHandle handle;
1129 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1135 OC_DISCOVERABLE|OC_OBSERVABLE));
1137 uint8_t numResourceInterfaces;
1138 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1139 EXPECT_EQ(2, numResourceInterfaces);
1140 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
1141 EXPECT_STREQ("core.rw", resourceInterfaceName);
1143 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1145 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1146 EXPECT_EQ(3, numResourceInterfaces);
1147 resourceInterfaceName = OCGetResourceInterfaceName(handle, 2);
1148 EXPECT_STREQ("core.r", resourceInterfaceName);
1150 EXPECT_EQ(OC_STACK_OK, OCStop());
1153 TEST(StackBind, BindResourceInterfaceMethodsBad)
1155 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1156 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
1157 InitStack(OC_SERVER);
1159 OCResourceHandle handle;
1160 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1166 OC_DISCOVERABLE|OC_OBSERVABLE));
1168 uint8_t numResourceInterfaces;
1169 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1170 EXPECT_EQ(2, numResourceInterfaces);
1172 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, 0));
1174 EXPECT_EQ(OC_STACK_OK, OCStop());
1177 TEST(StackBind, BindResourceInterfaceMethodsGood)
1179 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1180 OIC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
1181 InitStack(OC_SERVER);
1183 OCResourceHandle handle;
1184 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1190 OC_DISCOVERABLE|OC_OBSERVABLE));
1192 uint8_t numResourceInterfaces;
1193 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1194 EXPECT_EQ(2, numResourceInterfaces);
1196 EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
1198 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
1199 EXPECT_EQ(3, numResourceInterfaces);
1201 EXPECT_EQ(OC_STACK_OK, OCStop());
1204 TEST(StackBind, BindContainedResourceBad)
1206 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1207 OIC_LOG(INFO, TAG, "Starting BindContainedResourceBad test");
1208 InitStack(OC_SERVER);
1210 OCResourceHandle containerHandle;
1211 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1217 OC_DISCOVERABLE|OC_OBSERVABLE));
1219 OCResourceHandle handle0;
1220 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1226 OC_DISCOVERABLE|OC_OBSERVABLE));
1228 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResource(containerHandle, containerHandle));
1230 EXPECT_EQ(OC_STACK_ERROR, OCBindResource((OCResourceHandle) 0, handle0));
1232 EXPECT_EQ(OC_STACK_OK, OCStop());
1235 TEST(StackBind, BindContainedResourceGood)
1237 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1238 OIC_LOG(INFO, TAG, "Starting BindContainedResourceGood test");
1239 InitStack(OC_SERVER);
1241 uint8_t numResources = 0;
1242 uint8_t numExpectedResources = 0;
1244 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1246 OCResourceHandle containerHandle;
1247 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1253 OC_DISCOVERABLE|OC_OBSERVABLE));
1254 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1255 EXPECT_EQ(++numExpectedResources, numResources);
1257 OCResourceHandle handle0;
1258 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1264 OC_DISCOVERABLE|OC_OBSERVABLE));
1265 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1266 EXPECT_EQ(++numExpectedResources, numResources);
1268 OCResourceHandle handle1;
1269 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1275 OC_DISCOVERABLE|OC_OBSERVABLE));
1276 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1277 EXPECT_EQ(++numExpectedResources, numResources);
1279 OCResourceHandle handle2;
1280 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1286 OC_DISCOVERABLE|OC_OBSERVABLE));
1287 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1288 EXPECT_EQ(++numExpectedResources, numResources);
1290 OCResourceHandle handle3;
1291 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1297 OC_DISCOVERABLE|OC_OBSERVABLE));
1298 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1299 EXPECT_EQ(++numExpectedResources, numResources);
1301 OCResourceHandle handle4;
1302 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1308 OC_DISCOVERABLE|OC_OBSERVABLE));
1309 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1310 EXPECT_EQ(++numExpectedResources, numResources);
1312 OCResourceHandle handle5;
1313 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1319 OC_DISCOVERABLE|OC_OBSERVABLE));
1320 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1321 EXPECT_EQ(++numExpectedResources, numResources);
1324 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle0));
1325 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle1));
1326 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle2));
1327 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle3));
1328 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle4));
1329 EXPECT_EQ(OC_STACK_OK, OCBindResource(containerHandle, handle5));
1331 EXPECT_EQ(handle0, OCGetResourceHandleFromCollection(containerHandle, 0));
1332 EXPECT_EQ(handle1, OCGetResourceHandleFromCollection(containerHandle, 1));
1333 EXPECT_EQ(handle2, OCGetResourceHandleFromCollection(containerHandle, 2));
1334 EXPECT_EQ(handle3, OCGetResourceHandleFromCollection(containerHandle, 3));
1335 EXPECT_EQ(handle4, OCGetResourceHandleFromCollection(containerHandle, 4));
1336 EXPECT_EQ(handle5, OCGetResourceHandleFromCollection(containerHandle, 5));
1338 EXPECT_EQ(OC_STACK_OK, OCStop());
1342 TEST(StackBind, BindEntityHandlerBad)
1344 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1345 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerBad test");
1346 InitStack(OC_SERVER);
1348 OCResourceHandle handle;
1349 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1355 OC_DISCOVERABLE|OC_OBSERVABLE));
1357 EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceHandler(NULL, NULL, NULL));
1359 EXPECT_EQ(OC_STACK_OK, OCStop());
1362 TEST(StackBind, BindEntityHandlerGood)
1364 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1365 OIC_LOG(INFO, TAG, "Starting BindEntityHandlerGood test");
1366 InitStack(OC_SERVER);
1368 OCResourceHandle handle;
1369 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
1375 OC_DISCOVERABLE|OC_OBSERVABLE));
1377 OCEntityHandler myHandler = entityHandler;
1379 EXPECT_EQ(OC_STACK_OK, OCBindResourceHandler(handle, myHandler, NULL));
1381 EXPECT_EQ(myHandler, OCGetResourceHandler(handle));
1383 EXPECT_EQ(OC_STACK_OK, OCStop());
1386 TEST(StackResourceAccess, GetResourceByIndex)
1388 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1389 OIC_LOG(INFO, TAG, "Starting GetResourceByIndex test");
1390 InitStack(OC_SERVER);
1392 uint8_t numResources = 0;
1393 uint8_t numExpectedResources = 0;
1394 uint8_t resourceIndex = 0;
1395 uint8_t prevResources = 0;
1396 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1397 prevResources = numExpectedResources;
1398 OCResourceHandle containerHandle;
1399 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&containerHandle,
1405 OC_DISCOVERABLE|OC_OBSERVABLE));
1406 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1407 EXPECT_EQ(++numExpectedResources, numResources);
1409 OCResourceHandle handle0;
1410 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1416 OC_DISCOVERABLE|OC_OBSERVABLE));
1417 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1418 EXPECT_EQ(++numExpectedResources, numResources);
1420 OCResourceHandle handle1;
1421 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1427 OC_DISCOVERABLE|OC_OBSERVABLE));
1428 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1429 EXPECT_EQ(++numExpectedResources, numResources);
1431 OCResourceHandle handle2;
1432 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1438 OC_DISCOVERABLE|OC_OBSERVABLE));
1439 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1440 EXPECT_EQ(++numExpectedResources, numResources);
1442 OCResourceHandle handle3;
1443 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1449 OC_DISCOVERABLE|OC_OBSERVABLE));
1450 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1451 EXPECT_EQ(++numExpectedResources, numResources);
1453 OCResourceHandle handle4;
1454 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle4,
1460 OC_DISCOVERABLE|OC_OBSERVABLE));
1461 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1462 EXPECT_EQ(++numExpectedResources, numResources);
1464 OCResourceHandle handle5;
1465 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle5,
1471 OC_DISCOVERABLE|OC_OBSERVABLE));
1472 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1473 EXPECT_EQ(++numExpectedResources, numResources);
1474 resourceIndex += prevResources;
1475 EXPECT_EQ(containerHandle, OCGetResourceHandle(resourceIndex));
1476 EXPECT_EQ(handle0, OCGetResourceHandle(++resourceIndex));
1477 EXPECT_EQ(handle1, OCGetResourceHandle(++resourceIndex));
1478 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1479 EXPECT_EQ(handle3, OCGetResourceHandle(++resourceIndex));
1480 EXPECT_EQ(handle4, OCGetResourceHandle(++resourceIndex));
1481 EXPECT_EQ(handle5, OCGetResourceHandle(++resourceIndex));
1483 EXPECT_EQ(OC_STACK_OK, OCStop());
1486 TEST(StackResourceAccess, DeleteHeadResource)
1488 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1489 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource test");
1490 InitStack(OC_SERVER);
1492 uint8_t numResources = 0;
1493 uint8_t numExpectedResources = 0;
1495 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1497 OCResourceHandle handle0;
1498 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1504 OC_DISCOVERABLE|OC_OBSERVABLE));
1505 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1506 EXPECT_EQ(++numExpectedResources, numResources);
1508 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1509 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1510 EXPECT_EQ(--numExpectedResources, numResources);
1512 EXPECT_EQ(OC_STACK_OK, OCStop());
1515 TEST(StackResourceAccess, DeleteHeadResource2)
1517 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1518 OIC_LOG(INFO, TAG, "Starting DeleteHeadResource2 test");
1519 InitStack(OC_SERVER);
1521 uint8_t numResources = 0;
1522 uint8_t numExpectedResources = 0;
1524 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1525 OCResourceHandle handle0;
1526 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1532 OC_DISCOVERABLE|OC_OBSERVABLE));
1533 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1534 EXPECT_EQ(++numExpectedResources, numResources);
1536 OCResourceHandle handle1;
1537 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1543 OC_DISCOVERABLE|OC_OBSERVABLE));
1544 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1545 EXPECT_EQ(++numExpectedResources, numResources);
1547 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle0));
1548 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1549 EXPECT_EQ(--numExpectedResources, numResources);
1551 EXPECT_EQ(handle1, OCGetResourceHandle(numResources - 1));
1553 EXPECT_EQ(OC_STACK_OK, OCStop());
1557 TEST(StackResourceAccess, DeleteLastResource)
1559 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1560 OIC_LOG(INFO, TAG, "Starting DeleteLastResource test");
1561 InitStack(OC_SERVER);
1563 uint8_t numResources = 0;
1564 uint8_t numExpectedResources = 0;
1566 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1568 OCResourceHandle handle0;
1569 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1575 OC_DISCOVERABLE|OC_OBSERVABLE));
1576 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1577 EXPECT_EQ(++numExpectedResources, numResources);
1579 OCResourceHandle handle1;
1580 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1586 OC_DISCOVERABLE|OC_OBSERVABLE));
1587 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1588 EXPECT_EQ(++numExpectedResources, numResources);
1590 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1591 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1592 EXPECT_EQ(--numExpectedResources, numResources);
1594 EXPECT_EQ(handle0, OCGetResourceHandle(numResources - 1));
1596 OCResourceHandle handle2;
1597 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1603 OC_DISCOVERABLE|OC_OBSERVABLE));
1604 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1605 EXPECT_EQ(++numExpectedResources, numResources);
1607 EXPECT_EQ(OC_STACK_OK, OCStop());
1610 TEST(StackResourceAccess, DeleteMiddleResource)
1612 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1613 OIC_LOG(INFO, TAG, "Starting DeleteMiddleResource test");
1614 InitStack(OC_SERVER);
1616 uint8_t numResources = 0;
1617 uint8_t numExpectedResources = 0;
1618 uint8_t resourceIndex = InitResourceIndex();
1620 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numExpectedResources));
1621 resourceIndex = numExpectedResources;
1622 OCResourceHandle handle0;
1623 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle0,
1629 OC_DISCOVERABLE|OC_OBSERVABLE));
1630 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1631 EXPECT_EQ(++numExpectedResources, numResources);
1633 OCResourceHandle handle1;
1634 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1640 OC_DISCOVERABLE|OC_OBSERVABLE));
1641 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1642 EXPECT_EQ(++numExpectedResources, numResources);
1644 OCResourceHandle handle2;
1645 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1651 OC_DISCOVERABLE|OC_OBSERVABLE));
1652 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1653 EXPECT_EQ(++numExpectedResources, numResources);
1655 EXPECT_EQ(OC_STACK_OK, OCDeleteResource(handle1));
1656 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResources(&numResources));
1657 EXPECT_EQ(--numExpectedResources, numResources);
1659 EXPECT_EQ(handle0, OCGetResourceHandle(resourceIndex));
1660 EXPECT_EQ(handle2, OCGetResourceHandle(++resourceIndex));
1662 // Make sure the resource elements are still correct
1663 uint8_t numResourceInterfaces;
1664 EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle2, &numResourceInterfaces));
1665 EXPECT_EQ(2, numResourceInterfaces);
1666 const char *resourceInterfaceName = OCGetResourceInterfaceName(handle2, 1);
1667 EXPECT_STREQ("core.rw", resourceInterfaceName);
1669 EXPECT_EQ(OC_STACK_OK, OCStop());
1672 TEST(PODTests, OCHeaderOption)
1674 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1677 TEST(PODTests, OCCallbackData)
1679 EXPECT_TRUE(std::is_pod<OCHeaderOption>::value);
1682 TEST(OCDoDirectPairingTests, Nullpeer)
1684 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(NULL, NULL, pmSel, &pinNumber, &resultCallback));
1687 TEST(OCDoDirectPairingTests, NullCallback)
1689 EXPECT_EQ(OC_STACK_INVALID_CALLBACK,OCDoDirectPairing(NULL, &peer, pmSel, &pinNumber, NULL));
1692 TEST(OCDoDirectPairingTests, NullpinNumber)
1694 EXPECT_EQ(OC_STACK_INVALID_PARAM,OCDoDirectPairing(NULL, &peer, pmSel, NULL, &resultCallback));
1697 TEST(StackResource, MultipleResourcesDiscovery)
1699 itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
1700 OIC_LOG(INFO, TAG, "Starting MultipleResourcesDiscovery test");
1701 InitStack(OC_SERVER);
1703 OCResourceHandle handle1;
1704 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle1,
1710 OC_DISCOVERABLE|OC_OBSERVABLE));
1712 OCResourceHandle handle2;
1713 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle2,
1719 OC_DISCOVERABLE|OC_OBSERVABLE));
1720 OCResourceHandle handle3;
1721 EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle3,
1727 OC_DISCOVERABLE|OC_OBSERVABLE));
1728 /* Start a discovery query*/
1729 char szQueryUri[MAX_QUERY_LENGTH] = "/oic/res?if=oic.if.ll";
1730 OCCallbackData cbData;
1731 cbData.cb = discoveryCallback;
1732 cbData.context = (void*)DEFAULT_CONTEXT_VALUE;
1736 EXPECT_EQ(OC_STACK_OK, OCDoResource(&handle,
1747 EXPECT_EQ(OC_STACK_OK, OCStop());