Commit b10d4bef authored by Jacob Vosmaer's avatar Jacob Vosmaer

Note off tests, fix status reset bug

parent 19fe7893
...@@ -54,6 +54,39 @@ test_note_on(void) ...@@ -54,6 +54,39 @@ test_note_on(void)
// end running status // end running status
midi_parse(0xa0); // poly pressure midi_parse(0xa0); // poly pressure
assert_status(MIDI_NUM_STATUSES, 0, 0); assert_status(MIDI_NUM_STATUSES, 0, 0);
// unexpected status byte
midi_parse(0x90);
midi_parse(0x60);
midi_parse(0x90); // should reset data
assert_status(MIDI_NOTE_ON, 0, 0);
midi_parse(0x64);
assert_status(MIDI_NOTE_ON, 0, 0);
midi_parse(0x70);
assert_status(MIDI_NOTE_ON, 1, 0x6470);
}
void
test_note_off(void)
{
desc("test note off handling");
status_init();
assert_status(MIDI_NUM_STATUSES, 0, 0);
midi_parse(0x80);
assert_status(MIDI_NOTE_OFF, 0, 0);
midi_parse(0x12);
midi_parse(0x34);
assert_status(MIDI_NOTE_OFF, 1, 0x1234);
midi_parse(0x56);
midi_parse(0x78);
assert_status(MIDI_NOTE_OFF, 1, 0x5678);
midi_parse(0x80);
midi_parse(0x12);
midi_parse(0);
assert_status(MIDI_NOTE_OFF, 1, 0x1200);
} }
int int
...@@ -61,5 +94,6 @@ main(int argc, char** argv) ...@@ -61,5 +94,6 @@ main(int argc, char** argv)
{ {
test_init(); test_init();
test_note_on(); test_note_on();
test_note_off();
} }
...@@ -74,6 +74,7 @@ midi_parse(uint8_t midi_byte) ...@@ -74,6 +74,7 @@ midi_parse(uint8_t midi_byte)
for (uint8_t i = 0; i < MIDI_NUM_STATUSES; i++) { for (uint8_t i = 0; i < MIDI_NUM_STATUSES; i++) {
if (midi_byte == ((statuses[i] << 4) | midi_channel)) { if (midi_byte == ((statuses[i] << 4) | midi_channel)) {
status = i; status = i;
clear_data();
return; return;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment