Using vector buffers & initializer-list expectancies.

This commit is contained in:
Francois Best 2016-10-07 10:04:05 +02:00
parent e65d5b6b4c
commit 527a7c8e9d
1 changed files with 61 additions and 42 deletions

View File

@ -26,26 +26,30 @@ using namespace testing;
typedef test_mocks::SerialMock<32> SerialMock; typedef test_mocks::SerialMock<32> SerialMock;
typedef midi::MidiInterface<SerialMock> MidiInterface; typedef midi::MidiInterface<SerialMock> MidiInterface;
typedef std::vector<uint8_t> Buffer;
// -- // --
TEST(MidiOutput, sendGenericSingle) TEST(MidiOutput, sendGenericSingle)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[3] = { 0 }; Buffer buffer;
buffer.resize(3);
midi.begin(); midi.begin();
midi.send(midi::NoteOn, 47, 42, 12); midi.send(midi::NoteOn, 47, 42, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 3); EXPECT_EQ(serial.mTxBuffer.getLength(), 3);
serial.mTxBuffer.read(buffer, 3); serial.mTxBuffer.read(&buffer[0], 3);
EXPECT_THAT(buffer, ElementsAre(0x9b, 47, 42)); EXPECT_THAT(buffer, ElementsAreArray({0x9b, 47, 42}));
} }
TEST(MidiOutput, sendGenericWithRunningStatus) TEST(MidiOutput, sendGenericWithRunningStatus)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[5] = { 0 }; Buffer buffer;
buffer.resize(5);
midi.begin(); midi.begin();
EXPECT_EQ(MidiInterface::Settings::UseRunningStatus, true); EXPECT_EQ(MidiInterface::Settings::UseRunningStatus, true);
@ -53,8 +57,8 @@ TEST(MidiOutput, sendGenericWithRunningStatus)
midi.send(midi::NoteOn, 47, 42, 12); midi.send(midi::NoteOn, 47, 42, 12);
midi.send(midi::NoteOn, 42, 47, 12); midi.send(midi::NoteOn, 42, 47, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 5); EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
serial.mTxBuffer.read(buffer, 5); serial.mTxBuffer.read(&buffer[0], 5);
EXPECT_THAT(buffer, ElementsAre(0x9b, 47, 42, 42, 47)); EXPECT_THAT(buffer, ElementsAreArray({0x9b, 47, 42, 42, 47}));
} }
TEST(MidiOutput, sendGenericWithoutRunningStatus) TEST(MidiOutput, sendGenericWithoutRunningStatus)
@ -64,7 +68,8 @@ TEST(MidiOutput, sendGenericWithoutRunningStatus)
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[6] = { 0 }; Buffer buffer;
buffer.resize(6);
// Same status byte // Same status byte
midi.begin(); midi.begin();
@ -73,30 +78,31 @@ TEST(MidiOutput, sendGenericWithoutRunningStatus)
midi.send(midi::NoteOn, 47, 42, 12); midi.send(midi::NoteOn, 47, 42, 12);
midi.send(midi::NoteOn, 42, 47, 12); midi.send(midi::NoteOn, 42, 47, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 6); EXPECT_EQ(serial.mTxBuffer.getLength(), 6);
serial.mTxBuffer.read(buffer, 6); serial.mTxBuffer.read(&buffer[0], 6);
EXPECT_THAT(buffer, ElementsAre(0x9b, 47, 42, 0x9b, 42, 47)); EXPECT_THAT(buffer, ElementsAreArray({0x9b, 47, 42, 0x9b, 42, 47}));
// Different status byte // Different status byte
midi.begin(); midi.begin();
midi.send(midi::NoteOn, 47, 42, 12); midi.send(midi::NoteOn, 47, 42, 12);
midi.send(midi::NoteOff, 47, 42, 12); midi.send(midi::NoteOff, 47, 42, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 6); EXPECT_EQ(serial.mTxBuffer.getLength(), 6);
serial.mTxBuffer.read(buffer, 6); serial.mTxBuffer.read(&buffer[0], 6);
EXPECT_THAT(buffer, ElementsAre(0x9b, 47, 42, 0x8b, 47, 42)); EXPECT_THAT(buffer, ElementsAreArray({0x9b, 47, 42, 0x8b, 47, 42}));
} }
TEST(MidiOutput, sendGenericBreakingRunningStatus) TEST(MidiOutput, sendGenericBreakingRunningStatus)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[6] = { 0 }; Buffer buffer;
buffer.resize(6);
midi.begin(); midi.begin();
midi.send(midi::NoteOn, 47, 42, 12); midi.send(midi::NoteOn, 47, 42, 12);
midi.send(midi::NoteOff, 47, 42, 12); midi.send(midi::NoteOff, 47, 42, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 6); EXPECT_EQ(serial.mTxBuffer.getLength(), 6);
serial.mTxBuffer.read(buffer, 6); serial.mTxBuffer.read(&buffer[0], 6);
EXPECT_THAT(buffer, ElementsAre(0x9b, 47, 42, 0x8b, 47, 42)); EXPECT_THAT(buffer, ElementsAreArray({0x9b, 47, 42, 0x8b, 47, 42}));
} }
// -- // --
@ -105,102 +111,115 @@ TEST(MidiOutput, sendNoteOn)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[5] = { 0 }; Buffer buffer;
buffer.resize(5);
midi.begin(); midi.begin();
midi.sendNoteOn(10, 11, 12); midi.sendNoteOn(10, 11, 12);
midi.sendNoteOn(12, 13, 12); midi.sendNoteOn(12, 13, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 5); EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
serial.mTxBuffer.read(buffer, 5); serial.mTxBuffer.read(&buffer[0], 5);
EXPECT_THAT(buffer, ElementsAre(0x9b, 10, 11, 12, 13)); EXPECT_THAT(buffer, ElementsAreArray({0x9b, 10, 11, 12, 13}));
} }
TEST(MidiOutput, sendNoteOff) TEST(MidiOutput, sendNoteOff)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[5] = { 0 }; Buffer buffer;
buffer.resize(5);
midi.begin(); midi.begin();
midi.sendNoteOff(10, 11, 12); midi.sendNoteOff(10, 11, 12);
midi.sendNoteOff(12, 13, 12); midi.sendNoteOff(12, 13, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 5); EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
serial.mTxBuffer.read(buffer, 5); serial.mTxBuffer.read(&buffer[0], 5);
EXPECT_THAT(buffer, ElementsAre(0x8b, 10, 11, 12, 13)); EXPECT_THAT(buffer, ElementsAreArray({0x8b, 10, 11, 12, 13}));
} }
TEST(MidiOutput, sendProgramChange) TEST(MidiOutput, sendProgramChange)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[3] = { 0 }; Buffer buffer;
buffer.resize(3);
midi.begin(); midi.begin();
midi.sendProgramChange(42, 12); midi.sendProgramChange(42, 12);
midi.sendProgramChange(47, 12); midi.sendProgramChange(47, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 3); EXPECT_EQ(serial.mTxBuffer.getLength(), 3);
serial.mTxBuffer.read(buffer, 3); serial.mTxBuffer.read(&buffer[0], 3);
EXPECT_THAT(buffer, ElementsAre(0xcb, 42, 47)); EXPECT_THAT(buffer, ElementsAreArray({0xcb, 42, 47}));
} }
TEST(MidiOutput, sendControlChange) TEST(MidiOutput, sendControlChange)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[5] = { 0 }; Buffer buffer;
buffer.resize(5);
midi.begin(); midi.begin();
midi.sendControlChange(42, 12, 12); midi.sendControlChange(42, 12, 12);
midi.sendControlChange(47, 12, 12); midi.sendControlChange(47, 12, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 5); EXPECT_EQ(serial.mTxBuffer.getLength(), 5);
serial.mTxBuffer.read(buffer, 5); serial.mTxBuffer.read(&buffer[0], 5);
EXPECT_THAT(buffer, ElementsAre(0xbb, 42, 12, 47, 12)); EXPECT_THAT(buffer, ElementsAreArray({0xbb, 42, 12, 47, 12}));
} }
TEST(MidiOutput, sendPitchBend) TEST(MidiOutput, sendPitchBend)
{ {
SerialMock serial; SerialMock serial;
MidiInterface midi(serial); MidiInterface midi(serial);
test_mocks::uint8 buffer[7] = { 0 }; Buffer buffer;
// Int signature - arbitrary values // Int signature - arbitrary values
{ {
buffer.clear();
buffer.resize(7);
midi.begin(); midi.begin();
midi.sendPitchBend(0, 12); midi.sendPitchBend(0, 12);
midi.sendPitchBend(100, 12); midi.sendPitchBend(100, 12);
midi.sendPitchBend(-100, 12); midi.sendPitchBend(-100, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 7); EXPECT_EQ(serial.mTxBuffer.getLength(), 7);
serial.mTxBuffer.read(buffer, 7); serial.mTxBuffer.read(&buffer[0], 7);
EXPECT_THAT(buffer, ElementsAre(0xeb, EXPECT_THAT(buffer, ElementsAreArray({0xeb,
0x00, 0x40, 0x00, 0x40,
0x64, 0x40, 0x64, 0x40,
0x1c, 0x3f)); 0x1c, 0x3f}));
} }
// Int signature - min/max // Int signature - min/max
{ {
buffer.clear();
buffer.resize(7);
midi.begin(); midi.begin();
midi.sendPitchBend(0, 12); midi.sendPitchBend(0, 12);
midi.sendPitchBend(MIDI_PITCHBEND_MAX, 12); midi.sendPitchBend(MIDI_PITCHBEND_MAX, 12);
midi.sendPitchBend(MIDI_PITCHBEND_MIN, 12); midi.sendPitchBend(MIDI_PITCHBEND_MIN, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 7); EXPECT_EQ(serial.mTxBuffer.getLength(), 7);
serial.mTxBuffer.read(buffer, 7); serial.mTxBuffer.read(&buffer[0], 7);
EXPECT_THAT(buffer, ElementsAre(0xeb, EXPECT_THAT(buffer, ElementsAreArray({0xeb,
0x00, 0x40, 0x00, 0x40,
0x7f, 0x7f, 0x7f, 0x7f,
0x00, 0x00)); 0x00, 0x00}));
} }
// Float signature // Float signature
{ {
buffer.clear();
buffer.resize(7);
midi.begin(); midi.begin();
midi.sendPitchBend(0.0, 12); midi.sendPitchBend(0.0, 12);
midi.sendPitchBend(1.0, 12); midi.sendPitchBend(1.0, 12);
midi.sendPitchBend(-1.0, 12); midi.sendPitchBend(-1.0, 12);
EXPECT_EQ(serial.mTxBuffer.getLength(), 7); EXPECT_EQ(serial.mTxBuffer.getLength(), 7);
serial.mTxBuffer.read(buffer, 7); serial.mTxBuffer.read(&buffer[0], 7);
EXPECT_THAT(buffer, ElementsAre(0xeb, EXPECT_THAT(buffer, ElementsAreArray({0xeb,
0x00, 0x40, 0x00, 0x40,
0x7f, 0x7f, 0x7f, 0x7f,
0x00, 0x00)); 0x00, 0x00}));
} }
} }