diff --git a/test/unit-tests/CMakeLists.txt b/test/unit-tests/CMakeLists.txt index e784749..65162d8 100644 --- a/test/unit-tests/CMakeLists.txt +++ b/test/unit-tests/CMakeLists.txt @@ -21,6 +21,7 @@ add_executable(unit-tests tests/unit-tests_MidiInput.cpp tests/unit-tests_MidiOutput.cpp tests/unit-tests_MidiThru.cpp + tests/unit-tests_MidiUsb.cpp ) target_link_libraries(unit-tests diff --git a/test/unit-tests/tests/unit-tests_MidiUsb.cpp b/test/unit-tests/tests/unit-tests_MidiUsb.cpp new file mode 100644 index 0000000..1e87233 --- /dev/null +++ b/test/unit-tests/tests/unit-tests_MidiUsb.cpp @@ -0,0 +1,75 @@ +#include "unit-tests.h" +#include + +BEGIN_MIDI_NAMESPACE + +END_MIDI_NAMESPACE + +// ----------------------------------------------------------------------------- + +BEGIN_UNNAMED_NAMESPACE + +TEST(MidiUsb, 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); +} + +TEST(MidiUsb, UsbMidiEventPacket) +{ + midi::UsbMidiEventPacket packet; + EXPECT_EQ(packet.mData[0], 0); + EXPECT_EQ(packet.mData[1], 0); + EXPECT_EQ(packet.mData[2], 0); + EXPECT_EQ(packet.mData[3], 0); + EXPECT_EQ(packet.getCableNumber(), 0); + EXPECT_EQ(packet.getCodeIndexNumber(), 0); + + packet.setHeader(12, 7); + EXPECT_EQ(packet.mData[0], 0xc7); + EXPECT_EQ(packet.getCableNumber(), 12); + EXPECT_EQ(packet.getCodeIndexNumber(), 7); + + const byte midiData[3] = { 12, 42, 47 }; + packet.setMidiData(midiData); + EXPECT_EQ(packet.mData[0], 0xc7); + EXPECT_EQ(packet.mData[1], 12); + EXPECT_EQ(packet.mData[2], 42); + EXPECT_EQ(packet.mData[3], 47); + + const byte fullData[4] = { 12, 34, 56, 78 }; + packet = fullData; + EXPECT_EQ(packet.mData[0], 12); + EXPECT_EQ(packet.mData[1], 34); + EXPECT_EQ(packet.mData[2], 56); + EXPECT_EQ(packet.mData[3], 78); + + const byte* midiDataConst = packet.getMidiData(); + EXPECT_EQ(midiDataConst[0], 34); + EXPECT_EQ(midiDataConst[1], 56); + EXPECT_EQ(midiDataConst[2], 78); + byte* midiDataMutable = packet.getMidiData(); + EXPECT_EQ(midiDataMutable[0], 34); + EXPECT_EQ(midiDataMutable[1], 56); + EXPECT_EQ(midiDataMutable[2], 78); +} + +END_UNNAMED_NAMESPACE