ex-int-02-meet-the-teacher/MeetTheTeacher.Test/Model/CsvDataTests.cs
github-classroom[bot] 1be1863b20
Initial commit
2025-04-24 07:02:41 +00:00

62 lines
2.1 KiB
C#

using MeetTheTeacher.Model;
namespace MeetTheTeacher.Test.Model;
public sealed class CsvDataTests
{
[Fact]
public void GetHeader_Valid()
{
var headerNames = new List<string> { "Name", "Day", "ConsultingHour", "Room" };
var data = new List<string> { "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<string> { "Name", "Day", "ConsultingHour", "Room" };
var data = new List<string> { "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<string> { "Name", "Day", "ConsultingHour", "Room" };
var data = new List<string> { "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<string[], string[]> EmptyInputData => new()
{
{ Array.Empty<string>(), new[] { "Teacher1", "Monday", "10:00-12:00", "A1" } },
{ new[] { "Name", "Day", "ConsultingHour", "Room" }, Array.Empty<string>() },
{ Array.Empty<string>(), Array.Empty<string>() }
};
}