Example #1
0
        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)));
        }
Example #2
0
        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}");
        }
Example #3
0
        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.");
        }