+ BT_EVENT_CLASS_PUT_REF_AND_RESET(user_c.ec);
+}
+
+static
+bt_component_class_initialize_method_status src_init(
+ bt_self_component_source *self_comp,
+ bt_self_component_source_configuration *config,
+ const bt_value *params, void *init_method_data)
+{
+ test_example_scenario(self_comp);
+ return BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK;
+}
+
+static
+bt_message_iterator_class_next_method_status src_iter_next(
+ bt_self_message_iterator *self_iterator,
+ bt_message_array_const msgs, uint64_t capacity,
+ uint64_t *count)
+{
+ return BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
+}
+
+static void test_example_scenario_in_graph(void)
+{
+ bt_message_iterator_class *msg_iter_cls;
+ bt_component_class_source *comp_cls;
+ bt_graph *graph;
+ int ret;
+
+ msg_iter_cls = bt_message_iterator_class_create(src_iter_next);
+ BT_ASSERT(msg_iter_cls);
+
+ comp_cls = bt_component_class_source_create("src", msg_iter_cls);
+ BT_ASSERT(comp_cls);
+ ret = bt_component_class_source_set_initialize_method(comp_cls, src_init);
+ BT_ASSERT(ret == 0);
+ graph = bt_graph_create(0);
+ ret = bt_graph_add_source_component(graph, comp_cls, "src-comp",
+ NULL, BT_LOGGING_LEVEL_NONE, NULL);
+ BT_ASSERT(ret == 0);
+ bt_graph_put_ref(graph);
+ bt_component_class_source_put_ref(comp_cls);
+ bt_message_iterator_class_put_ref(msg_iter_cls);