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));
}
void
ags_recall_dependency_test_find_dependency_by_provider()
{
  AgsChannel *channel[3];
  AgsAudio *audio[3];
  AgsRecall *recall;
  AgsRecallAudio *recall_audio;
  AgsRecallDependency *recall_dependency[6];
  
  GList *list, *current;

  list = NULL;

  /* dependency #0 */
  audio[0] = g_object_new(AGS_TYPE_AUDIO,
			  NULL);
  recall_audio = g_object_new(AGS_TYPE_RECALL_AUDIO,
			      "audio", audio[0],
			      NULL);
  recall = g_object_new(AGS_TYPE_RECALL_AUDIO_RUN,
			"recall-audio", recall_audio,
			NULL);
  
  recall_dependency[0] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall,
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[0]);
  
  /* dependency #1 */
  channel[0] = g_object_new(AGS_TYPE_CHANNEL,
			    NULL);
  recall = g_object_new(AGS_TYPE_RECALL_CHANNEL_RUN,
			"source", channel[0],
			NULL);
  
  recall_dependency[1] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall,
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[1]);

  /* dependency #2 */
  channel[1] = g_object_new(AGS_TYPE_CHANNEL,
			    NULL);
  recall = g_object_new(AGS_TYPE_RECALL_CHANNEL_RUN,
			"source", channel[1],
			NULL);
  
  recall_dependency[2] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall,
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[2]);

  /* dependency #3 */
  audio[1] = g_object_new(AGS_TYPE_AUDIO,
			  NULL);
  recall_audio = g_object_new(AGS_TYPE_RECALL_AUDIO,
			      "audio", audio[1],
			      NULL);
  recall = g_object_new(AGS_TYPE_RECALL_AUDIO_RUN,
			"recall-audio", recall_audio,
			NULL);
  
  recall_dependency[3] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall,
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[3]);

  /* dependency #4 */
  audio[2] = g_object_new(AGS_TYPE_AUDIO,
			  NULL);
  recall_audio = g_object_new(AGS_TYPE_RECALL_AUDIO,
			      "audio", audio[2],
			      NULL);
  recall = g_object_new(AGS_TYPE_RECALL_AUDIO_RUN,
			"recall-audio", recall_audio,
			NULL);
  
  recall_dependency[4] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall,
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[4]);

  /* dependency #5 */
  channel[2] = g_object_new(AGS_TYPE_CHANNEL,
			    NULL);
  recall = g_object_new(AGS_TYPE_RECALL_CHANNEL_RUN,
			"source", channel[2],
			NULL);
  
  recall_dependency[5] = g_object_new(AGS_TYPE_RECALL_DEPENDENCY,
				      "dependency", recall,
				      NULL);
  list = g_list_prepend(list,
			recall_dependency[5]);

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

  CU_ASSERT((current = ags_recall_dependency_find_dependency_by_provider(list,
									 audio[1])) != NULL &&
	    AGS_RECALL_AUDIO_RUN(AGS_RECALL_DEPENDENCY(current->data)->dependency)->recall_audio->audio == audio[1]);

  CU_ASSERT((current = ags_recall_dependency_find_dependency_by_provider(list,
									 audio[2])) != NULL &&
	    AGS_RECALL_AUDIO_RUN(AGS_RECALL_DEPENDENCY(current->data)->dependency)->recall_audio->audio == audio[2]);

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

  CU_ASSERT((current = ags_recall_dependency_find_dependency_by_provider(list,
									 channel[1])) != NULL &&
	    AGS_RECALL_CHANNEL_RUN(AGS_RECALL_DEPENDENCY(current->data)->dependency)->source == channel[1]);

  CU_ASSERT((current = ags_recall_dependency_find_dependency_by_provider(list,
									 channel[2])) != NULL &&
	    AGS_RECALL_CHANNEL_RUN(AGS_RECALL_DEPENDENCY(current->data)->dependency)->source == channel[2]);
}