removed references to USB in the test scripts
This commit is contained in:
parent
240082c0fb
commit
f1ad860efb
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 0a1ef7498dad7904d2a54530616f418dcba9197c
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
#include "unit-tests.h"
|
||||
#include <src/midi_UsbDefs.h>
|
||||
|
||||
BEGIN_MIDI_NAMESPACE
|
||||
|
||||
END_MIDI_NAMESPACE
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
BEGIN_UNNAMED_NAMESPACE
|
||||
|
||||
TEST(MidiUsbDefs, codeIndexNumberFromStatus)
|
||||
{
|
||||
typedef midi::CodeIndexNumbers CIN;
|
||||
EXPECT_EQ(CIN::fromStatus(midi::InvalidType), CIN::reserved);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::NoteOff), CIN::noteOff);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::NoteOn), CIN::noteOn);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::AfterTouchPoly), CIN::polyPressure);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::ControlChange), CIN::controlChange);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::ProgramChange), CIN::programChange);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::AfterTouchChannel), CIN::channelPressure);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::PitchBend), CIN::pitchBend);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::Clock), CIN::singleByte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::Start), CIN::singleByte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::Continue), CIN::singleByte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::Stop), CIN::singleByte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::ActiveSensing), CIN::singleByte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::SystemReset), CIN::singleByte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::SystemExclusive), CIN::sysExStart);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::TuneRequest), CIN::systemCommon1Byte);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::TimeCodeQuarterFrame), CIN::systemCommon2Bytes);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::SongSelect), CIN::systemCommon2Bytes);
|
||||
EXPECT_EQ(CIN::fromStatus(midi::SongPosition), CIN::systemCommon3Bytes);
|
||||
}
|
||||
|
||||
TEST(MidiUsbDefs, codeIndexNumberSizes)
|
||||
{
|
||||
typedef midi::CodeIndexNumbers CIN;
|
||||
EXPECT_EQ(CIN::getSize(CIN::reserved), 0);
|
||||
EXPECT_EQ(CIN::getSize(CIN::misc), 0);
|
||||
EXPECT_EQ(CIN::getSize(CIN::cableEvent), 0);
|
||||
EXPECT_EQ(CIN::getSize(CIN::systemCommon2Bytes), 2);
|
||||
EXPECT_EQ(CIN::getSize(CIN::systemCommon3Bytes), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::sysExStart), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::sysExContinue), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::systemCommon1Byte), 1);
|
||||
EXPECT_EQ(CIN::getSize(CIN::sysExEnds1Byte), 1);
|
||||
EXPECT_EQ(CIN::getSize(CIN::sysExEnds2Bytes), 2);
|
||||
EXPECT_EQ(CIN::getSize(CIN::sysExEnds3Bytes), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::noteOff), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::noteOn), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::polyPressure), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::controlChange), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::programChange), 2);
|
||||
EXPECT_EQ(CIN::getSize(CIN::channelPressure), 2);
|
||||
EXPECT_EQ(CIN::getSize(CIN::pitchBend), 3);
|
||||
EXPECT_EQ(CIN::getSize(CIN::singleByte), 1);
|
||||
}
|
||||
|
||||
END_UNNAMED_NAMESPACE
|
||||
|
|
@ -1,843 +0,0 @@
|
|||
#include "unit-tests.h"
|
||||
#include <src/midi_UsbDefs.h>
|
||||
#include <src/midi_RingBuffer.h>
|
||||
#include <src/midi_UsbPacketInterface.h>
|
||||
|
||||
BEGIN_MIDI_NAMESPACE
|
||||
|
||||
END_MIDI_NAMESPACE
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
BEGIN_UNNAMED_NAMESPACE
|
||||
|
||||
using Buffer = midi::RingBuffer<uint8_t, 8>;
|
||||
using CIN = midi::CodeIndexNumbers;
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, EmptyBufferShouldNotComposeAPacket)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
const bool result = midi::composeTxPacket(buffer, packet);
|
||||
EXPECT_FALSE(result) << "Empty buffer should not compose a packet";
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, IncompleteDataShouldNotComposeAPacket)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
bool result = false;
|
||||
|
||||
buffer.write(0x81);
|
||||
result = midi::composeTxPacket(buffer, packet);
|
||||
EXPECT_FALSE(result) << "Insufficient data should not compose a packet";
|
||||
EXPECT_EQ(1, buffer.getLength()) << "Partial data should not be read out of the buffer";
|
||||
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
result = midi::composeTxPacket(buffer, packet);
|
||||
EXPECT_TRUE(result) << "Complete data should compose a packet";
|
||||
EXPECT_EQ(0, buffer.getLength()) << "Complete packet data should be read out of the buffer";
|
||||
EXPECT_EQ(CIN::noteOff, packet.header);
|
||||
EXPECT_EQ(0x81, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
}
|
||||
|
||||
// Channel Voice Messages --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, NoteOff)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0x80);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::noteOff, packet.header);
|
||||
EXPECT_EQ(0x80, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, NoteOn)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0x91);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::noteOn, packet.header);
|
||||
EXPECT_EQ(0x91, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, PolyPressure)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0xA2);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::polyPressure, packet.header);
|
||||
EXPECT_EQ(0xA2, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, ControlChange)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0xB3);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::controlChange, packet.header);
|
||||
EXPECT_EQ(0xB3, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, ProgramChange)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0xC4);
|
||||
buffer.write(0x12);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::programChange, packet.header);
|
||||
EXPECT_EQ(0xC4, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, ChannelPressure)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0xD5);
|
||||
buffer.write(0x12);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::channelPressure, packet.header);
|
||||
EXPECT_EQ(0xD5, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, PitchBend)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0xE6);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::pitchBend, packet.header);
|
||||
EXPECT_EQ(0xE6, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
// System Real Time Messages --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, Clock)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::Clock);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::singleByte, packet.header);
|
||||
EXPECT_EQ(midi::Clock, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, Start)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::Start);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::singleByte, packet.header);
|
||||
EXPECT_EQ(midi::Start, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, Stop)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::Stop);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::singleByte, packet.header);
|
||||
EXPECT_EQ(midi::Stop, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, Continue)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::Continue);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::singleByte, packet.header);
|
||||
EXPECT_EQ(midi::Continue, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, ActiveSensing)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::ActiveSensing);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::singleByte, packet.header);
|
||||
EXPECT_EQ(midi::ActiveSensing, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SystemReset)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::SystemReset);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::singleByte, packet.header);
|
||||
EXPECT_EQ(midi::SystemReset, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
// System Common Messages --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, TuneRequest)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::TuneRequest);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::systemCommon1Byte, packet.header);
|
||||
EXPECT_EQ(midi::TuneRequest, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SongSelect)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::SongSelect);
|
||||
buffer.write(0x12);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::systemCommon2Bytes, packet.header);
|
||||
EXPECT_EQ(midi::SongSelect, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SongPosition)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::SongPosition);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::systemCommon3Bytes, packet.header);
|
||||
EXPECT_EQ(midi::SongPosition, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x42, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, TimeCodeQuarterFrame)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(midi::TimeCodeQuarterFrame);
|
||||
buffer.write(0x12);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::systemCommon2Bytes, packet.header);
|
||||
EXPECT_EQ(midi::TimeCodeQuarterFrame, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
// System Exclusive --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SysExNotEnoughData)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(0x12);
|
||||
buffer.write(0x42);
|
||||
EXPECT_FALSE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SysExSinglePacket)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
// Two-byte SysEx (utterly useless)
|
||||
buffer.write(0xf0);
|
||||
buffer.write(0xf7);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExEnds2Bytes, packet.header);
|
||||
EXPECT_EQ(0xf0, packet.byte1);
|
||||
EXPECT_EQ(0xf7, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
|
||||
// Single-data byte SysEx (non-spec conformant ?)
|
||||
buffer.write(0xf0);
|
||||
buffer.write(0x12);
|
||||
buffer.write(0xf7);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExEnds3Bytes, packet.header);
|
||||
EXPECT_EQ(0xf0, packet.byte1);
|
||||
EXPECT_EQ(0x12, packet.byte2);
|
||||
EXPECT_EQ(0xf7, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SysExTwoPackets)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
const byte deviceIdentityRequest[6] = {
|
||||
0xf0, 0x7e, 0x7f, 0x06, 0x01, 0xf7
|
||||
};
|
||||
|
||||
buffer.write(deviceIdentityRequest, 6);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExStart, packet.header);
|
||||
EXPECT_EQ(0xf0, packet.byte1);
|
||||
EXPECT_EQ(0x7e, packet.byte2);
|
||||
EXPECT_EQ(0x7f, packet.byte3);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExEnds3Bytes, packet.header);
|
||||
EXPECT_EQ(0x06, packet.byte1);
|
||||
EXPECT_EQ(0x01, packet.byte2);
|
||||
EXPECT_EQ(0xf7, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SysExMultiplePacketsEndingWith1Byte)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
const byte message[7] = {
|
||||
0xf0, 0x01, 0x02, 0x03, 0x04, 0x05, 0xf7
|
||||
};
|
||||
|
||||
buffer.write(message, 7);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExStart, packet.header);
|
||||
EXPECT_EQ(0xf0, packet.byte1);
|
||||
EXPECT_EQ(0x01, packet.byte2);
|
||||
EXPECT_EQ(0x02, packet.byte3);
|
||||
EXPECT_EQ(4, buffer.getLength());
|
||||
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExContinue, packet.header);
|
||||
EXPECT_EQ(0x03, packet.byte1);
|
||||
EXPECT_EQ(0x04, packet.byte2);
|
||||
EXPECT_EQ(0x05, packet.byte3);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExEnds1Byte, packet.header);
|
||||
EXPECT_EQ(0xf7, packet.byte1);
|
||||
EXPECT_EQ(0x00, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceTx, SysExMultiplePacketsEndingWith2Bytes)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
const byte message[8] = {
|
||||
0xf0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xf7
|
||||
};
|
||||
|
||||
buffer.write(message, 8);
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExStart, packet.header);
|
||||
EXPECT_EQ(0xf0, packet.byte1);
|
||||
EXPECT_EQ(0x01, packet.byte2);
|
||||
EXPECT_EQ(0x02, packet.byte3);
|
||||
EXPECT_EQ(5, buffer.getLength());
|
||||
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExContinue, packet.header);
|
||||
EXPECT_EQ(0x03, packet.byte1);
|
||||
EXPECT_EQ(0x04, packet.byte2);
|
||||
EXPECT_EQ(0x05, packet.byte3);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
|
||||
EXPECT_TRUE(midi::composeTxPacket(buffer, packet));
|
||||
EXPECT_EQ(CIN::sysExEnds2Bytes, packet.header);
|
||||
EXPECT_EQ(0x06, packet.byte1);
|
||||
EXPECT_EQ(0xf7, packet.byte2);
|
||||
EXPECT_EQ(0x00, packet.byte3);
|
||||
EXPECT_EQ(0, buffer.getLength());
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, InvalidPacketIsNotSerialised)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::reserved;
|
||||
packet.byte1 = 0x01;
|
||||
packet.byte2 = 0x02;
|
||||
packet.byte3 = 0x03;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_TRUE(buffer.isEmpty());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, CableEventsAreNotSerialised)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::cableEvent;
|
||||
packet.byte1 = 0x01;
|
||||
packet.byte2 = 0x02;
|
||||
packet.byte3 = 0x03;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_TRUE(buffer.isEmpty());
|
||||
}
|
||||
|
||||
// Channel Voice Messages --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, NoteOff)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::noteOff;
|
||||
packet.byte1 = 0x80;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0x80, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
EXPECT_EQ(0x42, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, NoteOn)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::noteOn;
|
||||
packet.byte1 = 0x91;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0x91, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
EXPECT_EQ(0x42, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, PolyPressure)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::polyPressure;
|
||||
packet.byte1 = 0xA2;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xA2, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
EXPECT_EQ(0x42, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, ControlChange)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::controlChange;
|
||||
packet.byte1 = 0xB3;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xB3, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
EXPECT_EQ(0x42, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, ProgramChange)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::programChange;
|
||||
packet.byte1 = 0xC4;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(0xC4, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, ChannelPressure)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::channelPressure;
|
||||
packet.byte1 = 0xD5;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(0xD5, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, PitchBend)
|
||||
{
|
||||
Buffer buffer;
|
||||
midiEventPacket_t packet;
|
||||
packet.header = CIN::pitchBend;
|
||||
packet.byte1 = 0xE6;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xE6, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
EXPECT_EQ(0x42, buffer.read());
|
||||
}
|
||||
|
||||
// System Real Time Messages --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, Clock)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::singleByte;
|
||||
packet.byte1 = midi::Clock;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::Clock, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, Start)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::singleByte;
|
||||
packet.byte1 = midi::Start;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::Start, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, Stop)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::singleByte;
|
||||
packet.byte1 = midi::Stop;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::Stop, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, Continue)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::singleByte;
|
||||
packet.byte1 = midi::Continue;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::Continue, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, ActiveSensing)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::singleByte;
|
||||
packet.byte1 = midi::ActiveSensing;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::ActiveSensing, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SystemReset)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::singleByte;
|
||||
packet.byte1 = midi::SystemReset;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::SystemReset, buffer.read());
|
||||
}
|
||||
|
||||
// System Common Messages --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, TuneRequest)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::systemCommon1Byte;
|
||||
packet.byte1 = midi::TuneRequest;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(midi::TuneRequest, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SongSelect)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::systemCommon2Bytes;
|
||||
packet.byte1 = midi::SongSelect;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(midi::SongSelect, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SongPosition)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::systemCommon2Bytes;
|
||||
packet.byte1 = midi::SongPosition;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(midi::SongPosition, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, TimeCodeQuarterFrame)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::systemCommon2Bytes;
|
||||
packet.byte1 = midi::TimeCodeQuarterFrame;
|
||||
packet.byte2 = 0x12;
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(midi::TimeCodeQuarterFrame, buffer.read());
|
||||
EXPECT_EQ(0x12, buffer.read());
|
||||
}
|
||||
|
||||
// System Exclusive --
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SysExSinglePacket2Bytes)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::sysExEnds2Bytes;
|
||||
packet.byte1 = 0xf0;
|
||||
packet.byte2 = 0xf7;
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(0xf0, buffer.read());
|
||||
EXPECT_EQ(0xf7, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SysExSinglePacket3Bytes)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::sysExEnds3Bytes;
|
||||
packet.byte1 = 0xf0;
|
||||
packet.byte2 = 0x42;
|
||||
packet.byte3 = 0xf7;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xf0, buffer.read());
|
||||
EXPECT_EQ(0x42, buffer.read());
|
||||
EXPECT_EQ(0xf7, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SysExTwoPackets)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::sysExStart;
|
||||
packet.byte1 = 0xf0;
|
||||
packet.byte2 = 0x01;
|
||||
packet.byte3 = 0x02;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xf0, buffer.read());
|
||||
EXPECT_EQ(0x01, buffer.read());
|
||||
EXPECT_EQ(0x02, buffer.read());
|
||||
|
||||
packet.header = CIN::sysExEnds3Bytes;
|
||||
packet.byte1 = 0x03;
|
||||
packet.byte2 = 0x04;
|
||||
packet.byte3 = 0xf7;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0x03, buffer.read());
|
||||
EXPECT_EQ(0x04, buffer.read());
|
||||
EXPECT_EQ(0xf7, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SysExMultiplePacketsEndingWith1Byte)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::sysExStart;
|
||||
packet.byte1 = 0xf0;
|
||||
packet.byte2 = 0x01;
|
||||
packet.byte3 = 0x02;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xf0, buffer.read());
|
||||
EXPECT_EQ(0x01, buffer.read());
|
||||
EXPECT_EQ(0x02, buffer.read());
|
||||
|
||||
packet.header = CIN::sysExContinue;
|
||||
packet.byte1 = 0x03;
|
||||
packet.byte2 = 0x04;
|
||||
packet.byte3 = 0x05;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0x03, buffer.read());
|
||||
EXPECT_EQ(0x04, buffer.read());
|
||||
EXPECT_EQ(0x05, buffer.read());
|
||||
|
||||
packet.header = CIN::sysExEnds1Byte;
|
||||
packet.byte1 = 0xf7;
|
||||
packet.byte2 = 0x12; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
EXPECT_EQ(0xf7, buffer.read());
|
||||
}
|
||||
|
||||
TEST(MidiUsbPacketInterfaceRx, SysExMultiplePacketsEndingWith2Bytes)
|
||||
{
|
||||
midiEventPacket_t packet;
|
||||
Buffer buffer;
|
||||
|
||||
packet.header = CIN::sysExStart;
|
||||
packet.byte1 = 0xf0;
|
||||
packet.byte2 = 0x01;
|
||||
packet.byte3 = 0x02;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0xf0, buffer.read());
|
||||
EXPECT_EQ(0x01, buffer.read());
|
||||
EXPECT_EQ(0x02, buffer.read());
|
||||
|
||||
packet.header = CIN::sysExContinue;
|
||||
packet.byte1 = 0x03;
|
||||
packet.byte2 = 0x04;
|
||||
packet.byte3 = 0x05;
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
EXPECT_EQ(0x03, buffer.read());
|
||||
EXPECT_EQ(0x04, buffer.read());
|
||||
EXPECT_EQ(0x05, buffer.read());
|
||||
|
||||
packet.header = CIN::sysExEnds2Bytes;
|
||||
packet.byte1 = 0x06;
|
||||
packet.byte2 = 0xf7; // Should be ignored
|
||||
packet.byte3 = 0x42; // Should be ignored
|
||||
midi::serialiseRxPacket(packet, buffer);
|
||||
EXPECT_EQ(2, buffer.getLength());
|
||||
EXPECT_EQ(0x06, buffer.read());
|
||||
EXPECT_EQ(0xf7, buffer.read());
|
||||
}
|
||||
|
||||
END_UNNAMED_NAMESPACE
|
||||
|
|
@ -1,203 +0,0 @@
|
|||
#include "unit-tests.h"
|
||||
#include <src/midi_RingBuffer.h>
|
||||
|
||||
BEGIN_UNNAMED_NAMESPACE
|
||||
using namespace testing;
|
||||
using Buffer = midi::RingBuffer<uint8_t, 8>;
|
||||
|
||||
TEST(RingBuffer, writeScalar)
|
||||
{
|
||||
Buffer buffer;
|
||||
EXPECT_EQ(buffer.isEmpty(), true);
|
||||
EXPECT_EQ(buffer.getLength(), 0);
|
||||
buffer.write(42);
|
||||
buffer.write(47);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
EXPECT_EQ(buffer.getLength(), 2);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, readScalar)
|
||||
{
|
||||
Buffer buffer;
|
||||
buffer.write(42);
|
||||
EXPECT_EQ(buffer.getLength(), 1);
|
||||
buffer.write(47);
|
||||
EXPECT_EQ(buffer.getLength(), 2);
|
||||
EXPECT_EQ(buffer.read(), 42);
|
||||
EXPECT_EQ(buffer.getLength(), 1);
|
||||
EXPECT_EQ(buffer.read(), 47);
|
||||
EXPECT_EQ(buffer.isEmpty(), true);
|
||||
EXPECT_EQ(buffer.getLength(), 0);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, clear)
|
||||
{
|
||||
Buffer buffer;
|
||||
buffer.write(42);
|
||||
buffer.write(47);
|
||||
buffer.clear();
|
||||
EXPECT_EQ(buffer.isEmpty(), true);
|
||||
EXPECT_EQ(buffer.getLength(), 0);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, writeArray)
|
||||
{
|
||||
Buffer buffer;
|
||||
const uint8_t input[4] = {
|
||||
1, 2, 3, 4
|
||||
};
|
||||
buffer.write(input, 4);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
EXPECT_EQ(buffer.getLength(), 4);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, writeOverflow)
|
||||
{
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(1);
|
||||
EXPECT_EQ(buffer.getLength(), 1);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(2);
|
||||
EXPECT_EQ(buffer.getLength(), 2);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(3);
|
||||
EXPECT_EQ(buffer.getLength(), 3);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(4);
|
||||
EXPECT_EQ(buffer.getLength(), 4);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(5);
|
||||
EXPECT_EQ(buffer.getLength(), 5);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(6);
|
||||
EXPECT_EQ(buffer.getLength(), 6);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(7);
|
||||
EXPECT_EQ(buffer.getLength(), 7);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(8);
|
||||
EXPECT_EQ(buffer.getLength(), 8);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(9);
|
||||
EXPECT_EQ(buffer.getLength(), 8);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(10);
|
||||
EXPECT_EQ(buffer.getLength(), 8);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(11);
|
||||
EXPECT_EQ(buffer.getLength(), 8);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
buffer.write(12);
|
||||
EXPECT_EQ(buffer.getLength(), 8);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, readOverflow)
|
||||
{
|
||||
Buffer buffer;
|
||||
|
||||
buffer.write(1);
|
||||
buffer.write(2);
|
||||
buffer.write(3);
|
||||
buffer.write(4);
|
||||
buffer.write(5);
|
||||
buffer.write(6);
|
||||
buffer.write(7);
|
||||
buffer.write(8);
|
||||
buffer.write(9);
|
||||
buffer.write(10);
|
||||
buffer.write(11);
|
||||
buffer.write(12);
|
||||
EXPECT_EQ(buffer.read(), 5);
|
||||
EXPECT_EQ(buffer.getLength(), 7);
|
||||
EXPECT_EQ(buffer.read(), 6);
|
||||
EXPECT_EQ(buffer.getLength(), 6);
|
||||
EXPECT_EQ(buffer.read(), 7);
|
||||
EXPECT_EQ(buffer.getLength(), 5);
|
||||
EXPECT_EQ(buffer.read(), 8);
|
||||
EXPECT_EQ(buffer.getLength(), 4);
|
||||
EXPECT_EQ(buffer.read(), 9);
|
||||
EXPECT_EQ(buffer.getLength(), 3);
|
||||
EXPECT_EQ(buffer.read(), 10);
|
||||
EXPECT_EQ(buffer.getLength(), 2);
|
||||
EXPECT_EQ(buffer.read(), 11);
|
||||
EXPECT_EQ(buffer.getLength(), 1);
|
||||
EXPECT_EQ(buffer.read(), 12);
|
||||
EXPECT_EQ(buffer.getLength(), 0);
|
||||
EXPECT_EQ(buffer.read(), 0);
|
||||
EXPECT_EQ(buffer.getLength(), 0);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, writeArrayOverflow)
|
||||
{
|
||||
Buffer buffer;
|
||||
const uint8_t input[12] = {
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
|
||||
};
|
||||
buffer.write(input, 12);
|
||||
EXPECT_EQ(buffer.isEmpty(), false);
|
||||
EXPECT_EQ(buffer.getLength(), 8); // Max size
|
||||
}
|
||||
|
||||
TEST(RingBuffer, readArray)
|
||||
{
|
||||
Buffer buffer;
|
||||
const uint8_t input[4] = {
|
||||
1, 2, 3, 4
|
||||
};
|
||||
uint8_t output[4] = { 0 };
|
||||
buffer.write(input, 4);
|
||||
buffer.read(output, 4);
|
||||
EXPECT_THAT(output, ContainerEq(input));
|
||||
}
|
||||
|
||||
TEST(RingBuffer, readArrayOverflow)
|
||||
{
|
||||
Buffer buffer;
|
||||
const uint8_t input[12] = {
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
|
||||
};
|
||||
const uint8_t expected[8] = {
|
||||
5, 6, 7, 8, 9, 10, 11, 12,
|
||||
};
|
||||
uint8_t output[8] = { 0 };
|
||||
|
||||
buffer.write(input, 12);
|
||||
buffer.read(output, 8);
|
||||
EXPECT_THAT(output, ContainerEq(expected));
|
||||
EXPECT_EQ(buffer.isEmpty(), true);
|
||||
EXPECT_EQ(buffer.getLength(), 0);
|
||||
}
|
||||
|
||||
TEST(RingBuffer, peek)
|
||||
{
|
||||
Buffer buffer;
|
||||
const uint8_t input[4] = {
|
||||
1, 2, 3, 4
|
||||
};
|
||||
|
||||
buffer.write(input, 4);
|
||||
EXPECT_EQ(1, buffer.peek());
|
||||
EXPECT_EQ(2, buffer.peek(1));
|
||||
EXPECT_EQ(3, buffer.peek(2));
|
||||
EXPECT_EQ(4, buffer.peek(3));
|
||||
EXPECT_EQ(4, buffer.getLength()) << "Peek should not change buffer length";
|
||||
}
|
||||
|
||||
TEST(RingBuffer, pop)
|
||||
{
|
||||
Buffer buffer;
|
||||
const uint8_t input[4] = {
|
||||
1, 2, 3, 4
|
||||
};
|
||||
|
||||
buffer.write(input, 4);
|
||||
buffer.pop();
|
||||
EXPECT_EQ(3, buffer.getLength());
|
||||
buffer.pop(2);
|
||||
EXPECT_EQ(1, buffer.getLength());
|
||||
}
|
||||
|
||||
END_UNNAMED_NAMESPACE
|
||||
|
||||
|
|
@ -19,7 +19,6 @@ TEST(Settings, hasTheRightDefaultValues)
|
|||
EXPECT_EQ(midi::DefaultSettings::UseRunningStatus, false);
|
||||
EXPECT_EQ(midi::DefaultSettings::HandleNullVelocityNoteOnAsNoteOff, true);
|
||||
EXPECT_EQ(midi::DefaultSettings::Use1ByteParsing, true);
|
||||
EXPECT_EQ(midi::DefaultSettings::BaudRate, 31250);
|
||||
EXPECT_EQ(midi::DefaultSettings::SysExMaxSize, unsigned(128));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue