From 2f50097de00fcf395e35135beb8d59eb66643487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D1=80=D1=88=D0=BE=D0=B2=20=D0=92=D0=BB=D0=B0=D0=B4?= =?UTF-8?q?=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Tue, 1 Sep 2026 17:46:02 +0700 Subject: [PATCH] test: add temp directory for test csv's, add test for invalid header --- .../ru/project/io/StudentCsvReaderTest.java | 100 ++++++++++++++++-- 1 file changed, 90 insertions(+), 10 deletions(-) diff --git a/app/src/test/java/ru/project/io/StudentCsvReaderTest.java b/app/src/test/java/ru/project/io/StudentCsvReaderTest.java index 2ba9ed1..2be00de 100644 --- a/app/src/test/java/ru/project/io/StudentCsvReaderTest.java +++ b/app/src/test/java/ru/project/io/StudentCsvReaderTest.java @@ -6,39 +6,59 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.charset.StandardCharsets; import java.util.NoSuchElementException; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.Test; import ru.project.student.Student; class StudentCsvReaderTest { - private final String ABSOLUTE_DIR = "C:\\Users\\Dexp\\TestData\\" - private StudentCsvReader valideReader; + @TempDir Path tempDir; + private Path studentPath; // Testing StudentCsvReader + + @BeforeAll + void generateStudentTestFile(){ + studentPath = tempDir.resolve("students.csv"); + Files.write( + studentPath, + new String[]{ + "groupNumber,averageGrade,recordBookNumber", + "A21,5.0,331", + "A21,4.0,332" + }, + StandardCharsets.UTF_8 + ); + } + @BeforeEach void setUp() { - valideReader = new StudentCsvReader(ABSOLUTE_DIR + "sample.csv"); + valideReader = new StudentCsvReader(studentPath.toAbsolutePath().toString()); } @Test void readerTestRejectRelativePath() { assertThrows( IllegalArgumentException.class, - () -> new StudentCsvReader("/Users/Dexp/TestData/sample.csv")); + () -> new StudentCsvReader(studentPath.toString())); } @Test void readerRejectPathIsDir() { assertThrows( - UncheckedIOException.class, () -> new StudentCsvReader(ABSOLUTE_DIR)); + UncheckedIOException.class, () -> new StudentCsvReader(tempDir.toAbsolutePath())); } @Test void readerTestFileNotExist() { assertThrows( UncheckedIOException.class, - () -> new StudentCsvReader(ABSOLUTE_DIR + "sss.csv")); + () -> new StudentCsvReader(tempDir.resolve("sss.csv").toAbsolutePath().toString())); } @Test @@ -88,8 +108,17 @@ class StudentCsvReaderTest { assertThrows( IllegalArgumentException.class, () -> { + Path path = tempDir.resolve("fewparameters.csv"); + Files.write( + path, + new String[]{ + "groupNumber,averageGrade,recordBookNumber", + "A21,5.0" + }, + StandardCharsets.UTF_8 + ); StudentCsvReader reader = - new StudentCsvReader(ABSOLUTE_DIR + "fewparameters.csv"); + new StudentCsvReader(path.toAbsolutePath().toString()); Student student = reader.next(); }); } @@ -99,8 +128,18 @@ class StudentCsvReaderTest { assertThrows( IllegalArgumentException.class, () -> { + Path path = tempDir.resolve("invalid_groupnumber.csv"); + Files.write( + path, + new String[]{ + "groupNumber,averageGrade,recordBookNumber", + "AAA,5.0,331", + "A21,4.0,332" + }, + StandardCharsets.UTF_8 + ); StudentCsvReader reader = - new StudentCsvReader(ABSOLUTE_DIR + "invalid_groupnumber.csv"); + new StudentCsvReader(path.toAbsolutePath().toString()); Student student = reader.next(); }); } @@ -110,8 +149,18 @@ class StudentCsvReaderTest { assertThrows( IllegalArgumentException.class, () -> { + Path path = tempDir.resolve("invalid_averagegrade.csv"); + Files.write( + path, + new String[]{ + "groupNumber,averageGrade,recordBookNumber", + "A21,-5.0,331", + "A21,4.0,332" + }, + StandardCharsets.UTF_8 + ); StudentCsvReader reader = - new StudentCsvReader(ABSOLUTE_DIR + "invalid_averagegrade.csv"); + new StudentCsvReader(path.toAbsolutePath().toString()); Student student = reader.next(); }); } @@ -121,9 +170,40 @@ class StudentCsvReaderTest { assertThrows( IllegalArgumentException.class, () -> { + Path path = tempDir.resolve("invalid_recordbooknumber.csv"); + Files.write( + path, + new String[]{ + "groupNumber,averageGrade,recordBookNumber", + "A21,5.0,-331", + "A21,4.0,332" + }, + StandardCharsets.UTF_8 + ); StudentCsvReader reader = - new StudentCsvReader(ABSOLUTE_DIR + "invalid_recordbooknumber.csv"); + new StudentCsvReader(path.toAbsolutePath().toString()); Student student = reader.next(); }); } + + @Test + void testInvalidHeader(){ + assertThrows( + IllegalArgumentException.class, + () -> { + Path path = tempDir.resolve("invalid_header.csv"); + Files.write( + path, + new String[]{ + "groupNumber,averageGrade,recordBookNomber", + "A21,5.0,-331", + "A21,4.0,332" + }, + StandardCharsets.UTF_8 + ); + StudentCsvReader reader = + new StudentCsvReader(path.toAbsolutePath().toString()); + Student student = reader.next(); + }); + } }