1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include "test.h"
#include "fluidsynth.h" // use local fluidsynth header
#include "fluid_seq_queue.h"
// simple test to ensure that manually unregistering and deleting the internal fluid_seqbind_t works without crashing
int main(void)
{
fluid_event_t* evt1 = new_fluid_event();
fluid_event_t* evt2 = new_fluid_event();
fluid_event_set_time(evt1, 1);
fluid_event_set_time(evt2, 1);
// Note that event_compare() returns !leftIsBeforeRight
TEST_ASSERT( !event_compare_for_test(evt1, evt1));
TEST_ASSERT( !event_compare_for_test(evt2, evt2));
fluid_event_bank_select(evt1, 0, 0);
fluid_event_program_change(evt2, 0, 0);
TEST_ASSERT( !event_compare_for_test(evt1, evt2));
TEST_ASSERT(!!event_compare_for_test(evt2, evt1));
fluid_event_note(evt1, 0, 0, 0, 1);
TEST_ASSERT(!!event_compare_for_test(evt1, evt2));
TEST_ASSERT( !event_compare_for_test(evt2, evt1));
fluid_event_noteon(evt1, 0, 0, 60);
fluid_event_noteoff(evt2, 0, 0);
TEST_ASSERT(!!event_compare_for_test(evt1, evt2));
TEST_ASSERT( !event_compare_for_test(evt2, evt1));
// make sure noteons with vel=0 are handled like noteoffs
fluid_event_noteon(evt1, 0, 0, 60);
fluid_event_noteon(evt2, 0, 0, 0);
TEST_ASSERT(!!event_compare_for_test(evt1, evt2));
TEST_ASSERT( !event_compare_for_test(evt2, evt1));
// two noteoffs
fluid_event_noteon(evt1, 0, 0, 0);
fluid_event_noteoff(evt2, 0, 0);
TEST_ASSERT( !event_compare_for_test(evt1, evt2));
TEST_ASSERT( !event_compare_for_test(evt2, evt1));
fluid_event_unregistering(evt1);
fluid_event_system_reset(evt2);
TEST_ASSERT(!!event_compare_for_test(evt1, evt2));
TEST_ASSERT( !event_compare_for_test(evt2, evt1));
fluid_event_unregistering(evt1);
fluid_event_pan(evt2, 0, 0);
TEST_ASSERT( !event_compare_for_test(evt1, evt2));
TEST_ASSERT(!!event_compare_for_test(evt2, evt1));
fluid_event_modulation(evt1, 0, 0);
fluid_event_pan(evt2, 0, 0);
TEST_ASSERT( !event_compare_for_test(evt1, evt2));
TEST_ASSERT( !event_compare_for_test(evt2, evt1));
delete_fluid_event(evt1);
delete_fluid_event(evt2);
return EXIT_SUCCESS;
}
|