public void TwoValueConstructorAddsAndScales()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters(10, 50, 0, 127);

            Assert.AreEqual(26, p.ProcessValue(32));
            Assert.AreEqual(42, p.ProcessValue(64));
        }
        public void SingleValueConstructorPerformsFixedValue()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters(64);

            Assert.AreEqual(64, p.ProcessValue(64));
            Assert.AreEqual(64, p.ProcessValue(120));
        }
        public void CanSpecifyCopyInput()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters("*", 0, 127);

            for (int n = 0; n < 127; n++)
            {
                Assert.AreEqual(n, p.ProcessValue(n));
            }
        }
        public void CanSpecifyPercent()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters("200%", 0, 127);

            Assert.AreEqual(64, p.ProcessValue(32));
        }
        public void DoesNotAllowOutputToGoAboveMax()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters("+5", 0, 127);

            Assert.AreEqual(127, p.ProcessValue(125));
        }
        public void DoesNotAllowOutputToGoBelowMin()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters("-5", 0, 127);

            Assert.AreEqual(0, p.ProcessValue(4));
        }
        public void CanSpecifyAmountToSubtract()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters("-5", 0, 127);

            Assert.AreEqual(97, p.ProcessValue(102));
        }
        public void CanSpecifyAmountToAdd()
        {
            NoteEventOutputParameters p = new NoteEventOutputParameters("+16", 0, 127);

            Assert.AreEqual(26, p.ProcessValue(10));
        }