Skip to content

Commit f6d9511

Browse files
committed
chore: Add test for system common messages
1 parent 21a4ad2 commit f6d9511

File tree

2 files changed

+48
-9
lines changed

2 files changed

+48
-9
lines changed

src/MIDI.hpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,9 @@ MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings,
383383
}
384384

385385
if (Settings::UseRunningStatus)
386+
{
386387
mRunningStatus_TX = InvalidType;
388+
}
387389

388390
return *this;
389391
}
@@ -465,9 +467,9 @@ MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings,
465467

466468
if (mTransport.beginTransmission(inType))
467469
{
468-
mTransport.write((byte)inType);
469-
switch (inType)
470-
{
470+
mTransport.write((byte)inType);
471+
switch (inType)
472+
{
471473
case TimeCodeQuarterFrame:
472474
mTransport.write(inData1);
473475
break;
@@ -490,7 +492,9 @@ MidiInterface<Transport, Settings, Platform>& MidiInterface<Transport, Settings,
490492
}
491493

492494
if (Settings::UseRunningStatus)
495+
{
493496
mRunningStatus_TX = InvalidType;
497+
}
494498

495499
return *this;
496500
}

test/unit-tests/tests/unit-tests_MidiOutput.cpp

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ TEST(MidiOutput, sendGenericWithRunningStatus)
6363
SerialMock serial;
6464
Transport transport(serial);
6565
RsMidiInterface midi((Transport&)transport);
66-
66+
6767
Buffer buffer;
6868
buffer.resize(5);
6969

@@ -85,7 +85,7 @@ TEST(MidiOutput, sendGenericWithoutRunningStatus)
8585
SerialMock serial;
8686
Transport transport(serial);
8787
NoRsMidiInterface midi((Transport&)transport);
88-
88+
8989
Buffer buffer;
9090
buffer.resize(6);
9191

@@ -336,7 +336,7 @@ TEST(MidiOutput, sendSysEx)
336336
LargeSerialMock serial;
337337
LargeTransport transport(serial);
338338
LargeMidiInterface midi((LargeTransport&)transport);
339-
339+
340340
Buffer buffer;
341341

342342
// Short frame
@@ -547,6 +547,41 @@ TEST(MidiOutput, sendRealTime)
547547
}
548548
}
549549

550+
TEST(MidiOutput, sendCommon)
551+
{
552+
SerialMock serial;
553+
Transport transport(serial);
554+
MidiInterface midi((Transport&)transport);
555+
556+
Buffer buffer;
557+
558+
// Test valid Common messages
559+
{
560+
buffer.clear();
561+
buffer.resize(8);
562+
563+
midi.begin();
564+
midi.sendCommon(midi::TimeCodeQuarterFrame, 1);
565+
midi.sendCommon(midi::SongPosition, 0x5555);
566+
midi.sendCommon(midi::SongSelect, 3);
567+
midi.sendCommon(midi::TuneRequest, 4);
568+
569+
EXPECT_EQ(serial.mTxBuffer.getLength(), 8);
570+
serial.mTxBuffer.read(&buffer[0], 8);
571+
EXPECT_THAT(buffer, ElementsAreArray({
572+
0xf1, 0x01, 0xf2, 0x55, 0x2a, 0xf3, 0x03, 0xf6
573+
}));
574+
}
575+
// Test invalid messages
576+
{
577+
midi.begin();
578+
midi.sendCommon(midi::Undefined_F4, 0);
579+
midi.sendCommon(midi::Undefined_F5, 0);
580+
midi.sendCommon(midi::InvalidType, 0);
581+
EXPECT_EQ(serial.mTxBuffer.getLength(), 0);
582+
}
583+
}
584+
550585
TEST(MidiOutput, RPN)
551586
{
552587
typedef VariableSettings<true, true> Settings;
@@ -555,7 +590,7 @@ TEST(MidiOutput, RPN)
555590
SerialMock serial;
556591
Transport transport(serial);
557592
RsMidiInterface midi((Transport&)transport);
558-
593+
559594
Buffer buffer;
560595

561596
// 14-bit Value Single Frame
@@ -673,7 +708,7 @@ TEST(MidiOutput, NRPN)
673708
SerialMock serial;
674709
Transport transport(serial);
675710
RsMidiInterface midi((Transport&)transport);
676-
711+
677712
Buffer buffer;
678713

679714
// 14-bit Value Single Frame
@@ -791,7 +826,7 @@ TEST(MidiOutput, runningStatusCancellation)
791826
SerialMock serial;
792827
Transport transport(serial);
793828
RsMidiInterface midi((Transport&)transport);
794-
829+
795830
Buffer buffer;
796831

797832
static const unsigned sysExLength = 13;

0 commit comments

Comments
 (0)