feat: copy and paste arrangement phrases with independent clip snapshots

This commit is contained in:
Johannes Findeisen 2026-11-06 00:15:01 +01:00
commit b60501f317
9 changed files with 110 additions and 4 deletions

View file

@ -24,5 +24,18 @@ int main(void)
ids[1]=a;assert(xtc_project_transform_clips(p,ids,2,XTC_CLIPS_DELETE,0,NULL)==XTC_ERR_INVALID_ARGUMENT);
ids[1]=UINT64_MAX;assert(xtc_project_transform_clips(p,ids,2,XTC_CLIPS_MOVE,1,NULL)==XTC_ERR_NOT_FOUND);
assert(xtc_project_transform_clips(p,ids,0,XTC_CLIPS_MOVE,1,NULL)==XTC_ERR_INVALID_ARGUMENT);
{
xtc_clipboard *board=NULL;xtc_project *dest=NULL;uint64_t dt;
ids[0]=a;ids[1]=b;assert(xtc_clipboard_create(p,ids,2,&board)==XTC_OK);
assert(xtc_clipboard_count(board)==2);assert(xtc_project_create(&dest)==XTC_OK);
assert(xtc_project_add_track(dest,"Destination",&dt)==XTC_OK);
assert(xtc_project_remove_clip(p,a)==XTC_OK);
assert(xtc_clipboard_paste(board,dest,dt,0,out)==XTC_OK);
assert(xtc_project_find_clip(dest,out[0],&c)==XTC_OK && c.start_tick==0 && c.midi);
assert(xtc_project_note_count(dest,&notes)==XTC_OK && notes==1);
assert(xtc_clipboard_paste(board,dest,dt,XTC_PROJECT_MAX_TICK,out)==XTC_ERR_INVALID_ARGUMENT);
assert(xtc_project_get_counts(dest,&tracks,&clips)==XTC_OK && clips==2);
xtc_clipboard_destroy(board);xtc_project_destroy(dest);
}
xtc_project_destroy(p);puts("Modern editing tests passed.");return 0;
}