From b76decc9329baaee0eb874572a1129d049958f28 Mon Sep 17 00:00:00 2001 From: QianChangru Date: Fri, 15 Sep 2023 15:34:48 +0800 Subject: [PATCH] Implement A-Assertions The functional code is not capable of checking assumptions. Assumptions may not be true in some cases and checking is required. Let's add assert feature to document important assumptions. --- build.gradle | 2 ++ src/main/java/duke/Storage.java | 1 + src/main/java/duke/Task.java | 4 ++++ src/main/java/duke/TaskList.java | 6 ++++++ 4 files changed, 13 insertions(+) diff --git a/build.gradle b/build.gradle index 1ff9cdfbd3..44734913da 100644 --- a/build.gradle +++ b/build.gradle @@ -55,6 +55,8 @@ shadowJar { run{ standardInput = System.in + + enableAssertions = true } mainClassName = "duke.Launcher" diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 91f72bb4d0..aa80c724ad 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -35,6 +35,7 @@ public ArrayList load() throws IOException { } File f = new File(filePath); f.createNewFile(); + assert f.exists(); Scanner s = new Scanner(f); ArrayList tasks = new ArrayList<>(); while (s.hasNext()) { diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index d01083c8b5..708cde93d7 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -13,11 +13,15 @@ public class Task { * @param description Description of the task. */ public Task(String description) { + assert !description.isEmpty(); + this.description = description; this.isDone = false; } public Task(String description, boolean isDone) { + assert !description.isEmpty(); + this.description = description; this.isDone = isDone; } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 5657d1bc8d..72757c089d 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -47,6 +47,8 @@ public String addTask(Task t) { * @return The message for deleting. */ public String deleteTask(int num) { + assert num >= 0; + Task re = tasks.remove(num); this.storage.rewriteFile(tasks); return Ui.deleteTask(re, tasks); @@ -59,6 +61,8 @@ public String deleteTask(int num) { * @return The message for marking. */ public String markTask(int num) { + assert num >= 0; + Task t = tasks.get(num); t.markAsDone(); this.storage.rewriteFile(tasks); @@ -72,6 +76,8 @@ public String markTask(int num) { * @return The message for searching results. */ public String findTask(String keyword) { + assert keyword != null; + ArrayList result = new ArrayList<>(); for (int i = 0; i < this.tasks.size(); i++) { if (tasks.get(i).toString().contains(keyword)) {