84 lines
2.2 KiB
C++
84 lines
2.2 KiB
C++
#include "unit-tests.h"
|
|
#include <src/midi_Message.h>
|
|
|
|
BEGIN_MIDI_NAMESPACE
|
|
|
|
// Declare references:
|
|
// http://stackoverflow.com/questions/4891067/weird-undefined-symbols-of-static-constants-inside-a-struct-class
|
|
|
|
template<unsigned Size>
|
|
const unsigned Message<Size>::sSysExMaxSize;
|
|
|
|
END_MIDI_NAMESPACE
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
BEGIN_UNNAMED_NAMESPACE
|
|
|
|
TEST(MidiMessage, hasTheRightProperties)
|
|
{
|
|
typedef midi::Message<42> Message;
|
|
const Message message = Message();
|
|
EXPECT_EQ(message.channel, 0);
|
|
EXPECT_EQ(message.type, 0);
|
|
EXPECT_EQ(message.data1, 0);
|
|
EXPECT_EQ(message.data2, 0);
|
|
EXPECT_EQ(message.valid, false);
|
|
EXPECT_EQ(message.getSysExSize(), 0);
|
|
}
|
|
|
|
template<typename Message>
|
|
inline void setSysExSize(Message& ioMessage, unsigned inSize)
|
|
{
|
|
ioMessage.data2 = inSize >> 8; // MSB
|
|
ioMessage.data1 = inSize & 0xff; // LSB
|
|
}
|
|
|
|
TEST(MidiMessage, getSysExSize)
|
|
{
|
|
// Small message
|
|
{
|
|
typedef midi::Message<32> Message;
|
|
ASSERT_EQ(Message::sSysExMaxSize, 32);
|
|
Message message = Message();
|
|
|
|
const unsigned sizeUnder = 20;
|
|
setSysExSize(message, sizeUnder);
|
|
ASSERT_EQ(message.getSysExSize(), sizeUnder);
|
|
|
|
const unsigned sizeOver = 64;
|
|
setSysExSize(message, sizeOver);
|
|
ASSERT_EQ(message.getSysExSize(), 32);
|
|
}
|
|
// Medium message
|
|
{
|
|
typedef midi::Message<256> Message;
|
|
ASSERT_EQ(Message::sSysExMaxSize, 256);
|
|
Message message = Message();
|
|
|
|
const unsigned sizeUnder = 200;
|
|
setSysExSize(message, sizeUnder);
|
|
ASSERT_EQ(message.getSysExSize(), sizeUnder);
|
|
|
|
const unsigned sizeOver = 300;
|
|
setSysExSize(message, sizeOver);
|
|
ASSERT_EQ(message.getSysExSize(), 256);
|
|
}
|
|
// Large message
|
|
{
|
|
typedef midi::Message<1024> Message;
|
|
ASSERT_EQ(Message::sSysExMaxSize, 1024);
|
|
Message message = Message();
|
|
|
|
const unsigned sizeUnder = 1000;
|
|
setSysExSize(message, sizeUnder);
|
|
ASSERT_EQ(message.getSysExSize(), sizeUnder);
|
|
|
|
const unsigned sizeOver = 2000;
|
|
setSysExSize(message, sizeOver);
|
|
ASSERT_EQ(message.getSysExSize(), 1024);
|
|
}
|
|
}
|
|
|
|
END_UNNAMED_NAMESPACE
|