Testing.
This commit is contained in:
parent
8ebd4f9161
commit
189288c03f
|
|
@ -20,6 +20,7 @@ add_executable(unit-tests
|
|||
tests/unit-tests_SysExCodec.cpp
|
||||
tests/unit-tests_SerialMock.cpp
|
||||
tests/unit-tests_MidiInput.cpp
|
||||
tests/unit-tests_MidiInputCallbacks.cpp
|
||||
tests/unit-tests_MidiOutput.cpp
|
||||
tests/unit-tests_MidiThru.cpp
|
||||
tests/unit-tests_MidiUsb.cpp
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
#include "unit-tests.h"
|
||||
#include "unit-tests_Settings.h"
|
||||
#include <src/MIDI.h>
|
||||
#include <test/mocks/test-mocks_SerialMock.h>
|
||||
|
||||
BEGIN_MIDI_NAMESPACE
|
||||
|
||||
END_MIDI_NAMESPACE
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
BEGIN_UNNAMED_NAMESPACE
|
||||
|
||||
using namespace testing;
|
||||
USING_NAMESPACE_UNIT_TESTS
|
||||
typedef test_mocks::SerialMock<32> SerialMock;
|
||||
typedef midi::MidiInterface<SerialMock> MidiInterface;
|
||||
|
||||
template<unsigned Size>
|
||||
struct VariableSysExSettings : midi::DefaultSettings
|
||||
{
|
||||
static const unsigned SysExMaxSize = Size;
|
||||
};
|
||||
|
||||
MidiInterface* midi;
|
||||
|
||||
// --
|
||||
|
||||
void handleNoteOn(byte inChannel, byte inPitch, byte inVelocity)
|
||||
{
|
||||
EXPECT_NE(midi, nullptr);
|
||||
midi->sendNoteOn(inPitch, inVelocity, inChannel);
|
||||
}
|
||||
|
||||
TEST(MidiInputCallbacks, noteOn)
|
||||
{
|
||||
EXPECT_EQ(midi, nullptr);
|
||||
SerialMock serial;
|
||||
midi = new MidiInterface(serial);
|
||||
|
||||
|
||||
midi->setHandleNoteOn(handleNoteOn);
|
||||
midi->begin(MIDI_CHANNEL_OMNI);
|
||||
midi->turnThruOff();
|
||||
|
||||
static const unsigned rxSize = 3;
|
||||
static const byte rxData[rxSize] = { 0x9b, 12, 34 };
|
||||
serial.mRxBuffer.write(rxData, rxSize);
|
||||
|
||||
EXPECT_EQ(midi->read(), false);
|
||||
EXPECT_EQ(midi->read(), false);
|
||||
EXPECT_EQ(midi->read(), true);
|
||||
EXPECT_EQ(midi->getType(), midi::NoteOn);
|
||||
EXPECT_EQ(midi->getChannel(), 12);
|
||||
EXPECT_EQ(midi->getData1(), 12);
|
||||
EXPECT_EQ(midi->getData2(), 34);
|
||||
|
||||
EXPECT_EQ(serial.mTxBuffer.getLength(), 3);
|
||||
|
||||
|
||||
delete midi;
|
||||
midi = nullptr;
|
||||
}
|
||||
|
||||
END_UNNAMED_NAMESPACE
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
#include "unit-tests.h"
|
||||
#include "unit-tests_Settings.h"
|
||||
#include <src/MIDI.h>
|
||||
#include <test/mocks/test-mocks_SerialMock.h>
|
||||
|
||||
BEGIN_MIDI_NAMESPACE
|
||||
|
||||
END_MIDI_NAMESPACE
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
BEGIN_UNNAMED_NAMESPACE
|
||||
|
||||
using namespace testing;
|
||||
USING_NAMESPACE_UNIT_TESTS
|
||||
typedef test_mocks::SerialMock<32> SerialMock;
|
||||
typedef midi::MidiInterface<SerialMock> MidiInterface;
|
||||
|
||||
template<unsigned Size>
|
||||
struct VariableSysExSettings : midi::DefaultSettings
|
||||
{
|
||||
static const unsigned SysExMaxSize = Size;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
TEST(MidiThru, defaultValues)
|
||||
{
|
||||
SerialMock serial;
|
||||
MidiInterface midi(serial);
|
||||
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
||||
midi.begin(); // Should not change the state
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
||||
}
|
||||
|
||||
TEST(MidiThru, beginEnablesThru)
|
||||
{
|
||||
SerialMock serial;
|
||||
MidiInterface midi(serial);
|
||||
|
||||
midi.turnThruOff();
|
||||
EXPECT_EQ(midi.getThruState(), false);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Off);
|
||||
midi.begin();
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
||||
}
|
||||
|
||||
TEST(MidiThru, setGet)
|
||||
{
|
||||
SerialMock serial;
|
||||
MidiInterface midi(serial);
|
||||
|
||||
midi.turnThruOff();
|
||||
EXPECT_EQ(midi.getThruState(), false);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Off);
|
||||
|
||||
midi.turnThruOn();
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
||||
midi.turnThruOn(midi::SameChannel);
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::SameChannel);
|
||||
midi.turnThruOn(midi::DifferentChannel);
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::DifferentChannel);
|
||||
|
||||
midi.setThruFilterMode(midi::Full);
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
||||
midi.setThruFilterMode(midi::SameChannel);
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::SameChannel);
|
||||
midi.setThruFilterMode(midi::DifferentChannel);
|
||||
EXPECT_EQ(midi.getThruState(), true);
|
||||
EXPECT_EQ(midi.getFilterMode(), midi::DifferentChannel);
|
||||
}
|
||||
|
||||
END_UNNAMED_NAMESPACE
|
||||
Loading…
Reference in New Issue