Skip to content

Commit 5186c34

Browse files
committed
добавлена часть тестов
1 parent 3290544 commit 5186c34

File tree

4 files changed

+170
-102
lines changed

4 files changed

+170
-102
lines changed

savedData.txt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +0,0 @@
1-
Client{name='Альберт Большаков', phoneNumber='+79141544234', idNumber=795}
2-
Client{name='Антон Германович Федосеев', phoneNumber='+79512917697', idNumber=47}
3-
Client{name='Белозерова Ольга', phoneNumber='+79132151876', idNumber=906}
4-
Client{name='Большакова Маргарита', phoneNumber='+79600176461', idNumber=358}
5-
Client{name='Виктория Гущина', phoneNumber='+79660851640', idNumber=872}
6-
Client{name='Даниил Маслов', phoneNumber='+79769435383', idNumber=861}
7-
Client{name='Денисова Юлия', phoneNumber='+79395588731', idNumber=328}
8-
Client{name='Елисеев Денис Егорович', phoneNumber='+79569043128', idNumber=762}
9-
Client{name='Кира Денисовна Гордеева', phoneNumber='+79369345223', idNumber=97}
10-
Client{name='Комарова Дарья Макаровна', phoneNumber='+79009560450', idNumber=538}
11-
Client{name='Лобанов Вячеслав Васильевич', phoneNumber='+79633737514', idNumber=122}
12-
Client{name='Марина Альбертовна Белова', phoneNumber='+79111698201', idNumber=942}
13-
Client{name='Матвей Горбунов', phoneNumber='+79544728055', idNumber=172}
14-
Client{name='Матвей Григорьевич Ефремов', phoneNumber='+79467628131', idNumber=266}
15-
Client{name='Осипов Степан Макарович', phoneNumber='+79600704787', idNumber=290}
16-
Client{name='Савина Лариса Дмитриевна', phoneNumber='+79024370933', idNumber=22}
17-
Client{name='Смирнов Никита Лаврентьевич', phoneNumber='+79956621645', idNumber=691}
18-
Client{name='Соколова Татьяна', phoneNumber='+79988936291', idNumber=758}
19-
Client{name='Чернов Борис Геннадьевич', phoneNumber='+79574148315', idNumber=697}
20-
Client{name='Ярослав Георгиевич Максимов', phoneNumber='+79171026484', idNumber=964}
21-

src/main/java/App.java

Lines changed: 3 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,12 @@
1-
import dto.Client;
2-
import input.CustomCollection;
3-
import input.InputManager;
4-
import input.Strategy.FileReaderStrategy;
5-
import input.Strategy.ManualInputReaderStrategy;
6-
import input.Strategy.RandomDataGeneratorStrategy;
1+
import userInterface.MenuManager;
72

83
import java.io.IOException;
9-
import java.io.PrintStream;
10-
import java.nio.charset.StandardCharsets;
114

125
public class App {
136
public static void main(String[] args) throws IOException {
14-
System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));
15-
////
16-
//// System.out.println("=== ТЕСТ FileReader ===");
17-
////
18-
//// try {
19-
//// FileReaderStrategy reader = new FileReaderStrategy("test_clients.txt");
20-
//// CustomCollection<Client> clients = reader.getData();
21-
////
22-
//// System.out.println("\n=== РЕЗУЛЬТАТ ===");
23-
//// System.out.println("Загружено клиентов: " + clients.size());
24-
//// System.out.println("Содержимое:");
25-
////
26-
//// int i = 1;
27-
//// for (Client client : clients) {
28-
//// System.out.println(i + ". " + client);
29-
//// i++;
30-
//// }
31-
////
32-
//// } catch (Exception e) {
33-
//// System.out.println("ФАТАЛЬНАЯ ОШИБКА: " + e.getMessage());
34-
//// e.printStackTrace();
35-
//// }
36-
////
37-
//// System.out.println("=== КОНЕЦ ТЕСТА === \n");
38-
////
39-
//// System.out.println("=== ТЕСТ RandomDataGenerator ===");
40-
////
41-
//// // Тест 1: Базовая генерация
42-
//// RandomDataGeneratorStrategy generator = new RandomDataGeneratorStrategy(5);
43-
//// CustomCollection<Client> clients = generator.getData();
44-
////
45-
//// System.out.println("Сгенерировано: " + clients.size() + " клиентов");
46-
//// clients.forEach(client -> System.out.println(" - " + client));
47-
////
48-
//// // Тест 2: С уникальными параметрами
49-
//// System.out.println("\n=== Тест с кастомным диапазоном ===");
50-
//// RandomDataGeneratorStrategy generator2 = new RandomDataGeneratorStrategy(3);
51-
//// CustomCollection<Client> clients2 = generator2.getData();
52-
////
53-
//// clients2.forEach(client ->
54-
//// System.out.println(" - " + client.getName() + ", ID: " + client.getIdNumber()));
55-
////
56-
//// System.out.println("=== КОНЕЦ ТЕСТА ===");
57-
//
58-
// System.out.println("=== ТЕСТ ManualInputReader ===\n");
59-
//
60-
// ManualInputReaderStrategy reader = new ManualInputReaderStrategy();
61-
// CustomCollection<Client> clients = reader.getData();
62-
//
63-
// System.out.println("\n=== РЕЗУЛЬТАТ ===");
64-
// System.out.println("Всего клиентов: " + clients.size());
65-
//
66-
// if (!clients.isEmpty()) {
67-
// System.out.println("Список:");
68-
// int i = 1;
69-
// for (Client client : clients) {
70-
// System.out.println(i + ". " + client);
71-
// i++;
72-
// }
73-
// }
74-
// System.out.println("=== КОНЕЦ ТЕСТА ===");
7+
MenuManager menuManager = new MenuManager();
758

76-
InputManager inputManager = new InputManager();
77-
inputManager.setStrategy(new FileReaderStrategy("test_clients.txt"));
78-
CustomCollection<Client> clients = inputManager.loadData();
79-
clients.forEach(System.out::println);
80-
81-
82-
// inputManager.setStrategy(inputManager.createManualStrategy());
83-
// CustomCollection<Client> clients2 = inputManager.loadData();
84-
// clients2.forEach(System.out::println);
9+
menuManager.run();
8510
}
8611
}
8712

src/main/java/userInterface/AppController.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import enums.Field;
55
import input.CustomCollection;
66
import input.InputManager;
7+
import input.strategy.FileReaderStrategy;
8+
import input.strategy.ManualInputReaderStrategy;
9+
import input.strategy.RandomDataGeneratorStrategy;
710
import output.FileDataWriter;
811
import sorting.MergeSortDefaultStrategy;
912
import sorting.MergeSortDynamicStrategy;
@@ -50,7 +53,7 @@ public void showAndWriteAllClients(){
5053
}
5154

5255
public void startFileReaderStrategy(String path){
53-
inputManager.setStrategy(inputManager.createFileStrategy(path));
56+
inputManager.setStrategy(new FileReaderStrategy(path));
5457
try {
5558
CustomCollection<Client> fromFileList = inputManager.loadData();
5659
int countOfAlexes = concurrentCounter.countAlexes(fromFileList);
@@ -65,7 +68,7 @@ public void startFileReaderStrategy(String path){
6568
}
6669

6770
public void startManualInputStrategy(){
68-
inputManager.setStrategy(inputManager.createManualStrategy());
71+
inputManager.setStrategy(new ManualInputReaderStrategy());
6972
try {
7073
CustomCollection<Client> manualList = inputManager.loadData();
7174
int countOfAlexes = concurrentCounter.countAlexes(manualList);
@@ -80,7 +83,7 @@ public void startManualInputStrategy(){
8083
}
8184

8285
public void startRandomDataStrategy(int count){
83-
inputManager.setStrategy(inputManager.createRandomStrategy(count));
86+
inputManager.setStrategy(new RandomDataGeneratorStrategy(count));
8487
try {
8588
CustomCollection<Client> randomList = inputManager.loadData();
8689
int countOfAlexes = concurrentCounter.countAlexes(randomList);
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
package input;
2+
3+
import dto.Client;
4+
import input.strategy.ClientInputStrategy;
5+
import input.strategy.FileReaderStrategy;
6+
import input.strategy.ManualInputReaderStrategy;
7+
import input.strategy.RandomDataGeneratorStrategy;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.DisplayName;
10+
import org.junit.jupiter.api.Test;
11+
12+
import java.io.IOException;
13+
14+
import static org.junit.jupiter.api.Assertions.*;
15+
16+
class InputManagerTest {
17+
18+
private InputManager inputManager;
19+
20+
@BeforeEach
21+
void setUp() {
22+
inputManager = new InputManager();
23+
}
24+
25+
@Test
26+
@DisplayName("Конструктор без стратегии должен создавать InputManager с null-стратегией")
27+
void testConstructorWithoutStrategy() {
28+
assertNull(inputManager.getCurrentStrategy());
29+
}
30+
31+
@Test
32+
@DisplayName("Конструктор с null-стратегией должен выбрасывать IllegalArgumentException")
33+
void testConstructorWithNullStrategyThrowsException() {
34+
assertThrows(IllegalArgumentException.class, () -> new InputManager(null));
35+
}
36+
37+
@Test
38+
@DisplayName("Конструктор с валидной стратегией должен устанавливать её как текущую")
39+
void testConstructorWithValidStrategy() {
40+
ClientInputStrategy strategy = new TestClientInputStrategy();
41+
InputManager manager = new InputManager(strategy);
42+
assertEquals(strategy, manager.getCurrentStrategy());
43+
}
44+
45+
@Test
46+
@DisplayName("setStrategy с null должен выбрасывать IllegalArgumentException")
47+
void testSetStrategyWithNullThrowsException() {
48+
assertThrows(IllegalArgumentException.class, () -> inputManager.setStrategy(null));
49+
}
50+
51+
@Test
52+
@DisplayName("setStrategy должен корректно устанавливать новую стратегию")
53+
void testSetStrategy() {
54+
ClientInputStrategy strategy = new TestClientInputStrategy();
55+
inputManager.setStrategy(strategy);
56+
assertEquals(strategy, inputManager.getCurrentStrategy());
57+
}
58+
59+
@Test
60+
@DisplayName("loadData без установленной стратегии должен выбрасывать IllegalStateException")
61+
void testLoadDataWithoutStrategyThrowsException() throws IOException {
62+
assertThrows(IllegalStateException.class, inputManager::loadData);
63+
}
64+
65+
@Test
66+
@DisplayName("loadData должен возвращать данные от текущей стратегии")
67+
void testLoadDataReturnsDataFromStrategy() throws IOException {
68+
ClientInputStrategy strategy = new TestClientInputStrategy();
69+
inputManager.setStrategy(strategy);
70+
71+
CustomCollection<Client> result = inputManager.loadData();
72+
73+
assertNotNull(result);
74+
assertEquals(1, result.size()); // Ожидаем 1 клиента от тестовой стратегии
75+
}
76+
77+
@Test
78+
@DisplayName("loadData должен пробрасывать IOException от стратегии")
79+
void testLoadDataPropagatesIOException() throws IOException {
80+
ClientInputStrategy strategy = new ClientInputStrategy() {
81+
@Override
82+
public CustomCollection<Client> getData() throws IOException {
83+
throw new IOException("Ошибка ввода-вывода");
84+
}
85+
};
86+
inputManager.setStrategy(strategy);
87+
88+
assertThrows(IOException.class, inputManager::loadData);
89+
}
90+
91+
@Test
92+
@DisplayName("createFileStrategy с null-путём должен выбрасывать IllegalArgumentException")
93+
void testCreateFileStrategyWithNullPathThrowsException() {
94+
assertThrows(IllegalArgumentException.class,
95+
() -> new FileReaderStrategy(null));
96+
}
97+
98+
@Test
99+
@DisplayName("createFileStrategy с пустым путём должен выбрасывать IllegalArgumentException")
100+
void testCreateFileStrategyWithEmptyPathThrowsException() {
101+
assertThrows(IllegalArgumentException.class,
102+
() -> new FileReaderStrategy(""));
103+
}
104+
105+
@Test
106+
@DisplayName("createFileStrategy должен создавать FileReaderStrategy с указанным путём")
107+
void testCreateFileStrategy() {
108+
String filePath = "test.txt";
109+
FileReaderStrategy strategy = new FileReaderStrategy(filePath);
110+
111+
assertNotNull(strategy);
112+
// Если у FileReaderStrategy есть геттер для пути:
113+
// assertEquals(filePath, strategy.getFilePath());
114+
}
115+
116+
@Test
117+
@DisplayName("createManualStrategy должен создавать ManualInputReaderStrategy")
118+
void testCreateManualStrategy() {
119+
ManualInputReaderStrategy strategy = new ManualInputReaderStrategy();
120+
121+
assertNotNull(strategy);
122+
}
123+
124+
@Test
125+
@DisplayName("createRandomStrategy с отрицательным count должен выбрасывать IllegalArgumentException")
126+
void testCreateRandomStrategyWithNegativeCountThrowsException() {
127+
assertThrows(IllegalArgumentException.class,
128+
() -> new RandomDataGeneratorStrategy(-1));
129+
}
130+
131+
@Test
132+
@DisplayName("createRandomStrategy с нулевым count должен выбрасывать IllegalArgumentException")
133+
void testCreateRandomStrategyWithZeroCountThrowsException() {
134+
assertThrows(IllegalArgumentException.class,
135+
() -> new RandomDataGeneratorStrategy(0));
136+
}
137+
138+
@Test
139+
@DisplayName("createRandomStrategy должен создавать RandomDataGeneratorStrategy с указанным количеством")
140+
void testCreateRandomStrategy() {
141+
int count = 5;
142+
RandomDataGeneratorStrategy strategy =new RandomDataGeneratorStrategy(count);
143+
144+
assertNotNull(strategy);
145+
// Если у RandomDataGeneratorStrategy есть геттер для count:
146+
// assertEquals(count, strategy.getCount());
147+
}
148+
}
149+
150+
// Тестовая реализация ClientInputStrategy для использования в тестах
151+
class TestClientInputStrategy implements ClientInputStrategy {
152+
@Override
153+
public CustomCollection<Client> getData() throws IOException {
154+
CustomCollection<Client> clients = new CustomCollection<>();
155+
clients.add(new Client.ClientBuilder().name("Test Client")
156+
.phoneNumber("+79991234567").idNumber(1).build());
157+
158+
// Предполагаем, что CustomCollection имеет конструктор от Collection<Client>
159+
return clients;
160+
}
161+
}

0 commit comments

Comments
 (0)