Testing running status reset.
This commit is contained in:
parent
53fdcc79b0
commit
2df247489a
|
|
@ -739,4 +739,102 @@ TEST(MidiOutput, NRPN)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(MidiOutput, runningStatusCancellation)
|
||||||
|
{
|
||||||
|
typedef test_mocks::SerialMock<32> SerialMock;
|
||||||
|
typedef VariableSettings<true, false> Settings;
|
||||||
|
typedef midi::MidiInterface<SerialMock, Settings> MidiInterface;
|
||||||
|
|
||||||
|
SerialMock serial;
|
||||||
|
MidiInterface midi(serial);
|
||||||
|
std::vector<test_mocks::uint8> buffer;
|
||||||
|
|
||||||
|
static const unsigned sysExLength = 13;
|
||||||
|
static const byte sysEx[sysExLength] = {
|
||||||
|
'H','e','l','l','o',',',' ','W','o','r','l','d','!'
|
||||||
|
};
|
||||||
|
|
||||||
|
midi.begin();
|
||||||
|
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
midi.sendNoteOn(56, 78, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
|
||||||
|
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(5);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 5);
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray({
|
||||||
|
0x90, 12, 34, 56, 78
|
||||||
|
}));
|
||||||
|
|
||||||
|
midi.sendRealTime(midi::Clock); // Should not reset running status.
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 3);
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(3);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 3);
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray({
|
||||||
|
0xf8, 12, 34
|
||||||
|
}));
|
||||||
|
|
||||||
|
midi.sendSysEx(sysExLength, sysEx); // Should reset running status.
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 18);
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(18);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 18);
|
||||||
|
{
|
||||||
|
static const byte expected[] = {
|
||||||
|
0xf0, 'H','e','l','l','o',',',' ','W','o','r','l','d','!', 0xf7,
|
||||||
|
0x90, 12, 34
|
||||||
|
};
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray(expected));
|
||||||
|
}
|
||||||
|
|
||||||
|
midi.sendTimeCodeQuarterFrame(42); // Should reset running status.
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(5);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 5);
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray({
|
||||||
|
0xf1, 42,
|
||||||
|
0x90, 12, 34
|
||||||
|
}));
|
||||||
|
|
||||||
|
midi.sendSongPosition(42); // Should reset running status.
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 6);
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(6);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 6);
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray({
|
||||||
|
0xf2, 42, 0,
|
||||||
|
0x90, 12, 34
|
||||||
|
}));
|
||||||
|
|
||||||
|
midi.sendSongSelect(42); // Should reset running status.
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(5);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 5);
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray({
|
||||||
|
0xf3, 42,
|
||||||
|
0x90, 12, 34
|
||||||
|
}));
|
||||||
|
|
||||||
|
midi.sendTuneRequest(); // Should reset running status.
|
||||||
|
midi.sendNoteOn(12, 34, 1);
|
||||||
|
EXPECT_EQ(serial.mTxBuffer.getLength(), 4);
|
||||||
|
buffer.clear();
|
||||||
|
buffer.resize(4);
|
||||||
|
serial.mTxBuffer.read(&buffer[0], 4);
|
||||||
|
EXPECT_THAT(buffer, ElementsAreArray({
|
||||||
|
0xf6,
|
||||||
|
0x90, 12, 34
|
||||||
|
}));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
END_UNNAMED_NAMESPACE
|
END_UNNAMED_NAMESPACE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue