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); }
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); }
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); }
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); }
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); }
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); }