public void CreateShortMessage_SysCommonMessage_ReturnsCorrectMessageType()
        {
            var factory = new MidiMessageFactory();

            var msg = factory.CreateShortMessage(CommonMessage);

            Assert.IsInstanceOfType(msg, typeof(MidiSysCommonMessage));
        }
        public void CreateShortMessage_NoteMessage_ReturnsNotNull()
        {
            var factory = new MidiMessageFactory();

            var msg = factory.CreateShortMessage(NoteMessage);

            Assert.IsNotNull(msg);
        }
        public void CreateShortMessage_PooledNoteMessage_ReturnsSameInstance()
        {
            var factory = new MidiMessageFactory();

            var msg1 = factory.CreateShortMessage(NoteMessage);
            var msg2 = factory.CreateShortMessage(NoteMessage);

            Assert.AreSame(msg1, msg2);
        }
        public void CreateShortMessage_SysCommonMessage_ReturnsCorrectMessage()
        {
            var factory = new MidiMessageFactory();

            var msg = (MidiSysCommonMessage)factory.CreateShortMessage(CommonMessage);

            Assert.AreEqual(CommonMessage, msg.Data);
            Assert.AreEqual(0xF1, msg.Status);
            Assert.AreEqual(0x00, msg.Parameter1);
            Assert.AreEqual(0x00, msg.Parameter2);
            Assert.AreEqual(MidiSysCommonType.MtcQuarterFrame, msg.CommonType);
        }
        public void CreateShortMessage_NoteMessage_ReturnsCorrectMessage()
        {
            var factory = new MidiMessageFactory();

            var msg = (MidiChannelMessage)factory.CreateShortMessage(NoteMessage);

            Assert.AreEqual(NoteMessage, msg.Data);
            Assert.AreEqual(0x81, msg.Status);
            Assert.AreEqual(0x01, msg.MidiChannel);
            Assert.AreEqual(0x63, msg.Parameter1);
            Assert.AreEqual(0xFF, msg.Parameter2);
        }
        public void CreateShortMessage_InvalidSysRealtimeMessage_ReturnsCorrectMessage()
        {
            var factory = new MidiMessageFactory();

            var msg = (MidiSysRealTimeMessage)factory.CreateShortMessage(InvalidRealtimeMessage);

            Assert.AreEqual(InvalidRealtimeMessage, msg.Data);
            Assert.AreEqual(0xFD, msg.Status);
            Assert.AreEqual(0x00, msg.Parameter1);
            Assert.AreEqual(0x00, msg.Parameter2);
            Assert.AreEqual(MidiSysRealTimeType.Invalid, msg.RealTimeType);
        }
        public void CreateShortMessage_ControllerMessage_ReturnsCorrectMessage()
        {
            var factory = new MidiMessageFactory();

            var msg = (MidiControllerMessage)factory.CreateShortMessage(ControllerMessage);

            Assert.AreEqual(ControllerMessage, msg.Data);
            Assert.AreEqual(0xB1, msg.Status);
            Assert.AreEqual(0x07, msg.Parameter1);
            Assert.AreEqual(0xFF, msg.Parameter2);
            Assert.AreEqual(MidiControllerType.Volume, msg.ControllerType);
            Assert.AreEqual(0x01, msg.MidiChannel);
            Assert.AreEqual(0xFF, msg.Value);
        }