/
siman_coder
/
JUnit
Обзор
Документация
Войти
/
siman_coder
/
JUnit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
java/org/example/CsvJsonParserTest.java
198 строк
7 KB
siman_coder
Create: CsvJsonParser.java, Employee.java, Main.java, CsvJsonParserTest.java, build.gradle, data.csv, data.json, data.xml, data2.json
07 июл 2026, 11:23
Верифицирован
07 июл 2026, 11:23
1a342fc
Код
Авторство
О чём код?
package org.example; import org.junit.jupiter.api.*; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import static org.junit.jupiter.api.Assertions.*; class CsvJsonParserTest { private static final String TEST_CSV = "test-data.csv"; private static final String TEST_JSON = "test-output.json"; private static final String TEST_XML = "test-data.xml"; @BeforeEach void setUp() throws IOException { // Создаем тестовый CSV файл String csvContent = "1,John,Smith,USA,25\n2,Inav,Petrov,RU,23\n3,Maria,Garcia,ES,30"; Files.write(Paths.get(TEST_CSV), csvContent.getBytes()); // Создаем тестовый XML файл String xmlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<employees>\n" + " <employee>\n" + " <id>1</id>\n" + " <firstName>John</firstName>\n" + " <lastName>Smith</lastName>\n" + " <country>USA</country>\n" + " <age>25</age>\n" + " </employee>\n" + " <employee>\n" + " <id>2</id>\n" + " <firstName>Inav</firstName>\n" + " <lastName>Petrov</lastName>\n" + " <country>RU</country>\n" + " <age>23</age>\n" + " </employee>\n" + " <employee>\n" + " <id>3</id>\n" + " <firstName>Maria</firstName>\n" + " <lastName>Garcia</lastName>\n" + " <country>ES</country>\n" + " <age>30</age>\n" + " </employee>\n" + "</employees>"; Files.write(Paths.get(TEST_XML), xmlContent.getBytes()); } @AfterEach void tearDown() throws IOException { Files.deleteIfExists(Paths.get(TEST_CSV)); Files.deleteIfExists(Paths.get(TEST_XML)); Files.deleteIfExists(Paths.get(TEST_JSON)); } @Test void testParseCSV_ValidFile_Success() { String[] columnMapping = {"id", "firstName", "lastName", "country", "age"}; List<Employee> employees = CsvJsonParser.parseCSV(columnMapping, TEST_CSV); assertNotNull(employees); assertEquals(3, employees.size()); Employee emp1 = employees.get(0); assertEquals(1, emp1.id); assertEquals("John", emp1.firstName); assertEquals("Smith", emp1.lastName); assertEquals("USA", emp1.country); assertEquals(25, emp1.age); Employee emp2 = employees.get(1); assertEquals(2, emp2.id); assertEquals("Inav", emp2.firstName); assertEquals("Petrov", emp2.lastName); assertEquals("RU", emp2.country); assertEquals(23, emp2.age); Employee emp3 = employees.get(2); assertEquals(3, emp3.id); assertEquals("Maria", emp3.firstName); assertEquals("Garcia", emp3.lastName); assertEquals("ES", emp3.country); assertEquals(30, emp3.age); } @Test void testListToJson_ValidList_ReturnsValidJson() { List<Employee> employees = List.of( new Employee(1, "John", "Smith", "USA", 25), new Employee(2, "Inav", "Petrov", "RU", 23) ); String json = CsvJsonParser.listToJson(employees); assertNotNull(json); // С пробелами из-за PrettyPrinting assertTrue(json.contains("\"id\": 1")); assertTrue(json.contains("\"firstName\": \"John\"")); assertTrue(json.contains("\"lastName\": \"Smith\"")); assertTrue(json.contains("\"country\": \"USA\"")); assertTrue(json.contains("\"age\": 25")); assertTrue(json.contains("\"id\": 2")); assertTrue(json.contains("\"firstName\": \"Inav\"")); assertTrue(json.contains("\"lastName\": \"Petrov\"")); assertTrue(json.contains("\"country\": \"RU\"")); assertTrue(json.contains("\"age\": 23")); } @Test void testParseXML_ValidFile_Success() { List<Employee> employees = CsvJsonParser.parseXML(TEST_XML); assertNotNull(employees); assertEquals(3, employees.size()); Employee emp1 = employees.get(0); assertEquals(1, emp1.id); assertEquals("John", emp1.firstName); assertEquals("Smith", emp1.lastName); assertEquals("USA", emp1.country); assertEquals(25, emp1.age); Employee emp2 = employees.get(1); assertEquals(2, emp2.id); assertEquals("Inav", emp2.firstName); assertEquals("Petrov", emp2.lastName); assertEquals("RU", emp2.country); assertEquals(23, emp2.age); Employee emp3 = employees.get(2); assertEquals(3, emp3.id); assertEquals("Maria", emp3.firstName); assertEquals("Garcia", emp3.lastName); assertEquals("ES", emp3.country); assertEquals(30, emp3.age); } @Test void testWriteAndReadJson_ValidData_Success() throws IOException { List<Employee> originalList = List.of( new Employee(1, "John", "Smith", "USA", 25), new Employee(2, "Inav", "Petrov", "RU", 23) ); String json = CsvJsonParser.listToJson(originalList); boolean writeResult = CsvJsonParser.writeString(json, TEST_JSON); List<Employee> readList = CsvJsonParser.jsonToList(TEST_JSON); assertTrue(writeResult); assertNotNull(readList); assertEquals(originalList.size(), readList.size()); for (int i = 0; i < originalList.size(); i++) { Employee original = originalList.get(i); Employee read = readList.get(i); assertEquals(original.id, read.id); assertEquals(original.firstName, read.firstName); assertEquals(original.lastName, read.lastName); assertEquals(original.country, read.country); assertEquals(original.age, read.age); } } @Test void testListToJson_EmptyList_ReturnsEmptyArray() { List<Employee> emptyList = List.of(); String json = CsvJsonParser.listToJson(emptyList); assertNotNull(json); assertEquals("[]", json.trim()); } @Test void testParseCSV_NonExistentFile_ReturnsNull() { String[] columnMapping = {"id", "firstName", "lastName", "country", "age"}; List<Employee> employees = CsvJsonParser.parseCSV(columnMapping, "nonexistent.csv"); assertNull(employees, "При отсутствии файла должен возвращаться null"); } @Test void testJsonStructure_ValidEmployees_ContainsAllFields() { List<Employee> employees = List.of( new Employee(1, "John", "Smith", "USA", 25) ); String json = CsvJsonParser.listToJson(employees); assertNotNull(json); assertTrue(json.contains("\"id\"")); assertTrue(json.contains("\"firstName\"")); assertTrue(json.contains("\"lastName\"")); assertTrue(json.contains("\"country\"")); assertTrue(json.contains("\"age\"")); } }