public void DataTest() { const int streams = 9; var currentAvailabilities = new CourseStreamAvailability[streams]; var availabilitiesStruct = new AvailableCourseStreams(); AssertAvailabilities(); AdjustAssertAvailabilities(1, CourseStreamAvailability.Mandatory); AdjustAssertAvailabilities(2, CourseStreamAvailability.Optional); AdjustAssertAvailabilities(3, CourseStreamAvailability.Optional); AdjustAssertAvailabilities(1, CourseStreamAvailability.Optional); AdjustAssertAvailabilities(1, CourseStreamAvailability.None); AdjustAssertAvailabilities(streams - 1, CourseStreamAvailability.Mandatory); void AdjustAssertAvailabilities(int index, CourseStreamAvailability availability) { AdjustAvailability(index, availability); AssertAvailabilities(); } void AdjustAvailability(int index, CourseStreamAvailability availability) { currentAvailabilities[index] = availabilitiesStruct[index] = availability; } void AssertAvailabilities() { for (int i = 0; i < streams; i++) { Assert.AreEqual(currentAvailabilities[i], availabilitiesStruct[i]); } } }
public void ToStringTest() { var availabilitiesStruct = new AvailableCourseStreams(); Assert.AreEqual("None", availabilitiesStruct.ToString()); availabilitiesStruct[1] = CourseStreamAvailability.Mandatory; availabilitiesStruct[3] = CourseStreamAvailability.Mandatory; availabilitiesStruct[8] = CourseStreamAvailability.Optional; Assert.AreEqual("1 - Mandatory, 3 - Mandatory, 8 - Optional", availabilitiesStruct.ToString()); }
private void LoadCourses() { using (var package = new ExcelPackage(new FileInfo(courseInformationSpreadsheetLocation))) { #region Courses Sheet var coursesSheet = package.Workbook.Worksheets[0]; var courses = new List <Course>(); // This is awful, but the whole process is awful too int currentRow = 3; int semester = 6; while (true) { var code = coursesSheet.Cells[currentRow, 1].Value?.ToString(); if (string.IsNullOrEmpty(code)) { break; } var name = coursesSheet.Cells[currentRow, 2].Value.ToString(); var ects = int.Parse(coursesSheet.Cells[currentRow, 3].Value.ToString()); var hours = int.Parse(coursesSheet.Cells[currentRow, 4].Value.ToString()); var stringType = coursesSheet.Cells[currentRow, 5].Value.ToString(); var streams = new AvailableCourseStreams(); for (int i = 0; i < 9; i++) { var availability = coursesSheet.Cells[currentRow, 6 + i].Value?.ToString(); streams[i] = availability switch { "Υ" => CourseStreamAvailability.Mandatory, "Ε" => CourseStreamAvailability.Optional, _ => CourseStreamAvailability.None }; } var professor1 = coursesSheet.Cells[currentRow, 15].Value.ToString(); string professor2 = null; if (!coursesSheet.Cells[currentRow, 15].Merge) { professor2 = coursesSheet.Cells[currentRow, 16].Value.ToString(); } var type = stringType switch { "ΥΚΕ" => CourseType.MandatoryInCourseStream, "ΓΕ" => CourseType.Mandatory, "Ε" => CourseType.Optional, }; var course = new Course(code, name, ects, hours, type, semester, streams, professor1, professor2); courses.Add(course); if (coursesSheet.Cells[currentRow, 1].Style.Border.Bottom.Style != ExcelBorderStyle.None) { semester++; } currentRow++; } #endregion #region Course Streams Sheet var courseStreamsSheet = package.Workbook.Worksheets[1]; var courseStreams = new Dictionary <string, string>(9); for (int i = 0; i < 9; i++) { var streamIndex = courseStreamsSheet.Cells[2, 2 + i * 2].Value.ToString(); var streamTitle = courseStreamsSheet.Cells[2, 3 + i * 2].Value.ToString(); courseStreams.Add(streamIndex, streamTitle); } #endregion CoursesInformation = new CoursesInformation(courses, courseStreams); } }