From 655e8266978903b9bbacfdcc17c9430ab22a18be Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 19:58:40 +0300 Subject: [PATCH 01/19] =?UTF-8?q?Revert=20"=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5=D1=80?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D1=82=D0=B7=20=D1=81=D0=BF=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D1=82=D0=B0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.java | 92 +++++++++++++------ src/manager/HistoryManager.java | 1 - src/manager/InMemoryHistoryManager.java | 66 ++----------- src/manager/InMemoryTaskManager.java | 19 +--- .../manager/InMemoryHistoryManagerTest.java | 27 +++--- 5 files changed, 86 insertions(+), 119 deletions(-) diff --git a/src/Main.java b/src/Main.java index af6285e..c4fd905 100644 --- a/src/Main.java +++ b/src/Main.java @@ -10,44 +10,76 @@ public class Main { public static void main(String[] args) { - TaskManager manager = Managers.getDefault(); - Task task1 = new Task("Task1", "Desc", Status.NEW); - Task task2 = new Task("Task2", "Desc", Status.NEW); - manager.addTask(task1); - manager.addTask(task2); - - Epic epic1 = new Epic("Epic1", "Desc"); - Epic epic2 = new Epic("Epic2", "Desc"); - manager.addEpic(epic1); - manager.addEpic(epic2); - - Subtask subtask1 = new Subtask("Sub1", "Desc", Status.NEW, epic1.getId()); - Subtask subtask2 = new Subtask("Sub2", "Desc", Status.NEW, epic1.getId()); - manager.addSubtask(subtask1); - manager.addSubtask(subtask2); - - manager.getTaskById(task1.getId()); - manager.getEpicById(epic1.getId()); - manager.getTaskById(task1.getId()); - manager.getSubtaskById(subtask1.getId()); - printHistory(manager); + TaskManager taskManager = Managers.getDefault(); - manager.removeTaskById(task1.getId()); - printHistory(manager); + // Создаем задачи + Task task1 = new Task("Покупки", "Купить продукты", Status.NEW); + Task task2 = new Task("Тренировка", "Сходить в зал", Status.IN_PROGRESS); + taskManager.addTask(task1); + taskManager.addTask(task2); + + // Создаем эпик с подзадачами + Epic epic1 = new Epic("Проект", "Разработка нового функционала"); + taskManager.addEpic(epic1); + + Subtask subtask1 = new Subtask("Разработка интерфейса", "Создать макет UI", Status.NEW, epic1.getId()); + Subtask subtask2 = new Subtask("Тестирование", "Проверить функционал", Status.DONE, epic1.getId()); + taskManager.addSubtask(subtask1); + taskManager.addSubtask(subtask2); + + // Просматриваем задачи для наполнения истории + System.out.println("\n=== Просмотр задач ==="); + taskManager.getTaskById(task1.getId()); + taskManager.getEpicById(epic1.getId()); + taskManager.getSubtaskById(subtask1.getId()); + taskManager.getSubtaskById(subtask2.getId()); + taskManager.getTaskById(task2.getId()); + + // Выводим все задачи и историю + printAllTasks(taskManager); + + // Создаем больше задач для демонстрации ограничения истории + System.out.println("\n=== Создаем дополнительные задачи ==="); + for (int i = 3; i <= 12; i++) { + Task task = new Task("Задача " + i, "Описание " + i, Status.NEW); + taskManager.addTask(task); + taskManager.getTaskById(task.getId()); // Просматриваем задачу + } - manager.removeEpicById(epic1.getId()); - printHistory(manager); // [] + // Выводим историю после превышения лимита (10 элементов) + System.out.println("\n=== История после 12 просмотров ==="); + printHistory(taskManager); + } + + private static void printAllTasks(TaskManager manager) { + System.out.println("\n=== Все задачи ==="); + System.out.println("Задачи:"); + for (Task task : manager.getAllTasks()) { + System.out.println(task); + } + System.out.println("\nЭпики:"); + for (Epic epic : manager.getAllEpics()) { + System.out.println(epic); + for (Task subtask : manager.getSubtasksOfEpic(epic.getId())) { + System.out.println("--> " + subtask); + } + } + System.out.println("\nПодзадачи:"); + for (Task subtask : manager.getAllSubtasks()) { + System.out.println(subtask); + } + System.out.println("\nИстория просмотров:"); + printHistory(manager); } private static void printHistory(TaskManager manager) { List history = manager.getHistory(); if (history.isEmpty()) { - System.out.println("History is empty"); + System.out.println("История пуста"); } else { - System.out.println("\nView history (" + history.size() + " items):"); - for (int i = 0; i < history.size(); i++) { - Task task = history.get(i); - System.out.println((i + 1) + ". " + task.getTitle() + " [ID:" + task.getId() + "]"); + System.out.println("Последние " + history.size() + " просмотренных задач:"); + for (Task task : history) { + System.out.println(" - " + task.getTitle() + " (ID: " + task.getId() + ")"); } } } diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java index 079236c..6070997 100644 --- a/src/manager/HistoryManager.java +++ b/src/manager/HistoryManager.java @@ -5,6 +5,5 @@ public interface HistoryManager { void add(Task task); - void remove(int id); List getHistory(); } \ No newline at end of file diff --git a/src/manager/InMemoryHistoryManager.java b/src/manager/InMemoryHistoryManager.java index 3dd9200..4d91302 100644 --- a/src/manager/InMemoryHistoryManager.java +++ b/src/manager/InMemoryHistoryManager.java @@ -1,75 +1,25 @@ package manager; import model.Task; -import java.util.*; - +import java.util.ArrayList; +import java.util.List; public class InMemoryHistoryManager implements HistoryManager { - - protected static class Node { - Task task; - Node prev; - Node next; - - Node(Task task) { - this.task = task; - } - } - - private final Map historyMap = new HashMap<>(); - private Node head; - private Node tail; + private static final int MAX_HISTORY_SIZE = 10; + private final List history = new ArrayList<>(); @Override public void add(Task task) { if (task == null) return; - int id = task.getId(); - remove(id); // Удаляем предыдущий просмотр - linkLast(task); - } - @Override - public void remove(int id) { - Node node = historyMap.remove(id); - if (node != null) { - removeNode(node); + history.add(task); + if (history.size() > MAX_HISTORY_SIZE) { + history.remove(0); } } @Override public List getHistory() { - List tasks = new ArrayList<>(); - Node current = head; - while (current != null) { - tasks.add(current.task); - current = current.next; - } - return tasks; - } - - private void linkLast(Task task) { - Node node = new Node(task); - if (tail == null) { - head = node; - } else { - tail.next = node; - node.prev = tail; - } - tail = node; - historyMap.put(task.getId(), node); - } - - private void removeNode(Node node) { - if (node.prev != null) { - node.prev.next = node.next; - } else { - head = node.next; - } - - if (node.next != null) { - node.next.prev = node.prev; - } else { - tail = node.prev; - } + return new ArrayList<>(history); } } \ No newline at end of file diff --git a/src/manager/InMemoryTaskManager.java b/src/manager/InMemoryTaskManager.java index 34c5bc2..05b4454 100644 --- a/src/manager/InMemoryTaskManager.java +++ b/src/manager/InMemoryTaskManager.java @@ -99,6 +99,7 @@ public void updateEpic(Epic epic) { oldEpic.setDescription(epic.getDescription()); } + @Override public void updateSubtask(Subtask subtask) { int id = subtask.getId(); @@ -118,10 +119,10 @@ public void updateSubtask(Subtask subtask) { } } + @Override public void removeTaskById(int id) { tasks.remove(id); - historyManager.remove(id); } @Override @@ -130,9 +131,7 @@ public void removeEpicById(int id) { if (epic != null) { for (int subId : epic.getSubtaskIds()) { subtasks.remove(subId); - historyManager.remove(subId); } - historyManager.remove(id); } } @@ -145,35 +144,22 @@ public void removeSubtaskById(int id) { epic.removeSubtask(id); updateEpicStatus(epic.getId()); } - historyManager.remove(id); } } @Override public void clearTasks() { - for (int id : tasks.keySet()) { - historyManager.remove(id); - } tasks.clear(); } @Override public void clearEpics() { - for (int epicId : epics.keySet()) { - historyManager.remove(epicId); - } - for (int subtaskId : subtasks.keySet()) { - historyManager.remove(subtaskId); - } epics.clear(); subtasks.clear(); } @Override public void clearSubtasks() { - for (int subtaskId : subtasks.keySet()) { - historyManager.remove(subtaskId); - } subtasks.clear(); for (Epic epic : epics.values()) { epic.getSubtaskIds().clear(); @@ -196,6 +182,7 @@ public List getSubtasksOfEpic(int epicId) { return result; } + @Override public List getHistory() { return historyManager.getHistory(); diff --git a/src/tests/manager/InMemoryHistoryManagerTest.java b/src/tests/manager/InMemoryHistoryManagerTest.java index 5379f73..9eb7be6 100644 --- a/src/tests/manager/InMemoryHistoryManagerTest.java +++ b/src/tests/manager/InMemoryHistoryManagerTest.java @@ -36,7 +36,7 @@ void addAndGetHistory() { } @Test - void shouldRemoveDuplicates() { + void addSameTaskTwice() { Task task = new Task("Task", "Desc", Status.NEW); task.setId(1); @@ -44,23 +44,22 @@ void shouldRemoveDuplicates() { historyManager.add(task); List history = historyManager.getHistory(); - assertEquals(1, history.size()); + assertEquals(2, history.size()); + assertEquals(task, history.get(0)); + assertEquals(task, history.get(1)); } @Test - void shouldRemoveNodeFromMiddle() { - Task task1 = new Task("Task1", "Desc", Status.NEW); - Task task2 = new Task("Task2", "Desc", Status.NEW); - Task task3 = new Task("Task3", "Desc", Status.NEW); - task1.setId(1); task2.setId(2); task3.setId(3); - - historyManager.add(task1); - historyManager.add(task2); - historyManager.add(task3); - historyManager.add(task2); // Дубликат + void historyLimit() { + for (int i = 1; i <= 15; i++) { + Task task = new Task("Task" + i, "Desc", Status.NEW); + task.setId(i); + historyManager.add(task); + } List history = historyManager.getHistory(); - assertEquals(3, history.size()); - assertEquals(List.of(task1, task3, task2), history); + assertEquals(10, history.size()); + assertEquals(6, history.get(0).getId()); + assertEquals(15, history.get(9).getId()); } } \ No newline at end of file From 425e1710dbce5e7d47f4869c6f73aea53b91a13f Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 19:59:52 +0300 Subject: [PATCH 02/19] Update Task.java --- src/model/Task.java | 72 ++++++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/src/model/Task.java b/src/model/Task.java index 79a3730..0d1efc6 100644 --- a/src/model/Task.java +++ b/src/model/Task.java @@ -1,6 +1,5 @@ package model; - import java.util.Objects; public class Task { @@ -15,24 +14,51 @@ public Task(String title, String description, Status status) { this.status = status; } - public int getId() { return id; } - public void setId(int id) { this.id = id; } - public String getTitle() { return title; } - public void setTitle(String title) { this.title = title; } - public String getDescription() { return description; } - public void setDescription(String description) { this.description = description; } - public Status getStatus() { return status; } - public void setStatus(Status status) { this.status = status; } + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } @Override public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Task)) return false; + if (this == o) { + return true; + } + if (!(o instanceof Task)) { + return false; + } Task task = (Task) o; - return id == task.id && - Objects.equals(title, task.title) && - Objects.equals(description, task.description) && - status == task.status; + return id == task.id + && Objects.equals(title, task.title) + && Objects.equals(description, task.description) + && status == task.status; } @Override @@ -42,11 +68,11 @@ public int hashCode() { @Override public String toString() { - return "Task{" + - "id=" + id + - ", title='" + title + '\'' + - ", description='" + description + '\'' + - ", status=" + status + - '}'; - } -} \ No newline at end of file + return "Task{" + + "id=" + id + + ", title='" + title + '\'' + + ", description='" + description + '\'' + + ", status=" + status + + '}'; + } +} From 8e327e8551dade79262d40effb632014c80df7a6 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:01:25 +0300 Subject: [PATCH 03/19] Update Epic.java --- src/model/Epic.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/model/Epic.java b/src/model/Epic.java index bdbde3d..af3425e 100644 --- a/src/model/Epic.java +++ b/src/model/Epic.java @@ -36,6 +36,7 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(super.hashCode(), subtaskIds); } + @Override public String toString() { return "Epic{" + @@ -46,4 +47,4 @@ public String toString() { ", subtaskIds=" + subtaskIds + '}'; } -} \ No newline at end of file +} From c2e2d6e39758d3b6a90a1d4659bca77a3495f3c3 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:03:45 +0300 Subject: [PATCH 04/19] Update Epic.java --- src/model/Epic.java | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/model/Epic.java b/src/model/Epic.java index af3425e..9fcee0d 100644 --- a/src/model/Epic.java +++ b/src/model/Epic.java @@ -25,9 +25,15 @@ public void removeSubtask(int subtaskId) { @Override public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Epic)) return false; - if (!super.equals(o)) return false; + if (this == o) { + return true; + } + if (!(o instanceof Epic)) { + return false; + } + if (!super.equals(o)) { + return false; + } Epic epic = (Epic) o; return Objects.equals(subtaskIds, epic.subtaskIds); } @@ -36,15 +42,15 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(super.hashCode(), subtaskIds); } - + @Override public String toString() { - return "Epic{" + - "id=" + getId() + - ", title='" + getTitle() + '\'' + - ", description='" + getDescription() + '\'' + - ", status=" + getStatus() + - ", subtaskIds=" + subtaskIds + - '}'; + return "Epic{" + + "id=" + getId() + + ", title='" + getTitle() + '\'' + + ", description='" + getDescription() + '\'' + + ", status=" + getStatus() + + ", subtaskIds=" + subtaskIds + + '}'; } } From 29d068b5cd1c0ab5c66564a0360a17c2630d202f Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:10:26 +0300 Subject: [PATCH 05/19] Update InMemoryHistoryManagerTest.java --- .../manager/InMemoryHistoryManagerTest.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/tests/manager/InMemoryHistoryManagerTest.java b/src/tests/manager/InMemoryHistoryManagerTest.java index 9eb7be6..eebfe35 100644 --- a/src/tests/manager/InMemoryHistoryManagerTest.java +++ b/src/tests/manager/InMemoryHistoryManagerTest.java @@ -36,7 +36,7 @@ void addAndGetHistory() { } @Test - void addSameTaskTwice() { + void shouldRemoveDuplicates() { Task task = new Task("Task", "Desc", Status.NEW); task.setId(1); @@ -44,22 +44,23 @@ void addSameTaskTwice() { historyManager.add(task); List history = historyManager.getHistory(); - assertEquals(2, history.size()); - assertEquals(task, history.get(0)); - assertEquals(task, history.get(1)); + assertEquals(1, history.size()); } @Test - void historyLimit() { - for (int i = 1; i <= 15; i++) { - Task task = new Task("Task" + i, "Desc", Status.NEW); - task.setId(i); - historyManager.add(task); - } + void shouldRemoveNodeFromMiddle() { + Task task1 = new Task("Task1", "Desc", Status.NEW); + Task task2 = new Task("Task2", "Desc", Status.NEW); + Task task3 = new Task("Task3", "Desc", Status.NEW); + task1.setId(1); task2.setId(2); task3.setId(3); + + historyManager.add(task1); + historyManager.add(task2); + historyManager.add(task3); + historyManager.add(task2); List history = historyManager.getHistory(); - assertEquals(10, history.size()); - assertEquals(6, history.get(0).getId()); - assertEquals(15, history.get(9).getId()); + assertEquals(3, history.size()); + assertEquals(List.of(task1, task3, task2), history); } -} \ No newline at end of file +} From 575859bee0e790b325a8d54552d369b65d02d621 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:11:34 +0300 Subject: [PATCH 06/19] Update HistoryManager.java --- src/manager/HistoryManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java index 6070997..584e99d 100644 --- a/src/manager/HistoryManager.java +++ b/src/manager/HistoryManager.java @@ -4,6 +4,11 @@ import java.util.List; public interface HistoryManager { + void add(Task task); + + void remove(int id); + List getHistory(); -} \ No newline at end of file + +} From e91d3825c8bb51c46f98e54ffeca3df1dcf7d2f4 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:12:04 +0300 Subject: [PATCH 07/19] Update InMemoryHistoryManager.java --- src/manager/InMemoryHistoryManager.java | 68 +++++++++++++++++++++---- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/src/manager/InMemoryHistoryManager.java b/src/manager/InMemoryHistoryManager.java index 4d91302..3d10b69 100644 --- a/src/manager/InMemoryHistoryManager.java +++ b/src/manager/InMemoryHistoryManager.java @@ -1,25 +1,75 @@ package manager; import model.Task; -import java.util.ArrayList; -import java.util.List; +import java.util.*; + public class InMemoryHistoryManager implements HistoryManager { - private static final int MAX_HISTORY_SIZE = 10; - private final List history = new ArrayList<>(); + + protected static class Node { + Task task; + Node prev; + Node next; + + Node(Task task) { + this.task = task; + } + } + + private final Map historyMap = new HashMap<>(); + private Node head; + private Node tail; @Override public void add(Task task) { if (task == null) return; + int id = task.getId(); + remove(id); // Удаляем предыдущий просмотр + linkLast(task); + } - history.add(task); - if (history.size() > MAX_HISTORY_SIZE) { - history.remove(0); + @Override + public void remove(int id) { + Node node = historyMap.remove(id); + if (node != null) { + removeNode(node); } } @Override public List getHistory() { - return new ArrayList<>(history); + List tasks = new ArrayList<>(); + Node current = head; + while (current != null) { + tasks.add(current.task); + current = current.next; + } + return tasks; + } + + private void linkLast(Task task) { + Node node = new Node(task); + if (tail == null) { + head = node; + } else { + tail.next = node; + node.prev = tail; + } + tail = node; + historyMap.put(task.getId(), node); + } + + private void removeNode(Node node) { + if (node.prev != null) { + node.prev.next = node.next; + } else { + head = node.next; + } + + if (node.next != null) { + node.next.prev = node.prev; + } else { + tail = node.prev; + } } -} \ No newline at end of file +} From f1a44e3c5ae52261f103a2c3a46f95a278c00338 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:12:30 +0300 Subject: [PATCH 08/19] Update InMemoryTaskManager.java --- src/manager/InMemoryTaskManager.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/manager/InMemoryTaskManager.java b/src/manager/InMemoryTaskManager.java index 05b4454..f0637b2 100644 --- a/src/manager/InMemoryTaskManager.java +++ b/src/manager/InMemoryTaskManager.java @@ -99,7 +99,6 @@ public void updateEpic(Epic epic) { oldEpic.setDescription(epic.getDescription()); } - @Override public void updateSubtask(Subtask subtask) { int id = subtask.getId(); @@ -119,10 +118,10 @@ public void updateSubtask(Subtask subtask) { } } - @Override public void removeTaskById(int id) { tasks.remove(id); + historyManager.remove(id); } @Override @@ -131,7 +130,9 @@ public void removeEpicById(int id) { if (epic != null) { for (int subId : epic.getSubtaskIds()) { subtasks.remove(subId); + historyManager.remove(subId); } + historyManager.remove(id); } } @@ -144,22 +145,35 @@ public void removeSubtaskById(int id) { epic.removeSubtask(id); updateEpicStatus(epic.getId()); } + historyManager.remove(id); } } @Override public void clearTasks() { + for (int id : tasks.keySet()) { + historyManager.remove(id); + } tasks.clear(); } @Override public void clearEpics() { + for (int epicId : epics.keySet()) { + historyManager.remove(epicId); + } + for (int subtaskId : subtasks.keySet()) { + historyManager.remove(subtaskId); + } epics.clear(); subtasks.clear(); } @Override public void clearSubtasks() { + for (int subtaskId : subtasks.keySet()) { + historyManager.remove(subtaskId); + } subtasks.clear(); for (Epic epic : epics.values()) { epic.getSubtaskIds().clear(); @@ -182,7 +196,6 @@ public List getSubtasksOfEpic(int epicId) { return result; } - @Override public List getHistory() { return historyManager.getHistory(); @@ -221,4 +234,4 @@ private void updateEpicStatus(int epicId) { epic.setStatus(Status.IN_PROGRESS); } } -} \ No newline at end of file +} From 37d74a428c6e2199a71e17d2ba1af33fb28574a2 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:12:54 +0300 Subject: [PATCH 09/19] Update Main.java --- src/Main.java | 94 +++++++++++++++++---------------------------------- 1 file changed, 31 insertions(+), 63 deletions(-) diff --git a/src/Main.java b/src/Main.java index c4fd905..393296b 100644 --- a/src/Main.java +++ b/src/Main.java @@ -10,77 +10,45 @@ public class Main { public static void main(String[] args) { - TaskManager taskManager = Managers.getDefault(); - - // Создаем задачи - Task task1 = new Task("Покупки", "Купить продукты", Status.NEW); - Task task2 = new Task("Тренировка", "Сходить в зал", Status.IN_PROGRESS); - taskManager.addTask(task1); - taskManager.addTask(task2); - - // Создаем эпик с подзадачами - Epic epic1 = new Epic("Проект", "Разработка нового функционала"); - taskManager.addEpic(epic1); - - Subtask subtask1 = new Subtask("Разработка интерфейса", "Создать макет UI", Status.NEW, epic1.getId()); - Subtask subtask2 = new Subtask("Тестирование", "Проверить функционал", Status.DONE, epic1.getId()); - taskManager.addSubtask(subtask1); - taskManager.addSubtask(subtask2); - - // Просматриваем задачи для наполнения истории - System.out.println("\n=== Просмотр задач ==="); - taskManager.getTaskById(task1.getId()); - taskManager.getEpicById(epic1.getId()); - taskManager.getSubtaskById(subtask1.getId()); - taskManager.getSubtaskById(subtask2.getId()); - taskManager.getTaskById(task2.getId()); - - // Выводим все задачи и историю - printAllTasks(taskManager); - - // Создаем больше задач для демонстрации ограничения истории - System.out.println("\n=== Создаем дополнительные задачи ==="); - for (int i = 3; i <= 12; i++) { - Task task = new Task("Задача " + i, "Описание " + i, Status.NEW); - taskManager.addTask(task); - taskManager.getTaskById(task.getId()); // Просматриваем задачу - } - - // Выводим историю после превышения лимита (10 элементов) - System.out.println("\n=== История после 12 просмотров ==="); - printHistory(taskManager); - } + TaskManager manager = Managers.getDefault(); + Task task1 = new Task("Task1", "Desc", Status.NEW); + Task task2 = new Task("Task2", "Desc", Status.NEW); + manager.addTask(task1); + manager.addTask(task2); + + Epic epic1 = new Epic("Epic1", "Desc"); + Epic epic2 = new Epic("Epic2", "Desc"); + manager.addEpic(epic1); + manager.addEpic(epic2); + + Subtask subtask1 = new Subtask("Sub1", "Desc", Status.NEW, epic1.getId()); + Subtask subtask2 = new Subtask("Sub2", "Desc", Status.NEW, epic1.getId()); + manager.addSubtask(subtask1); + manager.addSubtask(subtask2); + + manager.getTaskById(task1.getId()); + manager.getEpicById(epic1.getId()); + manager.getTaskById(task1.getId()); + manager.getSubtaskById(subtask1.getId()); + printHistory(manager); - private static void printAllTasks(TaskManager manager) { - System.out.println("\n=== Все задачи ==="); - System.out.println("Задачи:"); - for (Task task : manager.getAllTasks()) { - System.out.println(task); - } - System.out.println("\nЭпики:"); - for (Epic epic : manager.getAllEpics()) { - System.out.println(epic); - for (Task subtask : manager.getSubtasksOfEpic(epic.getId())) { - System.out.println("--> " + subtask); - } - } - System.out.println("\nПодзадачи:"); - for (Task subtask : manager.getAllSubtasks()) { - System.out.println(subtask); - } - System.out.println("\nИстория просмотров:"); + manager.removeTaskById(task1.getId()); printHistory(manager); + + manager.removeEpicById(epic1.getId()); + printHistory(manager); // [] } private static void printHistory(TaskManager manager) { List history = manager.getHistory(); if (history.isEmpty()) { - System.out.println("История пуста"); + System.out.println("History is empty"); } else { - System.out.println("Последние " + history.size() + " просмотренных задач:"); - for (Task task : history) { - System.out.println(" - " + task.getTitle() + " (ID: " + task.getId() + ")"); + System.out.println("\nView history (" + history.size() + " items):"); + for (int i = 0; i < history.size(); i++) { + Task task = history.get(i); + System.out.println((i + 1) + ". " + task.getTitle() + " [ID:" + task.getId() + "]"); } } } -} \ No newline at end of file +} From d512e2a29b7aac920285a3265002706b4cf6a861 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:15:37 +0300 Subject: [PATCH 10/19] Update HistoryManager.java --- src/manager/HistoryManager.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java index 584e99d..a817f8a 100644 --- a/src/manager/HistoryManager.java +++ b/src/manager/HistoryManager.java @@ -4,11 +4,7 @@ import java.util.List; public interface HistoryManager { - void add(Task task); - void remove(int id); - - List getHistory(); - + List getHistory(); } From 648571e5b95e6378bc3f116c36ebd9f3240dff44 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:16:41 +0300 Subject: [PATCH 11/19] Update HistoryManager.java --- src/manager/HistoryManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java index a817f8a..9005f79 100644 --- a/src/manager/HistoryManager.java +++ b/src/manager/HistoryManager.java @@ -4,7 +4,10 @@ import java.util.List; public interface HistoryManager { + void add(Task task); + void remove(int id); + List getHistory(); } From 61742291ff7bc65469149fa85e4f7d16ba98449a Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:18:18 +0300 Subject: [PATCH 12/19] Update HistoryManager.java --- src/manager/HistoryManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java index 9005f79..61e9dfc 100644 --- a/src/manager/HistoryManager.java +++ b/src/manager/HistoryManager.java @@ -4,10 +4,10 @@ import java.util.List; public interface HistoryManager { - + void add(Task task); - + void remove(int id); - - List getHistory(); + + List getHistory(); } From 3b9fbe30c154d52a706a8a797c9d929d4906894e Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:20:38 +0300 Subject: [PATCH 13/19] Update TaskManager.java --- src/manager/TaskManager.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/manager/TaskManager.java b/src/manager/TaskManager.java index 9a4c891..b0fa470 100644 --- a/src/manager/TaskManager.java +++ b/src/manager/TaskManager.java @@ -9,30 +9,42 @@ public interface TaskManager { void addTask(Task task); + void addEpic(Epic epic); + void addSubtask(Subtask subtask); List getAllTasks(); + List getAllEpics(); + List getAllSubtasks(); Task getTaskById(int id); + Epic getEpicById(int id); + Subtask getSubtaskById(int id); void updateTask(Task task); + void updateEpic(Epic epic); + void updateSubtask(Subtask subtask); void removeTaskById(int id); + void removeEpicById(int id); + void removeSubtaskById(int id); void clearTasks(); + void clearEpics(); + void clearSubtasks(); List getSubtasksOfEpic(int epicId); List getHistory(); -} \ No newline at end of file +} From c3834cb4a1ee6bd52d0e9af386db0df541c5eb03 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:23:44 +0300 Subject: [PATCH 14/19] Update InMemoryHistoryManagerTest.java --- .../manager/InMemoryHistoryManagerTest.java | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/tests/manager/InMemoryHistoryManagerTest.java b/src/tests/manager/InMemoryHistoryManagerTest.java index eebfe35..d0d9985 100644 --- a/src/tests/manager/InMemoryHistoryManagerTest.java +++ b/src/tests/manager/InMemoryHistoryManagerTest.java @@ -36,7 +36,7 @@ void addAndGetHistory() { } @Test - void shouldRemoveDuplicates() { + void addSameTaskTwice() { Task task = new Task("Task", "Desc", Status.NEW); task.setId(1); @@ -44,23 +44,22 @@ void shouldRemoveDuplicates() { historyManager.add(task); List history = historyManager.getHistory(); - assertEquals(1, history.size()); + assertEquals(2, history.size()); + assertEquals(task, history.get(0)); + assertEquals(task, history.get(1)); } @Test - void shouldRemoveNodeFromMiddle() { - Task task1 = new Task("Task1", "Desc", Status.NEW); - Task task2 = new Task("Task2", "Desc", Status.NEW); - Task task3 = new Task("Task3", "Desc", Status.NEW); - task1.setId(1); task2.setId(2); task3.setId(3); - - historyManager.add(task1); - historyManager.add(task2); - historyManager.add(task3); - historyManager.add(task2); + void historyLimit() { + for (int i = 1; i <= 15; i++) { + Task task = new Task("Task" + i, "Desc", Status.NEW); + task.setId(i); + historyManager.add(task); + } List history = historyManager.getHistory(); - assertEquals(3, history.size()); - assertEquals(List.of(task1, task3, task2), history); + assertEquals(10, history.size()); + assertEquals(6, history.get(0).getId()); + assertEquals(15, history.get(9).getId()); } } From 1fa13a4af9083f2513b86abba32f9ee0f5334c92 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:26:03 +0300 Subject: [PATCH 15/19] Update Main.java --- src/Main.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Main.java b/src/Main.java index 393296b..d21ce67 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,4 +1,3 @@ -import manager.InMemoryTaskManager; import manager.Managers; import manager.TaskManager; import model.Epic; From b5a9920769c39101de308c274d09ac2b1631b4d0 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:44:33 +0300 Subject: [PATCH 16/19] Add files via upload --- .../manager/InMemoryHistoryManagerTest.java | 66 +++++++++++++ src/test/manager/InMemoryTaskManagerTest.java | 95 +++++++++++++++++++ src/test/model/EpicTest.java | 55 +++++++++++ src/test/model/TaskTest.java | 95 +++++++++++++++++++ 4 files changed, 311 insertions(+) create mode 100644 src/test/manager/InMemoryHistoryManagerTest.java create mode 100644 src/test/manager/InMemoryTaskManagerTest.java create mode 100644 src/test/model/EpicTest.java create mode 100644 src/test/model/TaskTest.java diff --git a/src/test/manager/InMemoryHistoryManagerTest.java b/src/test/manager/InMemoryHistoryManagerTest.java new file mode 100644 index 0000000..92122b9 --- /dev/null +++ b/src/test/manager/InMemoryHistoryManagerTest.java @@ -0,0 +1,66 @@ +package test.manager; + +import manager.HistoryManager; +import manager.InMemoryHistoryManager; +import model.Task; +import model.Status; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class InMemoryHistoryManagerTest { + private HistoryManager historyManager; + + @BeforeEach + void setUp() { + historyManager = new InMemoryHistoryManager(); + } + + @Test + void addAndGetHistory() { + Task task1 = new Task("Task1", "Desc", Status.NEW); + task1.setId(1); + Task task2 = new Task("Task2", "Desc", Status.IN_PROGRESS); + task2.setId(2); + + historyManager.add(task1); + historyManager.add(task2); + + List history = historyManager.getHistory(); + assertEquals(2, history.size()); + assertEquals(task1, history.get(0)); + assertEquals(task2, history.get(1)); + } + + @Test + void shouldRemoveDuplicates() { + Task task = new Task("Task", "Desc", Status.NEW); + task.setId(1); + + historyManager.add(task); + historyManager.add(task); + + List history = historyManager.getHistory(); + assertEquals(1, history.size()); + } + + @Test + void shouldRemoveNodeFromMiddle() { + Task task1 = new Task("Task1", "Desc", Status.NEW); + Task task2 = new Task("Task2", "Desc", Status.NEW); + Task task3 = new Task("Task3", "Desc", Status.NEW); + task1.setId(1); task2.setId(2); task3.setId(3); + + historyManager.add(task1); + historyManager.add(task2); + historyManager.add(task3); + historyManager.add(task2); // Дубликат + + List history = historyManager.getHistory(); + assertEquals(3, history.size()); + assertEquals(List.of(task1, task3, task2), history); + } +} \ No newline at end of file diff --git a/src/test/manager/InMemoryTaskManagerTest.java b/src/test/manager/InMemoryTaskManagerTest.java new file mode 100644 index 0000000..196ce8a --- /dev/null +++ b/src/test/manager/InMemoryTaskManagerTest.java @@ -0,0 +1,95 @@ +package test.manager; + +import manager.InMemoryTaskManager; +import model.Epic; +import model.Status; +import model.Subtask; +import model.Task; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class InMemoryTaskManagerTest { + + private InMemoryTaskManager manager; + + @BeforeEach + public void setUp() { + manager = new InMemoryTaskManager(); + } + + @Test + public void testAddAndGetTask() { + Task task = new Task("Task 1", "Description task 1", Status.NEW); + manager.addTask(task); + + List tasks = manager.getAllTasks(); + assertEquals(1, tasks.size()); + assertEquals(task.getTitle(), tasks.get(0).getTitle()); + } + + @Test + public void testAddAndGetEpic() { + Epic epic = new Epic("Epic 1", "Description epic 1"); + manager.addEpic(epic); + + List epics = manager.getAllEpics(); + assertEquals(1, epics.size()); + assertEquals(epic.getTitle(), epics.get(0).getTitle()); + } + + @Test + public void testAddAndGetSubtask() { + Epic epic = new Epic("Epic 1", "Description epic 1"); + manager.addEpic(epic); + + Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); + manager.addSubtask(subtask); + + List subtasks = manager.getAllSubtasks(); + assertEquals(1, subtasks.size()); + assertEquals(subtask.getTitle(), subtasks.get(0).getTitle()); + + Epic updatedEpic = manager.getEpicById(epic.getId()); + assertTrue(updatedEpic.getSubtaskIds().contains(subtask.getId())); + } + + @Test + public void testRemoveTask() { + Task task = new Task("Task 1", "Description task 1", Status.NEW); + manager.addTask(task); + + manager.removeTaskById(task.getId()); + assertTrue(manager.getAllTasks().isEmpty()); + } + + @Test + public void testRemoveEpicAlsoRemovesSubtasks() { + Epic epic = new Epic("Epic 1", "Description epic 1"); + manager.addEpic(epic); + + Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); + manager.addSubtask(subtask); + + manager.removeEpicById(epic.getId()); + + assertTrue(manager.getAllEpics().isEmpty()); + + assertTrue(manager.getAllSubtasks().isEmpty()); + } + + @Test + public void testUpdateTask() { + Task task = new Task("Task 1", "Description task 1", Status.NEW); + manager.addTask(task); + + task.setStatus(Status.DONE); + manager.updateTask(task); + + Task updated = manager.getTaskById(task.getId()); + assertEquals(Status.DONE, updated.getStatus()); + } +} \ No newline at end of file diff --git a/src/test/model/EpicTest.java b/src/test/model/EpicTest.java new file mode 100644 index 0000000..0455b5a --- /dev/null +++ b/src/test/model/EpicTest.java @@ -0,0 +1,55 @@ +package test.model; + +import model.Epic; +import model.Status; +import model.Subtask; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class EpicTest { + private Epic epic; + private Subtask subtask1; + private Subtask subtask2; + + @BeforeEach + void setUp() { + epic = new Epic("Epic Title", "Epic Description"); + + subtask1 = new Subtask("Subtask 1", "Description 1", Status.NEW, epic.getId()); + subtask2 = new Subtask("Subtask 2", "Description 2", Status.NEW, epic.getId()); + + subtask1.setId(1); + subtask2.setId(2); + } + + @Test + void epicIsCreatedWithEmptySubtaskList() { + assertNotNull(epic.getSubtaskIds()); + assertTrue(epic.getSubtaskIds().isEmpty()); + } + + @Test + void addSubtask_addsIdToList() { + epic.addSubtask(subtask1); + epic.addSubtask(subtask2); + + assertEquals(2, epic.getSubtaskIds().size()); + assertTrue(epic.getSubtaskIds().contains(subtask1.getId())); + assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); + } + + @Test + void removeSubtask_removesCorrectId() { + epic.addSubtask(subtask1); + epic.addSubtask(subtask2); + + epic.removeSubtask(subtask1.getId()); + + assertEquals(1, epic.getSubtaskIds().size()); + assertFalse(epic.getSubtaskIds().contains(subtask1.getId())); + assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); + } + +} \ No newline at end of file diff --git a/src/test/model/TaskTest.java b/src/test/model/TaskTest.java new file mode 100644 index 0000000..d6302bd --- /dev/null +++ b/src/test/model/TaskTest.java @@ -0,0 +1,95 @@ +package test.model; + +import model.Status; +import model.Task; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class TaskTest { + private Task task; + + @BeforeEach + void setUp() { + task = new Task("Test Task", "Test Description", Status.NEW); + task.setId(1); + } + + @Test + void testConstructorAndGetters() { + assertEquals(1, task.getId()); + assertEquals("Test Task", task.getTitle()); + assertEquals("Test Description", task.getDescription()); + assertEquals(Status.NEW, task.getStatus()); + } + + @Test + void testSetters() { + task.setId(42); + task.setTitle("Updated Title"); + task.setDescription("Updated Description"); + task.setStatus(Status.IN_PROGRESS); + + assertEquals(42, task.getId()); + assertEquals("Updated Title", task.getTitle()); + assertEquals("Updated Description", task.getDescription()); + assertEquals(Status.IN_PROGRESS, task.getStatus()); + } + + @Test + void testEquals_sameValues_shouldBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.NEW); + other.setId(1); + + assertEquals(task, other); + } + + @Test + void testEquals_differentId_shouldNotBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.NEW); + other.setId(99); + + assertNotEquals(task, other); + } + + @Test + void testEquals_differentTitle_shouldNotBeEqual() { + Task other = new Task("Different Title", "Test Description", Status.NEW); + other.setId(1); + + assertNotEquals(task, other); + } + + @Test + void testEquals_differentDescription_shouldNotBeEqual() { + Task other = new Task("Test Task", "Other Description", Status.NEW); + other.setId(1); + + assertNotEquals(task, other); + } + + @Test + void testEquals_differentStatus_shouldNotBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.DONE); + other.setId(1); + + assertNotEquals(task, other); + } + + @Test + void testHashCode_sameValues_shouldBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.NEW); + other.setId(1); + + assertEquals(task.hashCode(), other.hashCode()); + } + + @Test + void testHashCode_differentValues_shouldNotBeEqual() { + Task other = new Task("Other", "Other", Status.DONE); + other.setId(999); + + assertNotEquals(task.hashCode(), other.hashCode()); + } +} \ No newline at end of file From fe03b7333b04c184636bb16f68c2c3e297a42b71 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:48:34 +0300 Subject: [PATCH 17/19] Delete src/tests directory --- .../manager/InMemoryHistoryManagerTest.java | 65 ------------- .../manager/InMemoryTaskManagerTest.java | 95 ------------------- src/tests/model/EpicTest.java | 55 ----------- src/tests/model/SubtaskTest.java | 19 ---- src/tests/model/TaskTest.java | 95 ------------------- 5 files changed, 329 deletions(-) delete mode 100644 src/tests/manager/InMemoryHistoryManagerTest.java delete mode 100644 src/tests/manager/InMemoryTaskManagerTest.java delete mode 100644 src/tests/model/EpicTest.java delete mode 100644 src/tests/model/SubtaskTest.java delete mode 100644 src/tests/model/TaskTest.java diff --git a/src/tests/manager/InMemoryHistoryManagerTest.java b/src/tests/manager/InMemoryHistoryManagerTest.java deleted file mode 100644 index d0d9985..0000000 --- a/src/tests/manager/InMemoryHistoryManagerTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package tests.manager; - -import manager.HistoryManager; -import manager.InMemoryHistoryManager; -import model.Task; -import model.Status; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; - -class InMemoryHistoryManagerTest { - private HistoryManager historyManager; - - @BeforeEach - void setUp() { - historyManager = new InMemoryHistoryManager(); - } - - @Test - void addAndGetHistory() { - Task task1 = new Task("Task1", "Desc", Status.NEW); - task1.setId(1); - Task task2 = new Task("Task2", "Desc", Status.IN_PROGRESS); - task2.setId(2); - - historyManager.add(task1); - historyManager.add(task2); - - List history = historyManager.getHistory(); - assertEquals(2, history.size()); - assertEquals(task1, history.get(0)); - assertEquals(task2, history.get(1)); - } - - @Test - void addSameTaskTwice() { - Task task = new Task("Task", "Desc", Status.NEW); - task.setId(1); - - historyManager.add(task); - historyManager.add(task); - - List history = historyManager.getHistory(); - assertEquals(2, history.size()); - assertEquals(task, history.get(0)); - assertEquals(task, history.get(1)); - } - - @Test - void historyLimit() { - for (int i = 1; i <= 15; i++) { - Task task = new Task("Task" + i, "Desc", Status.NEW); - task.setId(i); - historyManager.add(task); - } - - List history = historyManager.getHistory(); - assertEquals(10, history.size()); - assertEquals(6, history.get(0).getId()); - assertEquals(15, history.get(9).getId()); - } -} diff --git a/src/tests/manager/InMemoryTaskManagerTest.java b/src/tests/manager/InMemoryTaskManagerTest.java deleted file mode 100644 index 7792d5d..0000000 --- a/src/tests/manager/InMemoryTaskManagerTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package tests.manager; - -import manager.InMemoryTaskManager; -import model.Epic; -import model.Status; -import model.Subtask; -import model.Task; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; - -public class InMemoryTaskManagerTest { - - private InMemoryTaskManager manager; - - @BeforeEach - public void setUp() { - manager = new InMemoryTaskManager(); - } - - @Test - public void testAddAndGetTask() { - Task task = new Task("Task 1", "Description task 1", Status.NEW); - manager.addTask(task); - - List tasks = manager.getAllTasks(); - assertEquals(1, tasks.size()); - assertEquals(task.getTitle(), tasks.get(0).getTitle()); - } - - @Test - public void testAddAndGetEpic() { - Epic epic = new Epic("Epic 1", "Description epic 1"); - manager.addEpic(epic); - - List epics = manager.getAllEpics(); - assertEquals(1, epics.size()); - assertEquals(epic.getTitle(), epics.get(0).getTitle()); - } - - @Test - public void testAddAndGetSubtask() { - Epic epic = new Epic("Epic 1", "Description epic 1"); - manager.addEpic(epic); - - Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); - manager.addSubtask(subtask); - - List subtasks = manager.getAllSubtasks(); - assertEquals(1, subtasks.size()); - assertEquals(subtask.getTitle(), subtasks.get(0).getTitle()); - - Epic updatedEpic = manager.getEpicById(epic.getId()); - assertTrue(updatedEpic.getSubtaskIds().contains(subtask.getId())); - } - - @Test - public void testRemoveTask() { - Task task = new Task("Task 1", "Description task 1", Status.NEW); - manager.addTask(task); - - manager.removeTaskById(task.getId()); - assertTrue(manager.getAllTasks().isEmpty()); - } - - @Test - public void testRemoveEpicAlsoRemovesSubtasks() { - Epic epic = new Epic("Epic 1", "Description epic 1"); - manager.addEpic(epic); - - Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); - manager.addSubtask(subtask); - - manager.removeEpicById(epic.getId()); - - assertTrue(manager.getAllEpics().isEmpty()); - - assertTrue(manager.getAllSubtasks().isEmpty()); - } - - @Test - public void testUpdateTask() { - Task task = new Task("Task 1", "Description task 1", Status.NEW); - manager.addTask(task); - - task.setStatus(Status.DONE); - manager.updateTask(task); - - Task updated = manager.getTaskById(task.getId()); - assertEquals(Status.DONE, updated.getStatus()); - } -} \ No newline at end of file diff --git a/src/tests/model/EpicTest.java b/src/tests/model/EpicTest.java deleted file mode 100644 index 9f24042..0000000 --- a/src/tests/model/EpicTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package tests.model; - -import model.Epic; -import model.Status; -import model.Subtask; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class EpicTest { - private Epic epic; - private Subtask subtask1; - private Subtask subtask2; - - @BeforeEach - void setUp() { - epic = new Epic("Epic Title", "Epic Description"); - - subtask1 = new Subtask("Subtask 1", "Description 1", Status.NEW, epic.getId()); - subtask2 = new Subtask("Subtask 2", "Description 2", Status.NEW, epic.getId()); - - subtask1.setId(1); - subtask2.setId(2); - } - - @Test - void epicIsCreatedWithEmptySubtaskList() { - assertNotNull(epic.getSubtaskIds()); - assertTrue(epic.getSubtaskIds().isEmpty()); - } - - @Test - void addSubtask_addsIdToList() { - epic.addSubtask(subtask1); - epic.addSubtask(subtask2); - - assertEquals(2, epic.getSubtaskIds().size()); - assertTrue(epic.getSubtaskIds().contains(subtask1.getId())); - assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); - } - - @Test - void removeSubtask_removesCorrectId() { - epic.addSubtask(subtask1); - epic.addSubtask(subtask2); - - epic.removeSubtask(subtask1.getId()); - - assertEquals(1, epic.getSubtaskIds().size()); - assertFalse(epic.getSubtaskIds().contains(subtask1.getId())); - assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); - } - -} \ No newline at end of file diff --git a/src/tests/model/SubtaskTest.java b/src/tests/model/SubtaskTest.java deleted file mode 100644 index 68fc489..0000000 --- a/src/tests/model/SubtaskTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package tests.model; - -import model.Status; -import model.Subtask; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - -public class SubtaskTest { - - @Test - public void testSubtaskCreation() { - Subtask subtask = new Subtask("Test", "Description", Status.NEW, 1); - assertEquals("Test", subtask.getTitle()); - assertEquals("Description", subtask.getDescription()); - assertEquals(Status.NEW, subtask.getStatus()); - assertEquals(1, subtask.getEpicId()); - } - -} \ No newline at end of file diff --git a/src/tests/model/TaskTest.java b/src/tests/model/TaskTest.java deleted file mode 100644 index 1d39ff2..0000000 --- a/src/tests/model/TaskTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package tests.model; - -import model.Status; -import model.Task; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class TaskTest { - private Task task; - - @BeforeEach - void setUp() { - task = new Task("Test Task", "Test Description", Status.NEW); - task.setId(1); - } - - @Test - void testConstructorAndGetters() { - assertEquals(1, task.getId()); - assertEquals("Test Task", task.getTitle()); - assertEquals("Test Description", task.getDescription()); - assertEquals(Status.NEW, task.getStatus()); - } - - @Test - void testSetters() { - task.setId(42); - task.setTitle("Updated Title"); - task.setDescription("Updated Description"); - task.setStatus(Status.IN_PROGRESS); - - assertEquals(42, task.getId()); - assertEquals("Updated Title", task.getTitle()); - assertEquals("Updated Description", task.getDescription()); - assertEquals(Status.IN_PROGRESS, task.getStatus()); - } - - @Test - void testEquals_sameValues_shouldBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.NEW); - other.setId(1); - - assertEquals(task, other); - } - - @Test - void testEquals_differentId_shouldNotBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.NEW); - other.setId(99); - - assertNotEquals(task, other); - } - - @Test - void testEquals_differentTitle_shouldNotBeEqual() { - Task other = new Task("Different Title", "Test Description", Status.NEW); - other.setId(1); - - assertNotEquals(task, other); - } - - @Test - void testEquals_differentDescription_shouldNotBeEqual() { - Task other = new Task("Test Task", "Other Description", Status.NEW); - other.setId(1); - - assertNotEquals(task, other); - } - - @Test - void testEquals_differentStatus_shouldNotBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.DONE); - other.setId(1); - - assertNotEquals(task, other); - } - - @Test - void testHashCode_sameValues_shouldBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.NEW); - other.setId(1); - - assertEquals(task.hashCode(), other.hashCode()); - } - - @Test - void testHashCode_differentValues_shouldNotBeEqual() { - Task other = new Task("Other", "Other", Status.DONE); - other.setId(999); - - assertNotEquals(task.hashCode(), other.hashCode()); - } -} \ No newline at end of file From 0bbd648b13e1c25140d75ff3de482702ed1a1206 Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Sun, 29 Jun 2025 20:54:05 +0300 Subject: [PATCH 18/19] Add files via upload --- test/manager/InMemoryHistoryManagerTest.java | 66 ++++++++++++++ test/manager/InMemoryTaskManagerTest.java | 95 ++++++++++++++++++++ test/model/EpicTest.java | 55 ++++++++++++ test/model/TaskTest.java | 95 ++++++++++++++++++++ 4 files changed, 311 insertions(+) create mode 100644 test/manager/InMemoryHistoryManagerTest.java create mode 100644 test/manager/InMemoryTaskManagerTest.java create mode 100644 test/model/EpicTest.java create mode 100644 test/model/TaskTest.java diff --git a/test/manager/InMemoryHistoryManagerTest.java b/test/manager/InMemoryHistoryManagerTest.java new file mode 100644 index 0000000..92122b9 --- /dev/null +++ b/test/manager/InMemoryHistoryManagerTest.java @@ -0,0 +1,66 @@ +package test.manager; + +import manager.HistoryManager; +import manager.InMemoryHistoryManager; +import model.Task; +import model.Status; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class InMemoryHistoryManagerTest { + private HistoryManager historyManager; + + @BeforeEach + void setUp() { + historyManager = new InMemoryHistoryManager(); + } + + @Test + void addAndGetHistory() { + Task task1 = new Task("Task1", "Desc", Status.NEW); + task1.setId(1); + Task task2 = new Task("Task2", "Desc", Status.IN_PROGRESS); + task2.setId(2); + + historyManager.add(task1); + historyManager.add(task2); + + List history = historyManager.getHistory(); + assertEquals(2, history.size()); + assertEquals(task1, history.get(0)); + assertEquals(task2, history.get(1)); + } + + @Test + void shouldRemoveDuplicates() { + Task task = new Task("Task", "Desc", Status.NEW); + task.setId(1); + + historyManager.add(task); + historyManager.add(task); + + List history = historyManager.getHistory(); + assertEquals(1, history.size()); + } + + @Test + void shouldRemoveNodeFromMiddle() { + Task task1 = new Task("Task1", "Desc", Status.NEW); + Task task2 = new Task("Task2", "Desc", Status.NEW); + Task task3 = new Task("Task3", "Desc", Status.NEW); + task1.setId(1); task2.setId(2); task3.setId(3); + + historyManager.add(task1); + historyManager.add(task2); + historyManager.add(task3); + historyManager.add(task2); // Дубликат + + List history = historyManager.getHistory(); + assertEquals(3, history.size()); + assertEquals(List.of(task1, task3, task2), history); + } +} \ No newline at end of file diff --git a/test/manager/InMemoryTaskManagerTest.java b/test/manager/InMemoryTaskManagerTest.java new file mode 100644 index 0000000..196ce8a --- /dev/null +++ b/test/manager/InMemoryTaskManagerTest.java @@ -0,0 +1,95 @@ +package test.manager; + +import manager.InMemoryTaskManager; +import model.Epic; +import model.Status; +import model.Subtask; +import model.Task; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class InMemoryTaskManagerTest { + + private InMemoryTaskManager manager; + + @BeforeEach + public void setUp() { + manager = new InMemoryTaskManager(); + } + + @Test + public void testAddAndGetTask() { + Task task = new Task("Task 1", "Description task 1", Status.NEW); + manager.addTask(task); + + List tasks = manager.getAllTasks(); + assertEquals(1, tasks.size()); + assertEquals(task.getTitle(), tasks.get(0).getTitle()); + } + + @Test + public void testAddAndGetEpic() { + Epic epic = new Epic("Epic 1", "Description epic 1"); + manager.addEpic(epic); + + List epics = manager.getAllEpics(); + assertEquals(1, epics.size()); + assertEquals(epic.getTitle(), epics.get(0).getTitle()); + } + + @Test + public void testAddAndGetSubtask() { + Epic epic = new Epic("Epic 1", "Description epic 1"); + manager.addEpic(epic); + + Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); + manager.addSubtask(subtask); + + List subtasks = manager.getAllSubtasks(); + assertEquals(1, subtasks.size()); + assertEquals(subtask.getTitle(), subtasks.get(0).getTitle()); + + Epic updatedEpic = manager.getEpicById(epic.getId()); + assertTrue(updatedEpic.getSubtaskIds().contains(subtask.getId())); + } + + @Test + public void testRemoveTask() { + Task task = new Task("Task 1", "Description task 1", Status.NEW); + manager.addTask(task); + + manager.removeTaskById(task.getId()); + assertTrue(manager.getAllTasks().isEmpty()); + } + + @Test + public void testRemoveEpicAlsoRemovesSubtasks() { + Epic epic = new Epic("Epic 1", "Description epic 1"); + manager.addEpic(epic); + + Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); + manager.addSubtask(subtask); + + manager.removeEpicById(epic.getId()); + + assertTrue(manager.getAllEpics().isEmpty()); + + assertTrue(manager.getAllSubtasks().isEmpty()); + } + + @Test + public void testUpdateTask() { + Task task = new Task("Task 1", "Description task 1", Status.NEW); + manager.addTask(task); + + task.setStatus(Status.DONE); + manager.updateTask(task); + + Task updated = manager.getTaskById(task.getId()); + assertEquals(Status.DONE, updated.getStatus()); + } +} \ No newline at end of file diff --git a/test/model/EpicTest.java b/test/model/EpicTest.java new file mode 100644 index 0000000..0455b5a --- /dev/null +++ b/test/model/EpicTest.java @@ -0,0 +1,55 @@ +package test.model; + +import model.Epic; +import model.Status; +import model.Subtask; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class EpicTest { + private Epic epic; + private Subtask subtask1; + private Subtask subtask2; + + @BeforeEach + void setUp() { + epic = new Epic("Epic Title", "Epic Description"); + + subtask1 = new Subtask("Subtask 1", "Description 1", Status.NEW, epic.getId()); + subtask2 = new Subtask("Subtask 2", "Description 2", Status.NEW, epic.getId()); + + subtask1.setId(1); + subtask2.setId(2); + } + + @Test + void epicIsCreatedWithEmptySubtaskList() { + assertNotNull(epic.getSubtaskIds()); + assertTrue(epic.getSubtaskIds().isEmpty()); + } + + @Test + void addSubtask_addsIdToList() { + epic.addSubtask(subtask1); + epic.addSubtask(subtask2); + + assertEquals(2, epic.getSubtaskIds().size()); + assertTrue(epic.getSubtaskIds().contains(subtask1.getId())); + assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); + } + + @Test + void removeSubtask_removesCorrectId() { + epic.addSubtask(subtask1); + epic.addSubtask(subtask2); + + epic.removeSubtask(subtask1.getId()); + + assertEquals(1, epic.getSubtaskIds().size()); + assertFalse(epic.getSubtaskIds().contains(subtask1.getId())); + assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); + } + +} \ No newline at end of file diff --git a/test/model/TaskTest.java b/test/model/TaskTest.java new file mode 100644 index 0000000..d6302bd --- /dev/null +++ b/test/model/TaskTest.java @@ -0,0 +1,95 @@ +package test.model; + +import model.Status; +import model.Task; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class TaskTest { + private Task task; + + @BeforeEach + void setUp() { + task = new Task("Test Task", "Test Description", Status.NEW); + task.setId(1); + } + + @Test + void testConstructorAndGetters() { + assertEquals(1, task.getId()); + assertEquals("Test Task", task.getTitle()); + assertEquals("Test Description", task.getDescription()); + assertEquals(Status.NEW, task.getStatus()); + } + + @Test + void testSetters() { + task.setId(42); + task.setTitle("Updated Title"); + task.setDescription("Updated Description"); + task.setStatus(Status.IN_PROGRESS); + + assertEquals(42, task.getId()); + assertEquals("Updated Title", task.getTitle()); + assertEquals("Updated Description", task.getDescription()); + assertEquals(Status.IN_PROGRESS, task.getStatus()); + } + + @Test + void testEquals_sameValues_shouldBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.NEW); + other.setId(1); + + assertEquals(task, other); + } + + @Test + void testEquals_differentId_shouldNotBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.NEW); + other.setId(99); + + assertNotEquals(task, other); + } + + @Test + void testEquals_differentTitle_shouldNotBeEqual() { + Task other = new Task("Different Title", "Test Description", Status.NEW); + other.setId(1); + + assertNotEquals(task, other); + } + + @Test + void testEquals_differentDescription_shouldNotBeEqual() { + Task other = new Task("Test Task", "Other Description", Status.NEW); + other.setId(1); + + assertNotEquals(task, other); + } + + @Test + void testEquals_differentStatus_shouldNotBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.DONE); + other.setId(1); + + assertNotEquals(task, other); + } + + @Test + void testHashCode_sameValues_shouldBeEqual() { + Task other = new Task("Test Task", "Test Description", Status.NEW); + other.setId(1); + + assertEquals(task.hashCode(), other.hashCode()); + } + + @Test + void testHashCode_differentValues_shouldNotBeEqual() { + Task other = new Task("Other", "Other", Status.DONE); + other.setId(999); + + assertNotEquals(task.hashCode(), other.hashCode()); + } +} \ No newline at end of file From b2a76cdaa81206c37f13a84444d4d6f50c2a173a Mon Sep 17 00:00:00 2001 From: n20va <99407852+n20va@users.noreply.github.com> Date: Mon, 30 Jun 2025 10:16:20 +0300 Subject: [PATCH 19/19] Delete src/test directory --- .../manager/InMemoryHistoryManagerTest.java | 66 ------------- src/test/manager/InMemoryTaskManagerTest.java | 95 ------------------- src/test/model/EpicTest.java | 55 ----------- src/test/model/TaskTest.java | 95 ------------------- 4 files changed, 311 deletions(-) delete mode 100644 src/test/manager/InMemoryHistoryManagerTest.java delete mode 100644 src/test/manager/InMemoryTaskManagerTest.java delete mode 100644 src/test/model/EpicTest.java delete mode 100644 src/test/model/TaskTest.java diff --git a/src/test/manager/InMemoryHistoryManagerTest.java b/src/test/manager/InMemoryHistoryManagerTest.java deleted file mode 100644 index 92122b9..0000000 --- a/src/test/manager/InMemoryHistoryManagerTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package test.manager; - -import manager.HistoryManager; -import manager.InMemoryHistoryManager; -import model.Task; -import model.Status; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; - -class InMemoryHistoryManagerTest { - private HistoryManager historyManager; - - @BeforeEach - void setUp() { - historyManager = new InMemoryHistoryManager(); - } - - @Test - void addAndGetHistory() { - Task task1 = new Task("Task1", "Desc", Status.NEW); - task1.setId(1); - Task task2 = new Task("Task2", "Desc", Status.IN_PROGRESS); - task2.setId(2); - - historyManager.add(task1); - historyManager.add(task2); - - List history = historyManager.getHistory(); - assertEquals(2, history.size()); - assertEquals(task1, history.get(0)); - assertEquals(task2, history.get(1)); - } - - @Test - void shouldRemoveDuplicates() { - Task task = new Task("Task", "Desc", Status.NEW); - task.setId(1); - - historyManager.add(task); - historyManager.add(task); - - List history = historyManager.getHistory(); - assertEquals(1, history.size()); - } - - @Test - void shouldRemoveNodeFromMiddle() { - Task task1 = new Task("Task1", "Desc", Status.NEW); - Task task2 = new Task("Task2", "Desc", Status.NEW); - Task task3 = new Task("Task3", "Desc", Status.NEW); - task1.setId(1); task2.setId(2); task3.setId(3); - - historyManager.add(task1); - historyManager.add(task2); - historyManager.add(task3); - historyManager.add(task2); // Дубликат - - List history = historyManager.getHistory(); - assertEquals(3, history.size()); - assertEquals(List.of(task1, task3, task2), history); - } -} \ No newline at end of file diff --git a/src/test/manager/InMemoryTaskManagerTest.java b/src/test/manager/InMemoryTaskManagerTest.java deleted file mode 100644 index 196ce8a..0000000 --- a/src/test/manager/InMemoryTaskManagerTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package test.manager; - -import manager.InMemoryTaskManager; -import model.Epic; -import model.Status; -import model.Subtask; -import model.Task; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; - -public class InMemoryTaskManagerTest { - - private InMemoryTaskManager manager; - - @BeforeEach - public void setUp() { - manager = new InMemoryTaskManager(); - } - - @Test - public void testAddAndGetTask() { - Task task = new Task("Task 1", "Description task 1", Status.NEW); - manager.addTask(task); - - List tasks = manager.getAllTasks(); - assertEquals(1, tasks.size()); - assertEquals(task.getTitle(), tasks.get(0).getTitle()); - } - - @Test - public void testAddAndGetEpic() { - Epic epic = new Epic("Epic 1", "Description epic 1"); - manager.addEpic(epic); - - List epics = manager.getAllEpics(); - assertEquals(1, epics.size()); - assertEquals(epic.getTitle(), epics.get(0).getTitle()); - } - - @Test - public void testAddAndGetSubtask() { - Epic epic = new Epic("Epic 1", "Description epic 1"); - manager.addEpic(epic); - - Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); - manager.addSubtask(subtask); - - List subtasks = manager.getAllSubtasks(); - assertEquals(1, subtasks.size()); - assertEquals(subtask.getTitle(), subtasks.get(0).getTitle()); - - Epic updatedEpic = manager.getEpicById(epic.getId()); - assertTrue(updatedEpic.getSubtaskIds().contains(subtask.getId())); - } - - @Test - public void testRemoveTask() { - Task task = new Task("Task 1", "Description task 1", Status.NEW); - manager.addTask(task); - - manager.removeTaskById(task.getId()); - assertTrue(manager.getAllTasks().isEmpty()); - } - - @Test - public void testRemoveEpicAlsoRemovesSubtasks() { - Epic epic = new Epic("Epic 1", "Description epic 1"); - manager.addEpic(epic); - - Subtask subtask = new Subtask("Subtask 1", "Description subtask 1", Status.NEW, epic.getId()); - manager.addSubtask(subtask); - - manager.removeEpicById(epic.getId()); - - assertTrue(manager.getAllEpics().isEmpty()); - - assertTrue(manager.getAllSubtasks().isEmpty()); - } - - @Test - public void testUpdateTask() { - Task task = new Task("Task 1", "Description task 1", Status.NEW); - manager.addTask(task); - - task.setStatus(Status.DONE); - manager.updateTask(task); - - Task updated = manager.getTaskById(task.getId()); - assertEquals(Status.DONE, updated.getStatus()); - } -} \ No newline at end of file diff --git a/src/test/model/EpicTest.java b/src/test/model/EpicTest.java deleted file mode 100644 index 0455b5a..0000000 --- a/src/test/model/EpicTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package test.model; - -import model.Epic; -import model.Status; -import model.Subtask; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class EpicTest { - private Epic epic; - private Subtask subtask1; - private Subtask subtask2; - - @BeforeEach - void setUp() { - epic = new Epic("Epic Title", "Epic Description"); - - subtask1 = new Subtask("Subtask 1", "Description 1", Status.NEW, epic.getId()); - subtask2 = new Subtask("Subtask 2", "Description 2", Status.NEW, epic.getId()); - - subtask1.setId(1); - subtask2.setId(2); - } - - @Test - void epicIsCreatedWithEmptySubtaskList() { - assertNotNull(epic.getSubtaskIds()); - assertTrue(epic.getSubtaskIds().isEmpty()); - } - - @Test - void addSubtask_addsIdToList() { - epic.addSubtask(subtask1); - epic.addSubtask(subtask2); - - assertEquals(2, epic.getSubtaskIds().size()); - assertTrue(epic.getSubtaskIds().contains(subtask1.getId())); - assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); - } - - @Test - void removeSubtask_removesCorrectId() { - epic.addSubtask(subtask1); - epic.addSubtask(subtask2); - - epic.removeSubtask(subtask1.getId()); - - assertEquals(1, epic.getSubtaskIds().size()); - assertFalse(epic.getSubtaskIds().contains(subtask1.getId())); - assertTrue(epic.getSubtaskIds().contains(subtask2.getId())); - } - -} \ No newline at end of file diff --git a/src/test/model/TaskTest.java b/src/test/model/TaskTest.java deleted file mode 100644 index d6302bd..0000000 --- a/src/test/model/TaskTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package test.model; - -import model.Status; -import model.Task; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class TaskTest { - private Task task; - - @BeforeEach - void setUp() { - task = new Task("Test Task", "Test Description", Status.NEW); - task.setId(1); - } - - @Test - void testConstructorAndGetters() { - assertEquals(1, task.getId()); - assertEquals("Test Task", task.getTitle()); - assertEquals("Test Description", task.getDescription()); - assertEquals(Status.NEW, task.getStatus()); - } - - @Test - void testSetters() { - task.setId(42); - task.setTitle("Updated Title"); - task.setDescription("Updated Description"); - task.setStatus(Status.IN_PROGRESS); - - assertEquals(42, task.getId()); - assertEquals("Updated Title", task.getTitle()); - assertEquals("Updated Description", task.getDescription()); - assertEquals(Status.IN_PROGRESS, task.getStatus()); - } - - @Test - void testEquals_sameValues_shouldBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.NEW); - other.setId(1); - - assertEquals(task, other); - } - - @Test - void testEquals_differentId_shouldNotBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.NEW); - other.setId(99); - - assertNotEquals(task, other); - } - - @Test - void testEquals_differentTitle_shouldNotBeEqual() { - Task other = new Task("Different Title", "Test Description", Status.NEW); - other.setId(1); - - assertNotEquals(task, other); - } - - @Test - void testEquals_differentDescription_shouldNotBeEqual() { - Task other = new Task("Test Task", "Other Description", Status.NEW); - other.setId(1); - - assertNotEquals(task, other); - } - - @Test - void testEquals_differentStatus_shouldNotBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.DONE); - other.setId(1); - - assertNotEquals(task, other); - } - - @Test - void testHashCode_sameValues_shouldBeEqual() { - Task other = new Task("Test Task", "Test Description", Status.NEW); - other.setId(1); - - assertEquals(task.hashCode(), other.hashCode()); - } - - @Test - void testHashCode_differentValues_shouldNotBeEqual() { - Task other = new Task("Other", "Other", Status.DONE); - other.setId(999); - - assertNotEquals(task.hashCode(), other.hashCode()); - } -} \ No newline at end of file