summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lv2.cc546
-rw-r--r--test/lv2_test_host.cc19
-rw-r--r--test/lv2_test_host.h4
3 files changed, 282 insertions, 287 deletions
diff --git a/test/lv2.cc b/test/lv2.cc
index bfd2ce5..32d896c 100644
--- a/test/lv2.cc
+++ b/test/lv2.cc
@@ -47,7 +47,7 @@
*/
class test_lv2 : public CppUnit::TestFixture
{
- CPPUNIT_TEST_SUITE(test_lv2);
+ CPPUNIT_TEST_SUITE(test_lv2);
CPPUNIT_TEST(open_and_verify);
CPPUNIT_TEST(run_no_ports_connected);
CPPUNIT_TEST(run_no_output_ports_connected);
@@ -58,274 +58,282 @@ public:
void setUp() {}
void tearDown() {}
- void open_and_verify()
- {
- int res;
-
- LV2TestHost h(LV2_PATH);
-
- res = h.open(DG_URI);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.verify();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.close();
- CPPUNIT_ASSERT_EQUAL(0, res);
- }
-
- void run_no_ports_connected()
- {
- int res;
-
- LV2TestHost h(LV2_PATH);
-
- res = h.open(DG_URI);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.verify();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.createInstance();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- const char config_fmt[] =
- "<config>\n"
- " <value name=\"drumkitfile\">%s</value>\n"
- " <value name=\"midimapfile\">%s</value>\n"
- " <value name=\"enable_velocity_modifier\">%s</value>\n"
- " <value name=\"velocity_modifier_falloff\">%f</value>\n"
- " <value name=\"velocity_modifier_weight\">%f</value>\n"
- " <value name=\"enable_velocity_randomiser\">%s</value>\n"
- " <value name=\"velocity_randomiser_weight\">%f</value>\n"
- " <value name=\"enable_resampling\">%s</value>\n"
- "</config>";
-
- const char drumkitfile[] = "kit/kit1.xml";
- const char midimapfile[] = "kit/midimap.xml";
- bool enable_velocity_modifier = true;
- float velocity_modifier_falloff = 0.5;
- float velocity_modifier_weight = 0.25;
- bool enable_velocity_randomiser = false;
- float velocity_randomiser_weight = 0.1;
- bool enable_resampling = false;
-
- char config[sizeof(config_fmt) * 2];
- sprintf(config, config_fmt,
- drumkitfile,
- midimapfile,
- enable_velocity_modifier?"true":"false",
- velocity_modifier_falloff,
- velocity_modifier_weight,
- enable_velocity_randomiser?"true":"false",
- velocity_randomiser_weight,
- enable_resampling?"true":"false"
- );
-
- res = h.loadConfig(config, strlen(config));
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- // run for 1 samples to trigger kit loading
- res = h.run(1);
- CPPUNIT_ASSERT_EQUAL(0, res);
- sleep(1); // wait for kit to get loaded (async),
-
- res = h.run(100);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.destroyInstance();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.close();
- CPPUNIT_ASSERT_EQUAL(0, res);
- }
-
- void run_no_output_ports_connected()
- {
- int res;
-
- LV2TestHost h(LV2_PATH);
-
- res = h.open(DG_URI);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.verify();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.createInstance();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- const char config_fmt[] =
- "<config>\n"
- " <value name=\"drumkitfile\">%s</value>\n"
- " <value name=\"midimapfile\">%s</value>\n"
- " <value name=\"enable_velocity_modifier\">%s</value>\n"
- " <value name=\"velocity_modifier_falloff\">%f</value>\n"
- " <value name=\"velocity_modifier_weight\">%f</value>\n"
- " <value name=\"enable_velocity_randomiser\">%s</value>\n"
- " <value name=\"velocity_randomiser_weight\">%f</value>\n"
- " <value name=\"enable_resampling\">%s</value>\n"
- "</config>";
-
- const char drumkitfile[] = "kit/kit1.xml";
- const char midimapfile[] = "kit/midimap.xml";
- bool enable_velocity_modifier = true;
- float velocity_modifier_falloff = 0.5;
- float velocity_modifier_weight = 0.25;
- bool enable_velocity_randomiser = false;
- float velocity_randomiser_weight = 0.1;
- bool enable_resampling = false;
-
- char config[sizeof(config_fmt) * 2];
- sprintf(config, config_fmt,
- drumkitfile,
- midimapfile,
- enable_velocity_modifier?"true":"false",
- velocity_modifier_falloff,
- velocity_modifier_weight,
- enable_velocity_randomiser?"true":"false",
- velocity_randomiser_weight,
- enable_resampling?"true":"false"
- );
-
- res = h.loadConfig(config, strlen(config));
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- // Port buffers:
- char sequence_buffer[4096];
-
- LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
- res = h.connectPort(0, seq.data());
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- // run for 1 samples to trigger kit loading
- res = h.run(1);
- CPPUNIT_ASSERT_EQUAL(0, res);
- sleep(1); // wait for kit to get loaded (async),
-
- seq.addMidiNote(5, 1, 127);
- res = h.run(100);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.destroyInstance();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.close();
- CPPUNIT_ASSERT_EQUAL(0, res);
- }
-
- void test1()
- {
- int res;
-
- LV2TestHost h(LV2_PATH);
-
- res = h.open(DG_URI);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.verify();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.createInstance();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- const char config_fmt[] =
- "<config>\n"
- " <value name=\"drumkitfile\">%s</value>\n"
- " <value name=\"midimapfile\">%s</value>\n"
- " <value name=\"enable_velocity_modifier\">%s</value>\n"
- " <value name=\"velocity_modifier_falloff\">%f</value>\n"
- " <value name=\"velocity_modifier_weight\">%f</value>\n"
- " <value name=\"enable_velocity_randomiser\">%s</value>\n"
- " <value name=\"velocity_randomiser_weight\">%f</value>\n"
- " <value name=\"enable_resampling\">%s</value>\n"
- "</config>";
-
- const char drumkitfile[] = "kit/kit1.xml";
- const char midimapfile[] = "kit/midimap.xml";
- bool enable_velocity_modifier = true;
- float velocity_modifier_falloff = 0.5;
- float velocity_modifier_weight = 0.25;
- bool enable_velocity_randomiser = false;
- float velocity_randomiser_weight = 0.1;
- bool enable_resampling = false;
-
- char config[sizeof(config_fmt) * 2];
- sprintf(config, config_fmt,
- drumkitfile,
- midimapfile,
- enable_velocity_modifier?"true":"false",
- velocity_modifier_falloff,
- velocity_modifier_weight,
- enable_velocity_randomiser?"true":"false",
- velocity_randomiser_weight,
- enable_resampling?"true":"false"
- );
-
- res = h.loadConfig(config, strlen(config));
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- // Port buffers:
- char sequence_buffer[4096];
- float pcm_buffer[16][10];
-
- LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
- res = h.connectPort(0, seq.data());
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- for(int i = 1; i <= 16; i++) {
- memset(pcm_buffer, 1, sizeof(pcm_buffer));
- res += h.connectPort(i, pcm_buffer[i-1]);
- }
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- // run for 1 samples to trigger kit loading
- res = h.run(1);
- CPPUNIT_ASSERT_EQUAL(0, res);
- sleep(1); // wait for kit to get loaded (async),
-
- /*
- seq.addMidiNote(5, 1, 127);
- for(int i = 0; i < 10; i++) {
- res = h.run(10);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- printf("Iteration:\n");
- for(int k = 0; k < 4; k++) {
- printf("#%d ", k);
- for(int j = 0; j < 10; j++) printf("[%f]", pcm_buffer[k][j]);
- printf("\n");
- }
- printf("\n");
-
- seq.clear();
- }
- */
-
- seq.addMidiNote(5, 1, 127);
- res = h.run(10);
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- union {
- float f;
- unsigned int u;
- } comp_val;
-
- comp_val.u = 1040744448;
-
- for(int k = 0; k < 4; k++) {
- for(int j = 0; j < 10; j++) {
- CPPUNIT_ASSERT(pcm_buffer[k][j] == ((j==4)?comp_val.f:0));
- }
- }
- seq.clear();
-
- res = h.destroyInstance();
- CPPUNIT_ASSERT_EQUAL(0, res);
-
- res = h.close();
- CPPUNIT_ASSERT_EQUAL(0, res);
- }
+ void open_and_verify()
+ {
+ int res;
+
+ LV2TestHost h(LV2_PATH);
+
+ res = h.open(DG_URI);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.verify();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.close();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ }
+
+ void run_no_ports_connected()
+ {
+ int res;
+
+ LV2TestHost h(LV2_PATH);
+
+ res = h.open(DG_URI);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.verify();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.createInstance();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ const char config_fmt[] =
+ "<config>\n"
+ " <value name=\"drumkitfile\">%s</value>\n"
+ " <value name=\"midimapfile\">%s</value>\n"
+ " <value name=\"enable_velocity_modifier\">%s</value>\n"
+ " <value name=\"velocity_modifier_falloff\">%f</value>\n"
+ " <value name=\"velocity_modifier_weight\">%f</value>\n"
+ " <value name=\"enable_velocity_randomiser\">%s</value>\n"
+ " <value name=\"velocity_randomiser_weight\">%f</value>\n"
+ " <value name=\"enable_resampling\">%s</value>\n"
+ "</config>";
+
+ const char drumkitfile[] = "kit/kit1.xml";
+ const char midimapfile[] = "kit/midimap.xml";
+ bool enable_velocity_modifier = true;
+ float velocity_modifier_falloff = 0.5;
+ float velocity_modifier_weight = 0.25;
+ bool enable_velocity_randomiser = false;
+ float velocity_randomiser_weight = 0.1;
+ bool enable_resampling = false;
+
+ char config[sizeof(config_fmt) * 2];
+ sprintf(config, config_fmt,
+ drumkitfile,
+ midimapfile,
+ enable_velocity_modifier?"true":"false",
+ velocity_modifier_falloff,
+ velocity_modifier_weight,
+ enable_velocity_randomiser?"true":"false",
+ velocity_randomiser_weight,
+ enable_resampling?"true":"false");
+
+ res = h.loadConfig(config, strlen(config));
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ // run for 1 samples to trigger kit loading
+ res = h.run(1);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ sleep(1); // wait for kit to get loaded (async),
+
+ res = h.run(100);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.destroyInstance();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.close();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ }
+
+ void run_no_output_ports_connected()
+ {
+ int res;
+
+ LV2TestHost h(LV2_PATH);
+
+ res = h.open(DG_URI);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.verify();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.createInstance();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ const char config_fmt[] =
+ "<config>\n"
+ " <value name=\"drumkitfile\">%s</value>\n"
+ " <value name=\"midimapfile\">%s</value>\n"
+ " <value name=\"enable_velocity_modifier\">%s</value>\n"
+ " <value name=\"velocity_modifier_falloff\">%f</value>\n"
+ " <value name=\"velocity_modifier_weight\">%f</value>\n"
+ " <value name=\"enable_velocity_randomiser\">%s</value>\n"
+ " <value name=\"velocity_randomiser_weight\">%f</value>\n"
+ " <value name=\"enable_resampling\">%s</value>\n"
+ "</config>";
+
+ const char drumkitfile[] = "kit/kit1.xml";
+ const char midimapfile[] = "kit/midimap.xml";
+ bool enable_velocity_modifier = true;
+ float velocity_modifier_falloff = 0.5;
+ float velocity_modifier_weight = 0.25;
+ bool enable_velocity_randomiser = false;
+ float velocity_randomiser_weight = 0.1;
+ bool enable_resampling = false;
+
+ char config[sizeof(config_fmt) * 2];
+ sprintf(config, config_fmt,
+ drumkitfile,
+ midimapfile,
+ enable_velocity_modifier?"true":"false",
+ velocity_modifier_falloff,
+ velocity_modifier_weight,
+ enable_velocity_randomiser?"true":"false",
+ velocity_randomiser_weight,
+ enable_resampling?"true":"false");
+
+ res = h.loadConfig(config, strlen(config));
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ // Port buffers:
+ char sequence_buffer[4096];
+
+ LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
+ res = h.connectPort(0, seq.data());
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ // run for 1 samples to trigger kit loading
+ res = h.run(1);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ sleep(1); // wait for kit to get loaded (async),
+
+ seq.addMidiNote(5, 1, 127);
+ res = h.run(100);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.destroyInstance();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.close();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ }
+
+ void test1()
+ {
+ int res;
+
+ LV2TestHost h(LV2_PATH);
+
+ res = h.open(DG_URI);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.verify();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.createInstance();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ const char config_fmt[] =
+ "<config>\n"
+ " <value name=\"drumkitfile\">%s</value>\n"
+ " <value name=\"midimapfile\">%s</value>\n"
+ " <value name=\"enable_velocity_modifier\">%s</value>\n"
+ " <value name=\"velocity_modifier_falloff\">%f</value>\n"
+ " <value name=\"velocity_modifier_weight\">%f</value>\n"
+ " <value name=\"enable_velocity_randomiser\">%s</value>\n"
+ " <value name=\"velocity_randomiser_weight\">%f</value>\n"
+ " <value name=\"enable_resampling\">%s</value>\n"
+ "</config>";
+
+ const char drumkitfile[] = "kit/kit1.xml";
+ const char midimapfile[] = "kit/midimap.xml";
+ bool enable_velocity_modifier = true;
+ float velocity_modifier_falloff = 0.5;
+ float velocity_modifier_weight = 0.25;
+ bool enable_velocity_randomiser = false;
+ float velocity_randomiser_weight = 0.1;
+ bool enable_resampling = false;
+
+ char config[sizeof(config_fmt) * 2];
+ sprintf(config, config_fmt,
+ drumkitfile,
+ midimapfile,
+ enable_velocity_modifier?"true":"false",
+ velocity_modifier_falloff,
+ velocity_modifier_weight,
+ enable_velocity_randomiser?"true":"false",
+ velocity_randomiser_weight,
+ enable_resampling?"true":"false");
+
+ res = h.loadConfig(config, strlen(config));
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ // Port buffers:
+ char sequence_buffer[4096];
+ float pcm_buffer[16][10];
+
+ LV2TestHost::Sequence seq(sequence_buffer, sizeof(sequence_buffer));
+ res = h.connectPort(0, seq.data());
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ for(int i = 1; i <= 16; i++) {
+ memset(pcm_buffer, 1, sizeof(pcm_buffer));
+ res += h.connectPort(i, pcm_buffer[i-1]);
+ }
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ // run for 1 samples to trigger kit loading
+ res = h.run(1);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ sleep(1); // wait for kit to get loaded (async),
+
+ seq.addMidiNote(5, 1, 127);
+ for(int i = 0; i < 10; i++) {
+ res = h.run(10);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ /*
+ printf("Iteration:\n");
+ for(int k = 0; k < 4; k++) {
+ printf("#%d ", k);
+ for(int j = 0; j < 10; j++) printf("[%f]", pcm_buffer[k][j]);
+ printf("\n");
+ }
+ printf("\n");
+ */
+
+ seq.clear();
+ }
+
+
+ seq.addMidiNote(5, 1, 127);
+ res = h.run(10);
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ /*
+ printf("Iteration:\n");
+ for(int k = 0; k < 4; k++) {
+ printf("#%d ", k);
+ for(int j = 0; j < 10; j++) printf("[%f]", pcm_buffer[k][j]);
+ printf("\n");
+ }
+ printf("\n");
+ */
+
+ union {
+ float f;
+ unsigned int u;
+ } comp_val;
+
+ comp_val.u = 1040744448; // floating point value 0.133301....
+
+ for(int k = 0; k < 4; k++) {
+ for(int j = 0; j < 10; j++) {
+ CPPUNIT_ASSERT_EQUAL(((j==0)?comp_val.f:0), pcm_buffer[k][j]);
+ }
+ }
+ seq.clear();
+
+ res = h.destroyInstance();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+
+ res = h.close();
+ CPPUNIT_ASSERT_EQUAL(0, res);
+ }
};
// Registers the fixture into the 'registry'
diff --git a/test/lv2_test_host.cc b/test/lv2_test_host.cc
index 927f94c..375ae40 100644
--- a/test/lv2_test_host.cc
+++ b/test/lv2_test_host.cc
@@ -40,17 +40,7 @@
//
#include <openssl/bio.h>
#include <openssl/err.h>
-
-#ifdef final
-// final is used as variable name in evp.h so we need to undef it before we
-// include it.
- #undef final
- #include <openssl/evp.h>
- #define final
-#else
- #include <openssl/evp.h>
-#endif
-
+#include <openssl/evp.h>
#include <string>
class Base64 {
public:
@@ -176,10 +166,11 @@ void LV2TestHost::Sequence::clear()
// Keep this to support atom extension from lv2 < 1.10
static inline LV2_Atom_Event*
_lv2_atom_sequence_append_event(LV2_Atom_Sequence* seq,
- uint32_t capacity,
- const LV2_Atom_Event* event)
+ uint32_t capacity,
+ const LV2_Atom_Event* event)
{
const uint32_t total_size = (uint32_t)sizeof(*event) + event->body.size;
+
if (capacity - seq->atom.size < total_size) {
return NULL;
}
@@ -205,7 +196,7 @@ void LV2TestHost::Sequence::addMidiNote(uint64_t pos,
MIDINoteEvent ev;
ev.event.time.frames = pos;// sample position
ev.event.body.type = map.map(map.handle, LV2_MIDI__MidiEvent);
- ev.event.body.size = sizeof(MIDINoteEvent);
+ ev.event.body.size = sizeof(ev.msg);
ev.msg[0] = note_on;
ev.msg[1] = key;
diff --git a/test/lv2_test_host.h b/test/lv2_test_host.h
index 04f48c6..f0677c7 100644
--- a/test/lv2_test_host.h
+++ b/test/lv2_test_host.h
@@ -67,8 +67,6 @@ public:
int loadConfig(const char *config, size_t size);
int run(int num_samples);
-
-
private:
LilvWorld* world;
const LilvPlugins* plugins;
@@ -76,8 +74,6 @@ private:
const LilvPlugin* plugin;
LilvInstance* instance;
-
- size_t buffer_size;
};
#endif/*__DRUMGIZMO_LV2_TEST_HOST_H__*/