chore: Add test for system common messages

This commit is contained in:
Francois Best 2022-10-08 15:23:09 +02:00
parent 21a4ad23df
commit f6d95113f5
2 changed files with 48 additions and 9 deletions

View File

@ -383,7 +383,9 @@ MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings,
} }
if (Settings::UseRunningStatus) if (Settings::UseRunningStatus)
{
mRunningStatus_TX = InvalidType; mRunningStatus_TX = InvalidType;
}
return *this; return *this;
} }
@ -465,9 +467,9 @@ MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings,
if (mTransport.beginTransmission(inType)) if (mTransport.beginTransmission(inType))
{ {
mTransport.write((byte)inType); mTransport.write((byte)inType);
switch (inType) switch (inType)
{ {
case TimeCodeQuarterFrame: case TimeCodeQuarterFrame:
mTransport.write(inData1); mTransport.write(inData1);
break; break;
@ -490,7 +492,9 @@ MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings,
} }
if (Settings::UseRunningStatus) if (Settings::UseRunningStatus)
{
mRunningStatus_TX = InvalidType; mRunningStatus_TX = InvalidType;
}
return *this; return *this;
} }

View File

@ -63,7 +63,7 @@ TEST(MidiOutput, sendGenericWithRunningStatus)
SerialMock serial; SerialMock serial;
Transport transport(serial); Transport transport(serial);
RsMidiInterface midi((Transport&)transport); RsMidiInterface midi((Transport&)transport);
Buffer buffer; Buffer buffer;
buffer.resize(5); buffer.resize(5);
@ -85,7 +85,7 @@ TEST(MidiOutput, sendGenericWithoutRunningStatus)
SerialMock serial; SerialMock serial;
Transport transport(serial); Transport transport(serial);
NoRsMidiInterface midi((Transport&)transport); NoRsMidiInterface midi((Transport&)transport);
Buffer buffer; Buffer buffer;
buffer.resize(6); buffer.resize(6);
@ -336,7 +336,7 @@ TEST(MidiOutput, sendSysEx)
LargeSerialMock serial; LargeSerialMock serial;
LargeTransport transport(serial); LargeTransport transport(serial);
LargeMidiInterface midi((LargeTransport&)transport); LargeMidiInterface midi((LargeTransport&)transport);
Buffer buffer; Buffer buffer;
// Short frame // Short frame
@ -547,6 +547,41 @@ TEST(MidiOutput, sendRealTime)
} }
} }
TEST(MidiOutput, sendCommon)
{
SerialMock serial;
Transport transport(serial);
MidiInterface midi((Transport&)transport);
Buffer buffer;
// Test valid Common messages
{
buffer.clear();
buffer.resize(8);
midi.begin();
midi.sendCommon(midi::TimeCodeQuarterFrame, 1);
midi.sendCommon(midi::SongPosition, 0x5555);
midi.sendCommon(midi::SongSelect, 3);
midi.sendCommon(midi::TuneRequest, 4);
EXPECT_EQ(serial.mTxBuffer.getLength(), 8);
serial.mTxBuffer.read(&buffer[0], 8);
EXPECT_THAT(buffer, ElementsAreArray({
0xf1, 0x01, 0xf2, 0x55, 0x2a, 0xf3, 0x03, 0xf6
}));
}
// Test invalid messages
{
midi.begin();
midi.sendCommon(midi::Undefined_F4, 0);
midi.sendCommon(midi::Undefined_F5, 0);
midi.sendCommon(midi::InvalidType, 0);
EXPECT_EQ(serial.mTxBuffer.getLength(), 0);
}
}
TEST(MidiOutput, RPN) TEST(MidiOutput, RPN)
{ {
typedef VariableSettings<true, true> Settings; typedef VariableSettings<true, true> Settings;
@ -555,7 +590,7 @@ TEST(MidiOutput, RPN)
SerialMock serial; SerialMock serial;
Transport transport(serial); Transport transport(serial);
RsMidiInterface midi((Transport&)transport); RsMidiInterface midi((Transport&)transport);
Buffer buffer; Buffer buffer;
// 14-bit Value Single Frame // 14-bit Value Single Frame
@ -673,7 +708,7 @@ TEST(MidiOutput, NRPN)
SerialMock serial; SerialMock serial;
Transport transport(serial); Transport transport(serial);
RsMidiInterface midi((Transport&)transport); RsMidiInterface midi((Transport&)transport);
Buffer buffer; Buffer buffer;
// 14-bit Value Single Frame // 14-bit Value Single Frame
@ -791,7 +826,7 @@ TEST(MidiOutput, runningStatusCancellation)
SerialMock serial; SerialMock serial;
Transport transport(serial); Transport transport(serial);
RsMidiInterface midi((Transport&)transport); RsMidiInterface midi((Transport&)transport);
Buffer buffer; Buffer buffer;
static const unsigned sysExLength = 13; static const unsigned sysExLength = 13;