GCancellable *cancellable,
GError **error)
{
- retv_if(proxy == NULL, NULL);
+ retv_if(proxy == nullptr, nullptr);
if (proxy == GINT_TO_POINTER(0x1234))
return _handle_sync_method(method_name, parameters);
if (proxy == GINT_TO_POINTER(0x5678))
- return _handle_get_property(parameters);
+ return _handle_property(method_name, parameters);
+
+ return nullptr;
}
void g_object_unref(gpointer object)
static GVariant *__property_device_role()
{
- return g_variant_new("(v)", g_variant_new("s", "router"));
+ return g_variant_new("(v)", g_variant_new("s", "child"));
+}
+
+static GVariant *__property_link_mode()
+{
+ return g_variant_new("(i)", THREAD_ERROR_NONE);
}
struct {
};
struct {
+ const gchar *method_name;
const gchar *property_name;
GVariant *(*handler)(void);
} thread_gdbus_property_list[] = {
{
+ "Get",
THREAD_DBUS_PROPERTY_DEVICE_ROLE,
__property_device_role,
},
{
+ "Set",
+ THREAD_DBUS_PROPERTY_LINK_MODE,
+ __property_link_mode,
+ },
+ {
NULL,
NULL,
}
return (g_strcmp0(thread_gdbus_method_list[i].method_name, method_name) == 0);
}
-static bool __is_same_property(int i, const char *property_name)
+static bool __is_same_property(int i, const char *method_name, const char *property_name)
{
- return (g_strcmp0(thread_gdbus_property_list[i].property_name, property_name) == 0);
+ return (g_strcmp0(thread_gdbus_property_list[i].method_name, method_name) == 0
+ && g_strcmp0(thread_gdbus_property_list[i].property_name, property_name) == 0);
}
guint _subscribe_signal(const char *interface_name,
}
}
-GVariant *_handle_get_property(GVariant *parameters)
+GVariant *_handle_property(const gchar *method_name,
+ GVariant *parameters)
{
- const char *property_name;
- g_variant_get(parameters, "(ss)", nullptr, &property_name);
+ const char *property_name = nullptr;
+ if (g_strcmp0(method_name, "Get") == 0)
+ g_variant_get(parameters, "(ss)", nullptr, &property_name);
+ if (g_strcmp0(method_name, "Set") == 0)
+ g_variant_get(parameters, "(ssv)", nullptr, &property_name, nullptr);
for (int i = 0; ; ++i) {
- if (thread_gdbus_property_list[i].property_name == NULL)
+ if (thread_gdbus_property_list[i].method_name == NULL)
return nullptr;
- if (__is_same_property(i, property_name))
+ if (__is_same_property(i, method_name, property_name))
return thread_gdbus_property_list[i].handler();
}
}
\ No newline at end of file
EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
EXPECT_EQ(THREAD_ERROR_NONE,
thread_set_device_role_changed_cb(instance, deviceRoleCb, nullptr));
+}
+
+TEST_F(ThreadCoreTest, SetDeviceTypeNotInitialized)
+{
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());
+ EXPECT_EQ(THREAD_ERROR_NOT_INITIALIZED,
+ thread_set_device_type(instance, THREAD_DEVICE_TYPE_ROUTER));
+}
+
+TEST_F(ThreadCoreTest, SetDeviceTypeInvalidParameter)
+{
+ EXPECT_EQ(THREAD_ERROR_INVALID_PARAMETER,
+ thread_set_device_type(instance, THREAD_DEVICE_TYPE_ROUTER));
+}
+
+TEST_F(ThreadCoreTest, SetDeviceTypeErrorNone)
+{
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_set_device_type(instance, THREAD_DEVICE_TYPE_MINIMAL_END_DEVICE));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_set_device_type(instance, THREAD_DEVICE_TYPE_SLEEPY_END_DEVICE));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_set_device_type(instance, THREAD_DEVICE_TYPE_ROUTER));
}
\ No newline at end of file