feat: compare mixer A/B snapshots with undo and qualify modern editing workflows
This commit is contained in:
parent
310b81ec4d
commit
1b668068de
14 changed files with 261 additions and 34 deletions
|
|
@ -4,6 +4,7 @@
|
|||
#include "xtc/xtc_native.h"
|
||||
#include "xtc/xtc_control.h"
|
||||
#include "xtc/xtc_plugin.h"
|
||||
#include "xtc/xtc_editing.h"
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
|
@ -177,8 +178,52 @@ static void builtin_failures(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void modern_edit_failures(void)
|
||||
{
|
||||
xtc_project *p=NULL;xtc_clipboard *board=NULL;xtc_mix_snapshot *mix=NULL;
|
||||
uint64_t track,clip,note;int operation,failure;
|
||||
xtc_midi_transform edit={0};edit.grid=240;edit.swing=50;edit.strength=100;
|
||||
assert(xtc_project_create(&p)==XTC_OK);
|
||||
assert(xtc_project_add_track(p,"Track",&track)==XTC_OK);
|
||||
assert(xtc_project_add_midi_clip(p,track,960,1920,&clip)==XTC_OK);
|
||||
assert(xtc_project_add_note(p,clip,230,120,61,100,0,¬e)==XTC_OK);
|
||||
assert(xtc_clipboard_create(p,&clip,1,&board)==XTC_OK);
|
||||
assert(xtc_mix_snapshot_create(p,&mix)==XTC_OK);
|
||||
for(operation=0;operation<7;++operation) {
|
||||
int succeeded=0;
|
||||
for(failure=0;failure<32;++failure) {
|
||||
xtc_project *copy=NULL;xtc_clipboard *created=NULL;xtc_mix_snapshot *captured=NULL;
|
||||
uint64_t output=999;xtc_clip_info c;xtc_note_info n;size_t tracks,clips;xtc_result r;
|
||||
assert(xtc_project_clone(p,©)==XTC_OK);
|
||||
fail_after=failure;
|
||||
switch(operation) {
|
||||
case 0:r=xtc_project_transform_clips(copy,&clip,1,XTC_CLIPS_DUPLICATE,1920,&output);break;
|
||||
case 1:r=xtc_clipboard_create(copy,&clip,1,&created);break;
|
||||
case 2:r=xtc_clipboard_paste(board,copy,track,3840,&output);break;
|
||||
case 3:r=xtc_project_repeat_clips(copy,&clip,1,2);break;
|
||||
case 4:r=xtc_project_transform_midi(copy,&clip,1,&edit);break;
|
||||
case 5:r=xtc_mix_snapshot_create(copy,&captured);break;
|
||||
default:r=xtc_mix_snapshot_recall(mix,copy);break;
|
||||
}
|
||||
fail_after=-1;
|
||||
if(r==XTC_OK)succeeded=1;
|
||||
else {
|
||||
assert(r==XTC_ERR_OUT_OF_MEMORY && output==999 && !created && !captured);
|
||||
assert(xtc_project_get_counts(copy,&tracks,&clips)==XTC_OK && clips==1);
|
||||
assert(xtc_project_find_clip(copy,clip,&c)==XTC_OK && c.start_tick==960);
|
||||
assert(xtc_project_get_note(copy,0,&n)==XTC_OK && n.start_tick==230 && n.id==note);
|
||||
{uint64_t probe;assert(xtc_project_duplicate_clip(copy,clip,track,3840,&probe)==XTC_OK && probe==clip+1);}
|
||||
}
|
||||
xtc_clipboard_destroy(created);xtc_mix_snapshot_destroy(captured);xtc_project_destroy(copy);
|
||||
if(succeeded)break;
|
||||
}
|
||||
assert(succeeded);
|
||||
}
|
||||
xtc_clipboard_destroy(board);xtc_mix_snapshot_destroy(mix);xtc_project_destroy(p);
|
||||
}
|
||||
int main(void)
|
||||
{
|
||||
modern_edit_failures();
|
||||
builtin_failures();
|
||||
graph_limits();
|
||||
history_reservations();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue