예제 #1
0
        private static void ConvertCsvToNotes(
            IEnumerable <NoteWithCustomTimeAndLength> expectedNotes,
            TempoMap tempoMap,
            TimeSpanType timeType,
            string[] csvLines,
            NoteNumberFormat noteNumberFormat = NoteNumberFormat.NoteNumber,
            TimeSpanType noteLengthType       = TimeSpanType.Midi,
            char delimiter = ',')
        {
            var filePath = Path.GetTempFileName();

            File.WriteAllLines(filePath, csvLines);

            var settings = new NoteCsvConversionSettings
            {
                TimeType         = timeType,
                NoteNumberFormat = noteNumberFormat,
                NoteLengthType   = noteLengthType
            };

            settings.CsvSettings.CsvDelimiter = delimiter;

            try
            {
                var actualNotes = new CsvConverter().ConvertCsvToNotes(filePath, tempoMap, settings).ToList();
                _noteMethods.AssertCollectionsAreEqual(expectedNotes.Select(n => n.GetNote(tempoMap)), actualNotes);

                ConvertNotesToFromCsv(actualNotes, tempoMap, filePath, settings);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
예제 #2
0
        private static void ConvertNotesToCsv(
            IEnumerable <NoteWithCustomTimeAndLength> expectedNotes,
            TempoMap tempoMap,
            TimeSpanType timeType,
            string[] expectedCsvLines,
            NoteNumberFormat noteNumberFormat = NoteNumberFormat.NoteNumber,
            TimeSpanType noteLengthType       = TimeSpanType.Midi,
            char delimiter = ',')
        {
            var filePath = Path.GetTempFileName();

            var settings = new NoteCsvConversionSettings
            {
                TimeType         = timeType,
                NoteNumberFormat = noteNumberFormat,
                NoteLengthType   = noteLengthType
            };

            settings.CsvSettings.CsvDelimiter = delimiter;

            try
            {
                new CsvConverter().ConvertNotesToCsv(expectedNotes.Select(n => n.GetNote(tempoMap)), filePath, tempoMap, true, settings);
                var actualCsvLines = File.ReadAllLines(filePath);
                CollectionAssert.AreEqual(expectedCsvLines, actualCsvLines, StringComparer.OrdinalIgnoreCase);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
예제 #3
0
        private static void ConvertNotesToFromCsv(IEnumerable <Note> notes, TempoMap tempoMap, string outputFilePath, NoteCsvConversionSettings settings)
        {
            var csvConverter = new CsvConverter();

            csvConverter.ConvertNotesToCsv(notes, outputFilePath, tempoMap, true, settings);
            csvConverter.ConvertCsvToNotes(outputFilePath, tempoMap, settings);
        }