+TEST(StackBind, BindResourceTypeNameGood)
+{
+ itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
+ OC_LOG(INFO, TAG, "Starting BindResourceTypeNameGood test");
+ InitStack(OC_SERVER);
+
+ OCResourceHandle handle;
+ EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+ "core.led",
+ "core.rw",
+ "/a/led",
+ 0,
+ OC_DISCOVERABLE|OC_OBSERVABLE));
+
+ uint8_t numResourceTypes;
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+ EXPECT_EQ(1, numResourceTypes);
+ const char *resourceTypeName = OCGetResourceTypeName(handle, 0);
+ EXPECT_STREQ("core.led", resourceTypeName);
+
+ EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+ EXPECT_EQ(2, numResourceTypes);
+ resourceTypeName = OCGetResourceTypeName(handle, 1);
+ EXPECT_STREQ("core.brightled", resourceTypeName);
+
+ EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+ EXPECT_EQ(3, numResourceTypes);
+ resourceTypeName = OCGetResourceTypeName(handle, 2);
+ EXPECT_STREQ("core.reallybrightled", resourceTypeName);
+
+ EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackBind, BindResourceTypeAttribRepGood)
+{
+ itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
+ OC_LOG(INFO, TAG, "Starting BindResourceTypeAttribRepGood test");
+ InitStack(OC_SERVER);
+
+ OCResourceHandle handle;
+ EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+ "core.led",
+ "core.rw",
+ "/a/led",
+ 0,
+ OC_DISCOVERABLE|OC_OBSERVABLE));
+
+ uint8_t numResourceTypes;
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+ EXPECT_EQ(1, numResourceTypes);
+
+ EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.brightled"));
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+ EXPECT_EQ(2, numResourceTypes);
+
+ EXPECT_EQ(OC_STACK_OK, OCBindResourceTypeToResource(handle, "core.reallybrightled"));
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceTypes(handle, &numResourceTypes));
+ EXPECT_EQ(3, numResourceTypes);
+
+ EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+
+TEST(StackBind, BindResourceInterfaceNameBad)
+{
+ itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
+ OC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameBad test");
+ InitStack(OC_SERVER);
+
+ OCResourceHandle handle;
+ EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+ "core.led",
+ "core.rw",
+ "/a/led",
+ 0,
+ OC_DISCOVERABLE|OC_OBSERVABLE));
+
+ uint8_t numResourceInterfaces;
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+ EXPECT_EQ(1, numResourceInterfaces);
+ const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
+ EXPECT_STREQ("core.rw", resourceInterfaceName);
+
+ EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, NULL));
+
+ EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackBind, BindResourceInterfaceNameGood)
+{
+ itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
+ OC_LOG(INFO, TAG, "Starting BindResourceInterfaceNameGood test");
+ InitStack(OC_SERVER);
+
+ OCResourceHandle handle;
+ EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+ "core.led",
+ "core.rw",
+ "/a/led",
+ 0,
+ OC_DISCOVERABLE|OC_OBSERVABLE));
+
+ uint8_t numResourceInterfaces;
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+ EXPECT_EQ(1, numResourceInterfaces);
+ const char *resourceInterfaceName = OCGetResourceInterfaceName(handle, 0);
+ EXPECT_STREQ("core.rw", resourceInterfaceName);
+
+ EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
+
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+ EXPECT_EQ(2, numResourceInterfaces);
+ resourceInterfaceName = OCGetResourceInterfaceName(handle, 1);
+ EXPECT_STREQ("core.r", resourceInterfaceName);
+
+ EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackBind, BindResourceInterfaceMethodsBad)
+{
+ itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
+ OC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsBad test");
+ InitStack(OC_SERVER);
+
+ OCResourceHandle handle;
+ EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+ "core.led",
+ "core.rw",
+ "/a/led",
+ 0,
+ OC_DISCOVERABLE|OC_OBSERVABLE));
+
+ uint8_t numResourceInterfaces;
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+ EXPECT_EQ(1, numResourceInterfaces);
+
+ EXPECT_EQ(OC_STACK_INVALID_PARAM, OCBindResourceInterfaceToResource(handle, 0));
+
+ EXPECT_EQ(OC_STACK_OK, OCStop());
+}
+
+TEST(StackBind, BindResourceInterfaceMethodsGood)
+{
+ itst::DeadmanTimer killSwitch(SHORT_TEST_TIMEOUT);
+ OC_LOG(INFO, TAG, "Starting BindResourceInterfaceMethodsGood test");
+ InitStack(OC_SERVER);
+
+ OCResourceHandle handle;
+ EXPECT_EQ(OC_STACK_OK, OCCreateResource(&handle,
+ "core.led",
+ "core.rw",
+ "/a/led",
+ 0,
+ OC_DISCOVERABLE|OC_OBSERVABLE));
+
+ uint8_t numResourceInterfaces;
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+ EXPECT_EQ(1, numResourceInterfaces);
+
+ EXPECT_EQ(OC_STACK_OK, OCBindResourceInterfaceToResource(handle, "core.r"));
+
+ EXPECT_EQ(OC_STACK_OK, OCGetNumberOfResourceInterfaces(handle, &numResourceInterfaces));
+ EXPECT_EQ(2, numResourceInterfaces);