diff --git a/src/Main.java b/src/Main.java index af6285e..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; @@ -51,4 +50,4 @@ private static void printHistory(TaskManager manager) { } } } -} \ No newline at end of file +} diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java index 079236c..61e9dfc 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(); -} \ No newline at end of file +} diff --git a/src/manager/InMemoryHistoryManager.java b/src/manager/InMemoryHistoryManager.java index 3dd9200..3d10b69 100644 --- a/src/manager/InMemoryHistoryManager.java +++ b/src/manager/InMemoryHistoryManager.java @@ -72,4 +72,4 @@ private void removeNode(Node node) { tail = node.prev; } } -} \ No newline at end of file +} diff --git a/src/manager/InMemoryTaskManager.java b/src/manager/InMemoryTaskManager.java index 34c5bc2..f0637b2 100644 --- a/src/manager/InMemoryTaskManager.java +++ b/src/manager/InMemoryTaskManager.java @@ -234,4 +234,4 @@ private void updateEpicStatus(int epicId) { epic.setStatus(Status.IN_PROGRESS); } } -} \ No newline at end of file +} 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 +} diff --git a/src/model/Epic.java b/src/model/Epic.java index bdbde3d..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,14 +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 + + '}'; } -} \ No newline at end of file +} 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 + + '}'; + } +} 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/manager/InMemoryHistoryManagerTest.java b/test/manager/InMemoryHistoryManagerTest.java similarity index 95% rename from src/tests/manager/InMemoryHistoryManagerTest.java rename to test/manager/InMemoryHistoryManagerTest.java index 5379f73..92122b9 100644 --- a/src/tests/manager/InMemoryHistoryManagerTest.java +++ b/test/manager/InMemoryHistoryManagerTest.java @@ -1,66 +1,66 @@ -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 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); - } +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/tests/manager/InMemoryTaskManagerTest.java b/test/manager/InMemoryTaskManagerTest.java similarity index 95% rename from src/tests/manager/InMemoryTaskManagerTest.java rename to test/manager/InMemoryTaskManagerTest.java index 7792d5d..196ce8a 100644 --- a/src/tests/manager/InMemoryTaskManagerTest.java +++ b/test/manager/InMemoryTaskManagerTest.java @@ -1,95 +1,95 @@ -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()); - } +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/tests/model/EpicTest.java b/test/model/EpicTest.java similarity index 95% rename from src/tests/model/EpicTest.java rename to test/model/EpicTest.java index 9f24042..0455b5a 100644 --- a/src/tests/model/EpicTest.java +++ b/test/model/EpicTest.java @@ -1,55 +1,55 @@ -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())); - } - +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/tests/model/TaskTest.java b/test/model/TaskTest.java similarity index 95% rename from src/tests/model/TaskTest.java rename to test/model/TaskTest.java index 1d39ff2..d6302bd 100644 --- a/src/tests/model/TaskTest.java +++ b/test/model/TaskTest.java @@ -1,95 +1,95 @@ -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()); - } +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