Exemplo n.º 1
0
        public void FindMatchesInBuffer_ChordNotesInInvertedOrder_MatchesChordSuccessfully_Test()
        {
            // Arrange
            var profile = new MidiMappingProfile
            {
                Mappings = new List <MidiMappingRecord>
                {
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(new[] { Pitch.C1, Pitch.E1, Pitch.G1 })
                    },
                }
            };

            var matcher       = new MidiMappingMatcher(profile);
            var straightOrder = new[] { Pitch.C1, Pitch.E1, Pitch.G1 };
            var inversion1    = new[] { Pitch.E1, Pitch.G1, Pitch.C1 };
            var inversion2    = new[] { Pitch.G1, Pitch.C1, Pitch.E1 };
            var inversion3    = new[] { Pitch.C1, Pitch.G1, Pitch.E1 };

            // Assert
            Assert.AreEqual(1, matcher.FindMatchesInBuffer(straightOrder).Length);
            Assert.AreEqual(1, matcher.FindMatchesInBuffer(inversion1).Length);
            Assert.AreEqual(1, matcher.FindMatchesInBuffer(inversion2).Length);
            Assert.AreEqual(1, matcher.FindMatchesInBuffer(inversion3).Length);
        }
Exemplo n.º 2
0
        public void FindMatchesInBuffer_TwoOverlappingChordsCaptured_MatchesTheBiggerOne_Test()
        {
            // Arrange
            var profile = new MidiMappingProfile
            {
                Mappings = new List <MidiMappingRecord>
                {
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(new[] { Pitch.C1, Pitch.G1 })
                    },
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(new[] { Pitch.C1, Pitch.E1, Pitch.G1 })
                    },
                }
            };

            var matcher = new MidiMappingMatcher(profile);
            var buffer  = new[] { Pitch.C1, Pitch.E1, Pitch.G1 };

            // Act
            var matchesFound = matcher.FindMatchesInBuffer(buffer);

            // Assert
            Assert.AreEqual(1, matchesFound.Length);
            Assert.AreEqual(3, matchesFound[0].Trigger.Pitches.Length);
        }
Exemplo n.º 3
0
        public void FindMatchesInBuffer_SingleNoteMappingOverlapsWithChordMapping_ChordTakesPriority_Test()
        {
            // Arrange
            var profile = new MidiMappingProfile
            {
                Mappings = new List <MidiMappingRecord>
                {
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(Pitch.E1)
                    },
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(new[] { Pitch.C1, Pitch.E1, Pitch.G1 })
                    },
                }
            };

            var matcher = new MidiMappingMatcher(profile);
            var buffer  = new [] { Pitch.C1, Pitch.E2, Pitch.G1, Pitch.E1, Pitch.C2 };

            // Act
            var matchesFound = matcher.FindMatchesInBuffer(buffer);

            // Assert
            Assert.AreEqual(1, matchesFound.Length);
            Assert.IsTrue(matchesFound[0].Trigger.IsChord);
        }
Exemplo n.º 4
0
        public void FindMatchesInBuffer_SingleNotesMixedWithUnmappedNotes_MatchesSingleNotesSuccessfully_Test()
        {
            // Arrange
            var profile = new MidiMappingProfile
            {
                Mappings = new List <MidiMappingRecord>
                {
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(Pitch.A1)
                    },
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(Pitch.D1)
                    },
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(Pitch.E1)
                    },
                }
            };

            var matcher = new MidiMappingMatcher(profile);
            var buffer  = new[] { Pitch.C1, Pitch.E1, Pitch.D1, Pitch.G1, Pitch.D1, Pitch.A1, Pitch.F1 };

            // Act
            var matchesFound = matcher.FindMatchesInBuffer(buffer);

            // Assert
            Assert.AreEqual(4, matchesFound.Length);
        }
Exemplo n.º 5
0
        public void FindMatchesInBuffer_ChordNotesAndSingleNotesCaptured_MatchesAll_Test()
        {
            // Arrange
            var profile = new MidiMappingProfile
            {
                Mappings = new List <MidiMappingRecord>
                {
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(Pitch.A1)
                    },
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(Pitch.D1)
                    },
                    new MidiMappingRecord {
                        Trigger = new MidiInputTrigger(new[] { Pitch.C1, Pitch.E1, Pitch.G1 })
                    },
                }
            };

            var matcher = new MidiMappingMatcher(profile);
            var buffer  = new[] { Pitch.C1, Pitch.E1, Pitch.G1, Pitch.D1, Pitch.A1 };

            // Act
            var matchesFound = matcher.FindMatchesInBuffer(buffer);

            // Assert
            Assert.AreEqual(3, matchesFound.Length);
        }
Exemplo n.º 6
0
        public void FindMatchesInBuffer_EmptyMappingProfile_DoesNotMatchAnything_Test()
        {
            // Arrange
            var matcher = new MidiMappingMatcher(emptyMappingProfile);
            var buffer  = new [] { Pitch.C1, Pitch.E2, Pitch.G1, Pitch.E1, Pitch.C2 };

            // Act
            var matchesFound = matcher.FindMatchesInBuffer(buffer);

            // Assert
            Assert.AreEqual(0, matchesFound.Length);
        }