RFC FIXME: this doesn't work well :/ In the first iteration the TYPE_TEST_IF is ambiguous (matched 2 times) so OBJECT_CLASS_CHECK() triggers the cast exception.
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> --- tests/unit/check-qom-interface.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/unit/check-qom-interface.c b/tests/unit/check-qom-interface.c index c43a63e8b3c..8a997220e06 100644 --- a/tests/unit/check-qom-interface.c +++ b/tests/unit/check-qom-interface.c @@ -115,10 +115,26 @@ static void interface_ambiguous_test(void) { Object *obj = object_new(TYPE_INDIRECT_IMPL); ObjectClass *klass = object_get_class(obj); + GSList *list, *el; g_assert(object_class_implements_type(klass, TYPE_TEST_IF2A)); g_assert(object_class_implements_type(klass, TYPE_TEST_IF2B)); g_assert(object_class_implements_type(klass, TYPE_TEST_IF)); + list = object_class_get_list(TYPE_TEST_IF, true); + for (el = list; el; el = el->next) { + TestIfClass *ioc = el->data; + printf("%x %x\n", ioc->test, PATTERN); + //g_assert(ioc->test == PATTERN); + } + g_free(list); + list = object_class_get_list(TYPE_TEST_IF2A, true); + for (el = list; el; el = el->next) { + TestIfClass *dc = OBJECT_CLASS_CHECK(TestIfClass, el->data, + TYPE_TEST_IF2A); + printf("%x %x\n", dc->test, PATTERN); + //g_assert(ioc->test == PATTERN); + } + g_free(list); object_unref(obj); } -- 2.47.1