using MeetTheTeacher.Model; namespace MeetTheTeacher.Test.Model; public sealed class CsvDataTests { [Fact] public void GetHeader_Valid() { var headerNames = new List { "Name", "Day", "ConsultingHour", "Room" }; var data = new List { "Teacher1", "Monday", "10:00-12:00", "A1" }; var csvData = new CsvData(headerNames, data); csvData.GetHeader().Should().Be("Name;Day;ConsultingHour;Room"); } [Fact] public void GetData_Valid() { var headerNames = new List { "Name", "Day", "ConsultingHour", "Room" }; var data = new List { "Teacher1", "Monday", "10:00-12:00", "A1" }; var csvData = new CsvData(headerNames, data); csvData.GetData().Should().Be("Teacher1;Monday;10:00-12:00;A1"); } [Fact] public void Deconstruct_Valid() { var headerNames = new List { "Name", "Day", "ConsultingHour", "Room" }; var data = new List { "Teacher1", "Monday", "10:00-12:00", "A1" }; var csvData = new CsvData(headerNames, data); var (deconstructedHeaderNames, deconstructedData) = csvData; deconstructedHeaderNames.Should().BeEquivalentTo(headerNames); deconstructedData.Should().BeEquivalentTo(data); } [Theory] [MemberData(nameof(EmptyInputData))] public void GetHeaderAndData_EmptyInputData_ReturnsEmptyString(string[] headerNames, string[] data) { var csvData = new CsvData(headerNames, data); string header = csvData.GetHeader(); string rowData = csvData.GetData(); header.Should().Be(string.Join(CsvData.Separator, headerNames)); rowData.Should().Be(string.Join(CsvData.Separator, data)); } public static TheoryData EmptyInputData => new() { { Array.Empty(), new[] { "Teacher1", "Monday", "10:00-12:00", "A1" } }, { new[] { "Name", "Day", "ConsultingHour", "Room" }, Array.Empty() }, { Array.Empty(), Array.Empty() } }; }