diff --git a/app/src/test/java/ru/project/datasource/DataSourceReaderTest.java b/app/src/test/java/ru/project/datasource/DataSourceReaderTest.java new file mode 100644 index 0000000..740904c --- /dev/null +++ b/app/src/test/java/ru/project/datasource/DataSourceReaderTest.java @@ -0,0 +1,116 @@ +package ru.project.datasource; + +import java.io.UncheckedIOException; +import java.util.NoSuchElementException; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; + +import ru.project.collection.MyList; +import ru.project.collection.MyLinkedList; + +import ru.project.student.Student; +import ru.project.student.StudentBuilder; + +class DataSourceReaderTest{ + private StudentCsvReader valideReader; + //Testing StudentCsvReader + @BeforeEach + void setUp(){ + valideReader = new StudentCsvReader("C:\\Users\\Dexp\\TestData\\sample.csv"); + } + + @Test + void readerTestRejectRelativePath(){ + assertThrows(IllegalArgumentException.class, () -> new StudentCsvReader("/Users/Dexp/TestData/sample.csv")); + } + + @Test + void readerRejectPathIsDir(){ + assertThrows(UncheckedIOException.class, () -> new StudentCsvReader("C:\\Users\\Dexp\\TestData")); + } + + @Test + void readerTestFileNotExist(){ + assertThrows(UncheckedIOException.class, () -> new StudentCsvReader("C:\\Users\\Dexp\\TestData\\sss.csv")); + } + + @Test + void testSkipsHeader(){ + Student student = valideReader.next(); + assertTrue(!(student.getGroupNumber()=="groupNumber")); + } + + @Test + void testCreationStudentOnValidData(){ + Student student = valideReader.next(); + assertEquals(student.getGroupNumber(), "A21"); + assertEquals(student.getAverageGrade(), 5.0); + assertEquals(student.getRecordBookNumber(), 331); + } + + @Test + void testNotSkippingFirstStudent(){ + boolean hn = valideReader.hasNext(); + hn = valideReader.hasNext(); + Student student = valideReader.next(); + assertEquals(student.getGroupNumber(), "A21"); + assertEquals(student.getAverageGrade(), 5.0); + assertEquals(student.getRecordBookNumber(), 331); + } + + @Test + void testValidEndsOfFile(){ + Student student = valideReader.next(); + student = valideReader.next(); + assertTrue(!valideReader.hasNext()); + } + + @Test + void testOutOfIndex(){ + assertThrows(NoSuchElementException.class, () -> { + Student student = valideReader.next(); + student = valideReader.next(); + student = valideReader.next(); + }); + } + + @Test + void readerTestRejectFewParametres(){ + assertThrows(IllegalArgumentException.class, () -> { + StudentCsvReader reader = new StudentCsvReader("C:\\Users\\Dexp\\TestData\\fewparameters.csv"); + Student student = reader.next(); + }); + } + + @Test + void readerTestRejectInvalidGroupNumber(){ + assertThrows(IllegalArgumentException.class, () -> { + StudentCsvReader reader = new StudentCsvReader("C:\\Users\\Dexp\\TestData\\invalid_groupnumber.csv"); + Student student = reader.next(); + }); + } + + @Test + void readerTestRejectInvalidAverageGrade(){ + assertThrows(IllegalArgumentException.class, () -> { + StudentCsvReader reader = new StudentCsvReader("C:\\Users\\Dexp\\TestData\\invalid_averagegrade.csv"); + Student student = reader.next(); + }); + } + + @Test + void readerTestRejectInvalidRecordBookNumber(){ + assertThrows(IllegalArgumentException.class, () -> { + StudentCsvReader reader = new StudentCsvReader("C:\\Users\\Dexp\\TestData\\invalid_recordbooknumber.csv"); + Student student = reader.next(); + }); + } +} \ No newline at end of file