void
ags_recall_dependency_test_find_dependency()
{
  AgsRecall *recall[3];
  AgsRecallDependency *recall_dependency[3];
  
  GList *list, *current;

  list = NULL;
  
  /* dependency #0 */
  recall[0] = g_object_new(AGS_TYPE_RECALL,
			NULL);
  
  recall_dependency[0] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall[0],
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[0]);
  
  /* dependency #1 */
  recall[1] = g_object_new(AGS_TYPE_RECALL,
			   NULL);
  
  recall_dependency[1] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall[1],
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[1]);

  /* dependency #2 */
  recall[2] = g_object_new(AGS_TYPE_RECALL,
			   NULL);
  
  recall_dependency[2] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall[2],
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[2]);

  /* find and assert */
  CU_ASSERT((current = ags_recall_dependency_find_dependency(list,
							     recall[0])) != NULL &&
	    AGS_RECALL_DEPENDENCY(current->data)->dependency == recall[0]);

  CU_ASSERT((current = ags_recall_dependency_find_dependency(list,
							     recall[1])) != NULL &&
	    AGS_RECALL_DEPENDENCY(current->data)->dependency == recall[1]);

  CU_ASSERT((current = ags_recall_dependency_find_dependency(list,
							     recall[2])) != NULL &&
	    AGS_RECALL_DEPENDENCY(current->data)->dependency == recall[2]);
}
Example #2
0
/**
 * ags_recall_remove_dependency:
 * @recall an #AgsRecall
 * @dependency an #AgsRecall
 *
 * Remove a prior associated dependency.
 */
void
ags_recall_remove_dependency(AgsRecall *recall, AgsRecall *dependency)
{
  AgsRecallDependency *recall_dependency;
  GList *dependencies;

  if(recall == NULL ||
     dependency == NULL)
    return;

  dependencies = ags_recall_dependency_find_dependency(recall->dependencies, (GObject *) dependency);

  if(dependencies == NULL)
    return;

  recall_dependency = AGS_RECALL_DEPENDENCY(dependencies->data);
  recall->dependencies = g_list_delete_link(recall->dependencies, dependencies);
  g_object_unref(G_OBJECT(recall_dependency));
}