void test_breakpoint_remove(void) { int i; int break_count = 0; CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); csoundCompileOrc(csound, "instr 1\nasig oscil 1, p4\nendin\n"); csoundInputMessage(csound, "i 1.1 0 1 440"); csoundInputMessage(csound, "i 1.2 0 1 880"); csoundInputMessage(csound, "i 1.1 0.1 1 440"); csoundStart(csound); csoundDebuggerInit(csound); csoundSetBreakpointCallback(csound, brkpt_cb2, (void *) &break_count); csoundSetInstrumentBreakpoint(csound, 1.1, 0); for (i = 0; i < 10; i++) { csoundPerformKsmps(csound); csoundDebugContinue(csound); } csoundRemoveInstrumentBreakpoint(csound, 1.1); for (i = 0; i < 10; i++) { csoundPerformKsmps(csound); csoundDebugContinue(csound); } CU_ASSERT(break_count == 1); csoundDebuggerClean(csound); csoundDestroy(csound); }
void test_string_channel(void) { const char orcS[] = "chn_S \"strchan1\",1\n chn_S \"strchan2\",2\n chn_S \"strchan3\",3\n instr 1\n endin\n"; csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=NULL"); csoundCompileOrc(csound, orcS); int err = csoundStart(csound); CU_ASSERT(err == CSOUND_SUCCESS); csoundSetStringChannel(csound, "testing", "ttt"); int len = csoundGetChannelDatasize(csound, "testing"); char string[len]; csoundGetStringChannel(csound, "testing", string); CU_ASSERT_STRING_EQUAL(string, "ttt"); csoundSetStringChannel(csound, "strchan1", "strchan1_val"); csoundSetStringChannel(csound, "strchan2", "strchan2_val"); csoundSetStringChannel(csound, "strchan3", "strchan3_val"); csoundGetStringChannel(csound, "strchan1", string); CU_ASSERT_STRING_EQUAL(string, "strchan1_val"); csoundGetStringChannel(csound, "strchan2", string); CU_ASSERT_STRING_EQUAL(string, "strchan2_val"); csoundGetStringChannel(csound, "strchan3", string); CU_ASSERT_STRING_EQUAL(string, "strchan3_val"); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_chn_hints(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); csoundCompileOrc(csound, orc6); (void)csoundStart(csound); // err = csoundPerformKsmps(csound); //Need this to load instr 0 controlChannelHints_t hints; hints.attributes = 0; CU_ASSERT_EQUAL(0, csoundGetControlChannelHints(csound, "chan", &hints)); CU_ASSERT_EQUAL(hints.x, 10); CU_ASSERT_EQUAL(hints.y, 10); CU_ASSERT_EQUAL(hints.width, 50); CU_ASSERT_EQUAL(hints.height, 100); CU_ASSERT_EQUAL(hints.attributes, 0); CU_ASSERT_EQUAL(0, csoundGetControlChannelHints(csound, "chan2", &hints)); CU_ASSERT_EQUAL(hints.x, 10); CU_ASSERT_EQUAL(hints.y, 10); CU_ASSERT_EQUAL(hints.width, 50); CU_ASSERT_EQUAL(hints.height, 100); CU_ASSERT_STRING_EQUAL(hints.attributes, "testattr"); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_control_channel_params(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=NULL"); //int argc = 2; csoundCompileOrc(csound, orc1); CU_ASSERT(csoundStart(csound) == CSOUND_SUCCESS); controlChannelHints_t hints; hints.behav = CSOUND_CONTROL_CHANNEL_INT; hints.dflt = 5; hints.min = 1; hints.max = 10; hints.attributes = NULL; csoundSetControlChannelHints(csound, "testing", hints); controlChannelHints_t hints2; csoundGetControlChannelHints(csound, "testing", &hints2); CU_ASSERT(hints2.behav == CSOUND_CONTROL_CHANNEL_INT); CU_ASSERT(hints2.dflt == 5); CU_ASSERT(hints2.min == 1); CU_ASSERT(hints2.max == 10); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_line_breakpoint_add_remove(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); count = 0; csoundCompileOrc(csound, "instr 1\n" "Svar init \"hello\"\n" "ksig line 0, p3, 1\n" "ksig2 line 1, p3, 0\n" "asig3 oscils 0.5, 440, 0.5\n" "endin\n"); csoundInputMessage(csound, "i 1 0 1.1 440"); csoundStart(csound); csoundDebuggerInit(csound); csoundSetBreakpointCallback(csound, brkpt_cb5, NULL); csoundSetBreakpoint(csound, 5, 1, 0); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundPerformKsmps(csound); // This block performs csoundPerformKsmps(csound); // This block breaks csoundRemoveBreakpoint(csound, 5, 1); csoundPerformKsmps(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); csoundDebuggerClean(csound); csoundDestroy(csound); CU_ASSERT_EQUAL(count, 2); }
void test_pvs_opcodes(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); int err = csoundCompileOrc(csound, orc5); CU_ASSERT(err == CSOUND_SUCCESS); err = csoundStart(csound); PVSDATEXT pvs_data, pvs_data2; memset(&pvs_data,0,sizeof(PVSDATEXT)); memset(&pvs_data2,0,sizeof(PVSDATEXT)); pvs_data.N = 16; pvs_data.winsize = 32; err = csoundSetPvsChannel(csound, &pvs_data, "1"); err = csoundGetPvsChannel(csound, &pvs_data2, "1"); CU_ASSERT_EQUAL(pvs_data.N, pvs_data2.N); MYFLT pFields[] = {1.0, 0.0, 1.0}; err = csoundScoreEvent(csound, 'i', pFields, 3); err = csoundPerformKsmps(csound); CU_ASSERT_EQUAL(32.0, csoundGetControlChannel(csound, "winsize", NULL)); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_buffer_run(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); int result = csoundCompileOrc(csound, "instr 1\n" "asig oscil 0.1, 440\n" "out asig\n" "endin\n"); csoundReadScore(csound, "i 1 0 0.1\n"); csoundStart(csound); csoundPerform(csound); while (csoundGetMessageCnt(csound)) { const char * msg = csoundGetFirstMessage(csound); CU_ASSERT_PTR_NOT_NULL(msg); csoundPopFirstMessage(csound); printf("CSOUND MESSAGE: %s", msg); } csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_debugger_init(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); csoundDebuggerInit(csound); csoundDebuggerClean(csound); csoundDestroy(csound); }
void test_add_callback(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); csoundDebuggerInit(csound); csoundSetBreakpointCallback(csound, brkpt_cb, NULL); csoundDebuggerClean(csound); csoundDestroy(csound); }
void test_add_bkpt(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); csoundDebuggerInit(csound); csoundSetBreakpoint(csound, 3, 0, 0); csoundSetBreakpoint(csound, 5, 1, 0); csoundSetInstrumentBreakpoint(csound, 3.4, 0); csoundSetInstrumentBreakpoint(csound, 1.1, 0); csoundClearBreakpoints(csound); csoundDebuggerClean(csound); csoundDestroy(csound); }
void test_no_callback(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); csoundStart(csound); csoundDebuggerInit(csound); csoundSetInstrumentBreakpoint(csound, 1, 0); csoundPerformKsmps(csound); csoundDebuggerClean(csound); csoundDestroy(csound); }
void test_line_breakpoint_orc_file(void) { FILE *f = fopen("debug.orc", "w"); CU_ASSERT_PTR_NOT_NULL(f); const char *orc = "\n" "instr 1\n" "Svar init \"hello\"\n" "ksig line 0, p3, 1\n" "ksig2 line 1, p3, 0\n" "asig3 oscils 0.5, 440, 0.5\n" "endin\n"; fprintf(f, "%s", orc); fclose(f); f = fopen("debug.sco", "w"); CU_ASSERT_PTR_NOT_NULL(f); const char *sco = "i 1 0 1\n"; fprintf(f, "%s", sco); fclose(f); count = 0; CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); const char* argv[] = {"csound", "debug.orc", "debug.sco"}; csoundCompile(csound, 3, (char **) argv); csoundDebuggerInit(csound); int line = 5; csoundSetBreakpointCallback(csound, brkpt_cb7, &line); csoundSetBreakpoint(csound, line, 0, 0); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundRemoveBreakpoint(csound, line, 0); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundPerformKsmps(csound); csoundDebugContinue(csound); line = 6; csoundSetBreakpoint(csound, line, 0, 0); csoundPerformKsmps(csound); csoundDebugContinue(csound); // csoundPerformKsmps(csound); csoundDebuggerClean(csound); CU_ASSERT_EQUAL(count, 2); csoundDestroy(csound); }
void test_bkpt_instrument(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); csoundCompileOrc(csound, "instr 1\n Svar init \"hello\"\n endin\n"); csoundInputMessage(csound, "i 1 0 1.1 440"); csoundStart(csound); csoundDebuggerInit(csound); csoundSetBreakpointCallback(csound, brkpt_cb4, NULL); csoundSetInstrumentBreakpoint(csound, 1, 0); csoundPerformKsmps(csound); csoundDebuggerClean(csound); csoundDestroy(csound); }
void test_control_channel(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); //int argc = 2; csoundCompileOrc(csound, orc1); CU_ASSERT(csoundStart(csound) == CSOUND_SUCCESS); csoundSetControlChannel(csound, "testing", 5.0); CU_ASSERT_EQUAL(5.0, csoundGetControlChannel(csound, "testing", NULL)); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_invalid_channel(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); csoundCompileOrc(csound, orc5); int err; CU_ASSERT_EQUAL(0.0, csoundGetControlChannel(csound, "nonexistent_channel", &err)); CU_ASSERT_EQUAL(err, CSOUND_SUCCESS); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_line_breakpoint(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); count = 0; csoundCompileOrc(csound, "instr 1\n" "Svar init \"hello\"\n" "ksig line 0, p3, 1\n" "ksig2 line 1, p3, 0\n" "asig3 oscils 0.5, 440, 0.5\n" "endin\n"); csoundInputMessage(csound, "i 1 0 1.1 440"); csoundStart(csound); csoundDebuggerInit(csound); csoundSetBreakpointCallback(csound, brkpt_cb6, NULL); csoundSetBreakpoint(csound, 5, 1, 0); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundPerformKsmps(csound); csoundSetBreakpoint(csound, 4, 1, 0); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundPerformKsmps(csound); csoundRemoveBreakpoint(csound, 4, 1); csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundSetBreakpoint(csound, 1, 1, 0); // This breakpoint shouldn't be triggered as it's an init opcode csoundPerformKsmps(csound); csoundDebugContinue(csound); csoundSetBreakpoint(csound, 2, 2, 0); // This breakpoint shouldn't be triggered as instr 2 is not defined csoundPerformKsmps(csound); csoundDebuggerClean(csound); csoundDestroy(csound); CU_ASSERT_EQUAL(count, 2); }
void test_channel_callbacks(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); csoundCompileOrc(csound, orc3); csoundSetInputChannelCallback(csound, (channelCallback_t) inputCallback); csoundSetOutputChannelCallback(csound, (channelCallback_t) outputCallback); int err = csoundStart(csound); CU_ASSERT(err == CSOUND_SUCCESS); MYFLT pFields[] = {1.0, 0.0, 1.0}; err = csoundScoreEvent(csound, 'i', pFields, 3); MYFLT pFields2[] = {2.0, 0.0, 1.0}; err += csoundScoreEvent(csound, 'i', pFields2, 3); CU_ASSERT(err == CSOUND_SUCCESS); err = csoundPerformKsmps(csound); CU_ASSERT(err == CSOUND_SUCCESS); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_channel_list(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); //int argc = 2; csoundCompileOrc(csound, orc2); CU_ASSERT(csoundStart(csound) == CSOUND_SUCCESS); controlChannelInfo_t *lst; int numchnls = csoundListChannels(csound, &lst); CU_ASSERT(numchnls == 2); CU_ASSERT_STRING_EQUAL(lst->name, "testing"); CU_ASSERT_EQUAL(lst->type, CSOUND_CONTROL_CHANNEL | CSOUND_INPUT_CHANNEL | CSOUND_OUTPUT_CHANNEL | CSOUND_CONTROL_CHANNEL_INT) CU_ASSERT_STRING_EQUAL(lst[1].name, "testing2"); csoundDeleteChannelList(csound, lst); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_create_buffer(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); int argc = 2; char *argv[] = {"csound", "-v"}; csoundCreateMessageBuffer(csound, 0); int result = csoundCompile(csound, argc, argv); int cnt = csoundGetMessageCnt(csound); CU_ASSERT(cnt > 0); const char * msg = csoundGetFirstMessage(csound); CU_ASSERT_PTR_NOT_NULL(msg); int newcnt = csoundGetMessageCnt(csound); CU_ASSERT_EQUAL(cnt, newcnt); csoundPopFirstMessage(csound); newcnt = csoundGetMessageCnt(csound); CU_ASSERT_EQUAL(cnt - 1, newcnt); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_channel_opcodes(void) { csoundSetGlobalEnv("OPCODE6DIR64", "../../"); CSOUND *csound = csoundCreate(0); csoundCreateMessageBuffer(csound, 0); csoundSetOption(csound, "--logfile=null"); csoundCompileOrc(csound, orc4); csoundSetInputChannelCallback(csound, (channelCallback_t) inputCallback2); csoundSetOutputChannelCallback(csound, (channelCallback_t) outputCallback2); int err = csoundStart(csound); CU_ASSERT(err == CSOUND_SUCCESS); csoundGetControlChannel(csound, "1", &err); CU_ASSERT(err == CSOUND_SUCCESS) csoundSetControlChannel(csound, "1", 5.0); MYFLT pFields[] = {1.0, 0.0, 1.0}; err = csoundScoreEvent(csound, 'i', pFields, 3); err = csoundPerformKsmps(csound); CU_ASSERT(err == CSOUND_SUCCESS); CU_ASSERT_EQUAL(5.0, csoundGetControlChannel(csound, "2", NULL)); MYFLT pFields2[] = {2.0, 0.0, 1.0}; err = csoundScoreEvent(csound, 'i', pFields2, 3); CU_ASSERT(err == CSOUND_SUCCESS); err = csoundPerformKsmps(csound); CU_ASSERT(err == CSOUND_SUCCESS); CU_ASSERT_EQUAL(6.0, csoundGetControlChannel(csound, "3", NULL)); MYFLT pFields3[] = {3.0, 0.0, 1.0}; err = csoundScoreEvent(csound, 'i', pFields3, 3); CU_ASSERT(err == CSOUND_SUCCESS); err = csoundPerformKsmps(csound); CU_ASSERT(err == CSOUND_SUCCESS); CU_ASSERT_EQUAL(7.0, csoundGetControlChannel(csound, "4", NULL)); csoundCleanup(csound); csoundDestroyMessageBuffer(csound); csoundDestroy(csound); }
void test_next(void) { CSOUND* csound = csoundCreate(NULL); csoundCreateMessageBuffer(csound, 0); count = 0; csoundCompileOrc(csound, "instr 1\n" "Svar init \"hello\"\n" "ksig line 0, p3, 1\n" "ksig2 line 1, p3, 0\n" "asig3 oscils 0.5, 440, 0.5\n" "endin\n" "instr 30\n" "kvar init 10\n" "kvar = kvar + 1\n" "ksig2 line 1, p3, 0\n" "kvar = kvar + 1\n" "endin\n"); csoundInputMessage(csound, "i 1 0 0.1"); csoundInputMessage(csound, "i 1.2 0 0.1"); csoundInputMessage(csound, "i 30.1 0 0.01"); csoundInputMessage(csound, "i 30 0 0.01"); csoundInputMessage(csound, "i 30 1 0.11"); csoundInputMessage(csound, "i 1.3 0 0.1"); csoundStart(csound); csoundDebuggerInit(csound); csoundSetBreakpointCallback(csound, brkpt_cb8, NULL); csoundSetInstrumentBreakpoint(csound, 1.2, 0); csoundPerformKsmps(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); // Only the first call should have effect as we have already stopped csoundDebugNext(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); // Ignored csoundDebugNext(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); // Ignored csoundDebugNext(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); // Ignored csoundDebugNext(csound); csoundPerformKsmps(csound); csoundPerformKsmps(csound); // Ignored csoundRemoveInstrumentBreakpoint(csound, 1.2); csoundDebugContinue(csound); int i; for (i = 0; i < 200; i++) { csoundPerformKsmps(csound); } csoundSetBreakpointCallback(csound, brkpt_cb9, NULL); csoundSetInstrumentBreakpoint(csound, 30.1, 0); for (i = 0; i < 1000; i++) { csoundPerformKsmps(csound); } /* step to next line */ csoundDebugNext(csound); csoundPerformKsmps(csound); /* step to next line */ csoundDebugNext(csound); csoundPerformKsmps(csound); /* step to next line */ csoundDebugNext(csound); csoundPerformKsmps(csound); csoundDebuggerClean(csound); csoundDestroy(csound); CU_ASSERT_EQUAL(count, 5); }