public static bool AreEqual(MidiFile file1, MidiFile file2, bool compareOriginalFormat) { if (ReferenceEquals(file1, file2)) { return(true); } if (ReferenceEquals(null, file1) || ReferenceEquals(null, file2)) { return(false); } if (compareOriginalFormat && file1.OriginalFormat != file2.OriginalFormat) { return(false); } if (!file1.TimeDivision.Equals(file2.TimeDivision)) { return(false); } var chunks1 = file1.Chunks; var chunks2 = file2.Chunks; if (chunks1.Count != chunks2.Count) { return(false); } return(chunks1.Zip(chunks2, (c1, c2) => new { Chunk1 = c1, Chunk2 = c2 }) .All(c => MidiChunkEquality.AreEqual(c.Chunk1, c.Chunk2))); }
public static void AreEqual(TrackChunk trackChunk1, TrackChunk trackChunk2, bool compareDeltaTimes, string message = null) { var areEqual = MidiChunkEquality.Equals( trackChunk1, trackChunk2, new MidiChunkEqualityCheckSettings { EventEqualityCheckSettings = new MidiEventEqualityCheckSettings { CompareDeltaTimes = compareDeltaTimes } }, out var chunksComparingMessage); Assert.IsTrue(areEqual, $"{message} {chunksComparingMessage}"); }
public static void AreEqual(IEnumerable <TrackChunk> trackChunks1, IEnumerable <TrackChunk> trackChunks2, bool compareDeltaTimes, string message = null) { var trackChunksEnumerator1 = trackChunks1.GetEnumerator(); var trackChunksEnumerator2 = trackChunks2.GetEnumerator(); var i = 0; while (true) { var trackChunksEnumerated1 = !trackChunksEnumerator1.MoveNext(); var trackChunksEnumerated2 = !trackChunksEnumerator2.MoveNext(); if (trackChunksEnumerated1 || trackChunksEnumerated2) { break; } string chunksComparingMessage; var areEqual = MidiChunkEquality.Equals( trackChunksEnumerator1.Current, trackChunksEnumerator2.Current, new MidiChunkEqualityCheckSettings { EventEqualityCheckSettings = new MidiEventEqualityCheckSettings { CompareDeltaTimes = compareDeltaTimes } }, out chunksComparingMessage); Assert.IsTrue(areEqual, $"{message} Track chunk {i} is invalid. {chunksComparingMessage}"); i++; } Assert.IsTrue(trackChunksEnumerator1.Current == null && trackChunksEnumerator2.Current == null, $"{message} Chunks collections have different length."); }