From 2ccc3272111fc973b889eea6de8021c0d58ca032 Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Mon, 8 Apr 2024 23:03:40 +0800 Subject: [PATCH 01/14] Update UG for setcrs --- docs/UserGuide.md | 9 ++++++++- docs/images/ug/setcrs_2101.png | Bin 0 -> 32696 bytes docs/images/ug/setcrs_error.png | Bin 0 -> 95062 bytes docs/images/ug/setcrs_successful.png | Bin 0 -> 40273 bytes 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 docs/images/ug/setcrs_2101.png create mode 100644 docs/images/ug/setcrs_error.png create mode 100644 docs/images/ug/setcrs_successful.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 972aae2f7a0..3fd40841391 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -182,12 +182,19 @@ The quick reference is meant for **fast and reliable** lookup of commands and th Sets the course code in question. +Course is shown at the top of the window. + Format: `setcrs COURSE_code` -Duplicate course are not allowed. +Setcrs 2101 + +Setcrs 2101 + Courses are case-insensitive. Course code should follow the format "XX1234Y", Y is optional. +Setcrs Error + ---

diff --git a/docs/images/ug/setcrs_2101.png b/docs/images/ug/setcrs_2101.png new file mode 100644 index 0000000000000000000000000000000000000000..1e87fdec09faf1b9c7adcb6aea511915889a9772 GIT binary patch literal 32696 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 D*fm5A literal 0 HcmV?d00001 diff --git a/docs/images/ug/setcrs_error.png b/docs/images/ug/setcrs_error.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7f818bcce1cb1253d1359a1b4ad7916d5df8ae GIT binary patch literal 95062 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 literal 0 HcmV?d00001 From f3ac0715550b6db2334fd36c64d29097eaa125df Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:08:09 +0800 Subject: [PATCH 02/14] Update docs/UserGuide.md Co-authored-by: Titus Chew <39845485+tituschewxj@users.noreply.github.com> --- docs/UserGuide.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 1be3e27c43a..12f8176b460 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -296,9 +296,14 @@ Format: `setcrs COURSE_CODE` Course codes are case-insensitive. + + Course code should follow the format "XX1234Y", Y is optional. +When an invalid course code is entered, the follow error message appears: + Setcrs Error + ---
From 4f1e152ff3ea60af6a6c1687e4d6728a4341748d Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:08:17 +0800 Subject: [PATCH 03/14] Update docs/UserGuide.md Co-authored-by: Titus Chew <39845485+tituschewxj@users.noreply.github.com> --- docs/UserGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 12f8176b460..dfedf73369c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -296,6 +296,8 @@ Format: `setcrs COURSE_CODE` Course codes are case-insensitive. +Here is the output in the command results when the `setcrs` command is successful: + Course code should follow the format "XX1234Y", Y is optional. From 477f48238b96c8a0663acaaa998500db4942e9fb Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Sun, 14 Apr 2024 20:39:05 +0800 Subject: [PATCH 04/14] Edit based on PR --- docs/UserGuide.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3fd40841391..b6505512d77 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -184,15 +184,21 @@ Sets the course code in question. Course is shown at the top of the window. -Format: `setcrs COURSE_code` +Format: `setcrs COURSE_CODE` Setcrs 2101 Setcrs 2101 + + Courses are case-insensitive. Course code should follow the format "XX1234Y", Y is optional. +When an invalid course code is entered, the following error message appears: + + + Setcrs Error --- @@ -205,10 +211,15 @@ Adds a student to the contact book. Format: `addstu n/NAME nn/NUSNET [p/PHONE] [e/EMAIL] [m/MAJOR] [t/TAG]…​` * Add a student with the given details. -* The name and nusnet id must be provided. And nusnet id must be unique. +* The name and NUSNet id must be provided. NUSNet id must be unique. * All the remaining fields are optional. If not provided, a placeholder value will be used. + + + * Name cannot be empty or spaces only, contain only alphabets and cannot have double spaces + + **Tip:** A person can have any number of tags (including 0) From 75fcd6899bb192731a76239554390b37404f2b21 Mon Sep 17 00:00:00 2001 From: belligerentbeagle Date: Mon, 15 Apr 2024 00:30:16 +0800 Subject: [PATCH 05/14] Improve Command History implementation --- docs/DeveloperGuide.md | 12 +++++++++++ .../CommandHistoryActivityDiagram.puml | 20 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 docs/diagrams/CommandHistoryActivityDiagram.puml diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 3dafae7e981..f3c2bd5f8cd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -230,6 +230,18 @@ The + + +**Note:** The `CommandHistory` Singleton object is used to store the command history. It is a Singleton object to ensure that there is only one instance of the `CommandHistory` object throughout the application. + + + +Below is the activity diagram that shows how the process of a user interacting with the input field to retrieve the +last command executed. + + + + {{ newPage }} ### \[Proposed\] Undo/Redo Feature diff --git a/docs/diagrams/CommandHistoryActivityDiagram.puml b/docs/diagrams/CommandHistoryActivityDiagram.puml new file mode 100644 index 00000000000..a347f59a6a6 --- /dev/null +++ b/docs/diagrams/CommandHistoryActivityDiagram.puml @@ -0,0 +1,20 @@ +@startuml +skin rose +skinparam ActivityFontSize 15 +skinparam ArrowFontSize 12 +start +:Input field is empty; +if () then ([up or down arrow key pressed]) + :Retrieves previous command + from command history + if available; + :Previous command fills Input field; +else ([else]) + :User enters command in Input field; +endif +:User executes command; +:Command saved to command history; +:Input field is cleared; + +stop +@enduml From 256586c429c79fab37d4b545e8c408cf146c2182 Mon Sep 17 00:00:00 2001 From: belligerentbeagle Date: Mon, 15 Apr 2024 11:29:32 +0800 Subject: [PATCH 06/14] Clarify activity diagram of command history --- docs/diagrams/CommandHistoryActivityDiagram.puml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/diagrams/CommandHistoryActivityDiagram.puml b/docs/diagrams/CommandHistoryActivityDiagram.puml index a347f59a6a6..55bb883a951 100644 --- a/docs/diagrams/CommandHistoryActivityDiagram.puml +++ b/docs/diagrams/CommandHistoryActivityDiagram.puml @@ -5,15 +5,15 @@ skinparam ArrowFontSize 12 start :Input field is empty; if () then ([up or down arrow key pressed]) - :Retrieves previous command - from command history + :Retrieves previousCommand + from CommandHistory if available; - :Previous command fills Input field; + :previousCommand fills Input field; else ([else]) :User enters command in Input field; endif :User executes command; -:Command saved to command history; +:Command saved in CommandHistory; :Input field is cleared; stop From 8f768d423dc7f123e3bb8121fc00044d548cbcd3 Mon Sep 17 00:00:00 2001 From: belligerentbeagle Date: Mon, 15 Apr 2024 11:52:46 +0800 Subject: [PATCH 07/14] Update activity diagram --- docs/diagrams/CommandHistoryActivityDiagram.puml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/diagrams/CommandHistoryActivityDiagram.puml b/docs/diagrams/CommandHistoryActivityDiagram.puml index 55bb883a951..0e041b3db1e 100644 --- a/docs/diagrams/CommandHistoryActivityDiagram.puml +++ b/docs/diagrams/CommandHistoryActivityDiagram.puml @@ -3,11 +3,20 @@ skin rose skinparam ActivityFontSize 15 skinparam ArrowFontSize 12 start + + :Input field is empty; + if () then ([up or down arrow key pressed]) :Retrieves previousCommand from CommandHistory if available; + note + previousCommand is a generic variable + representing a command from CommandHistory. + Therefore it can contain an older or nere + command depending on the current command + end note :previousCommand fills Input field; else ([else]) :User enters command in Input field; @@ -17,4 +26,4 @@ endif :Input field is cleared; stop -@enduml +@enduml \ No newline at end of file From f537c4e72ff8d8a5374473018bdd85f2971a5fa6 Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:11:08 +0800 Subject: [PATCH 08/14] Specify set crs is only for cs courses --- docs/UserGuide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 0b2f0254ef9..4272d5c24e4 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -369,6 +369,7 @@ Here is the output in the command results when the `setcrs` command is successfu Course code should follow the format "XX1234Y", Y is optional. +Course code is meant for CS coded courses, hence only 2 prefix letters are allowed. When an invalid course code is entered, the following error message appears: From 9b8fc123c1ff1219b15092a52bfb89b355e3459e Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:25:41 +0800 Subject: [PATCH 09/14] Elaborate on setcrs --- docs/UserGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 4272d5c24e4..3818ab567a6 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -369,6 +369,8 @@ Here is the output in the command results when the `setcrs` command is successfu Course code should follow the format "XX1234Y", Y is optional. +X and Y can be any letters, while 1234 can be any 4-digit number. + Course code is meant for CS coded courses, hence only 2 prefix letters are allowed. When an invalid course code is entered, the following error message appears: From 3ee60a1133a1dad146573a2e5bf82a4722e6bd88 Mon Sep 17 00:00:00 2001 From: saiutkarsh33 <122259179+saiutkarsh33@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:29:21 +0800 Subject: [PATCH 10/14] Add new line at command history activity diagram eof --- docs/diagrams/CommandHistoryActivityDiagram.puml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/diagrams/CommandHistoryActivityDiagram.puml b/docs/diagrams/CommandHistoryActivityDiagram.puml index 0e041b3db1e..63f8d415a12 100644 --- a/docs/diagrams/CommandHistoryActivityDiagram.puml +++ b/docs/diagrams/CommandHistoryActivityDiagram.puml @@ -26,4 +26,4 @@ endif :Input field is cleared; stop -@enduml \ No newline at end of file +@enduml From 33164cef7500990dc69346156a3b8e47a76f0bcb Mon Sep 17 00:00:00 2001 From: Titus Chew <39845485+tituschewxj@users.noreply.github.com> Date: Mon, 15 Apr 2024 14:26:22 +0800 Subject: [PATCH 11/14] Improve DG Let's - Add autocomplete testing - Improve Pagination - Fix formatting issues - Add user stories - More specific users - Fix Undo/Redo Feature - Fix class names - Add note of internal vs external representation - keyFormat issues - fix uml diagrams formatting - Remove data archiving --- docs/DeveloperGuide.md | 190 ++++++++++-------- .../CommandHistoryActivityDiagram.puml | 2 +- docs/diagrams/ModelClassDiagram.puml | 14 +- docs/diagrams/ParserClasses.puml | 6 +- 4 files changed, 117 insertions(+), 95 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a4694729915..504e1a70b02 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -58,6 +58,7 @@ The bulk of TAPro's work is done by the following four components: [**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.
+{{ newPageBetween }} #### How the architecture components interact with each other @@ -125,13 +126,15 @@ call as an example. -**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram. +**Note:** The lifeline for `DeletePersonCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram. +{{ newPageBetween }} + **How command execution works in `Logic` component:** -1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command. -1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`. +1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeletePersonCommandParser`) and uses it to parse the command. +1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeletePersonCommand`) which is executed by the `LogicManager`. 1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).
Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve. 1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. @@ -141,16 +144,21 @@ Here are the other classes in `Logic` (omitted from the class diagram above) tha

**How the parsing works:** -* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. - * All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. -* When called upon to parse an autocomplete input, the `AddressBookParser` class checks whether the input contains arguments. If it does not contain arguments, it creates an `AutoCompleteCommand` object which autocompletes Commands. Otherwise, it checks for the last argument in the user input and creates the matching `AutoComplete` object if it exists (e.g. `arbitrary_command arg_a/arbitrary_arg` lead to the `AutoCompleteArgA` object, if it exists). Otherwise, a default `AutoComplete` object that always return an empty string is returned. +* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddPersonCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddPersonCommand`) which the `AddressBookParser` returns back as a `Command` object. + * All `XYZCommandParser` classes (e.g., `AddPersonCommandParser`, `DeletePersonCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. +* When called upon to parse an autocomplete input, the `AddressBookParser` class checks whether the input contains arguments. If it does not contain arguments, it creates an `AutoCompleteCommand` object which autocompletes Commands. Otherwise, it checks for the last argument in the user input and creates the matching `AutoComplete` object if it exists. Otherwise, a default `AutoComplete` object that always return an empty string is returned. + + + +While a command is named as `XYZPersonCommandParser` internally (where `XYZ` is a placeholder for a specific command), it acts on a student externally in TAPro. + {{ newPage }} ### Model component **API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-F13-1/tp/tree/master/src/main/java/seedu/address/model/Model.java) -

+ **The `Model` component,** * stores the contact book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). @@ -165,23 +173,31 @@ Here are the other classes in `Logic` (omitted from the class diagram above) tha An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
- +
-{{ newPage }} + + +While `Person` objects are used internally, it represents a student externally in TAPro. + ### Storage component **API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-F13-1/tp/tree/master/src/main/java/seedu/address/storage/Storage.java) -

+

**The `Storage` component,** * can save both contact book data and user preference data and course name data in JSON format, and read them back into corresponding objects. * inherits from both `AddressBookStorage` and `UserPrefStorage` and `CourseStorageName`, which means it can be treated as either one (if only the functionality of only one is needed). * depends on some classes in the `Model` component (because the `Storage` component's job is to save/retrieve objects that belong to the `Model`) + + +While `AddressBookXYZ` objects are used internally (where `XYZ` is a placeholder), it represents the student contact book externally in TAPro. + + {{ newPage }} ### Common classes @@ -239,16 +255,16 @@ There are two variants of autocomplete feature. One variant is the autocompletio **How autocompletion of dynamic data works using `AutoCompletePrefixResolver` in the `Logic` component:** -In the autocompletion of dynamic data there are 5 main processes: +In the autocompletion of dynamic data there are 5 key steps: 1. Notifying that the data is outdated 2. Using the autocomplete hotkey to return the autocompletion 3. Parsing the input to call the corresponding kind of autocompletion -4. Updating the new attribute data into the `AttributeTrie` -5. Generating the autocomplete result +4. Generating the autocomplete result +5. Updating the new attribute data into the `AttributeTrie` {{ newPageBetween }} -**How the `AttributeTrie` is notified of new data:** +**Step 1. How the `AttributeTrie` is notified of new data:** 1. When a command is executed, a check is performed in `LogicManager` to determine if the command could potentially modify the data. 1. If the data could be modified, then we would get the latest `addressBook` using `getAddressBook()`. @@ -260,7 +276,7 @@ In the autocompletion of dynamic data there are 5 main processes: {{ newPageBetween }} -**How the autocomplete hotkey works:** +**Step 2. How the autocomplete hotkey works:** 1. After the autocomplete hotkey {{ macros.keyFormat('Tab') }} is pressed, the method `handleTabKeyPressEvent(...)` is called. 1. Whenever `lastModifiedText` has changed, it means that the text in the `CommandBox`'s command input box has changed (e.g. the user types into the command input box), so the `autoCompleteResultCache` is set to `null` to indicate that the `AutoCompleteResult` is outdated. @@ -280,7 +296,7 @@ The reference frame below, `create empty autocomplete`, is used in the next few {{ newPageBetween }} -**How `LogicManager` parses the input to generate a new `AutoCompleteResult`:** +**Step 3. How `LogicManager` parses the input to generate a new `AutoCompleteResult`:** 1. When `LogicManager#autoComplete(commandText)` is called with the text `commandText` to autocomplete, it calls the `AddressBookParser#parseAutoComplete(commandText)` method. 1. Depending on the `commandText` passed into `parseAutoComplete`, there are 3 possible paths: @@ -290,11 +306,11 @@ The reference frame below, `create empty autocomplete`, is used in the next few 1. In all cases, a `AutoComplete` is returned, which `AutoCompleteCommand` and `AutoCompletePrefixResolver` are subclasses of. 1. The `AutoComplete` produces a `AutoCompleteResult`, which is passed back to the `MainWindow`. -

+

{{ newPageBetween }} -**How `AutoCompletePrefixResolver` is generates an `AutoCompleteResult`:** +**Step 4. How `AutoCompletePrefixResolver` is generates an `AutoCompleteResult`:** 1. When `AutoCompletePrefixResolver#getAutoComplete(input)` is called, if the `input` is blank, an empty `AutoCompleteResult` is returned. 1. Otherwise, it calls `findTriePrefixContinuation(input)` which would find the text, that continues from a given input, in the `AttributeTrie`. This may update the `AttributeTrie` with new attribute data if necessary, due to the lazy evaluation. @@ -306,7 +322,7 @@ The reference frame below, `create empty autocomplete`, is used in the next few {{ newPageBetween }} -**How `AttributeTrie` is updated with new attribute data and returns the matches:** +**Step 5. How `AttributeTrie` is updated with new attribute data and returns the matches:** 1. When `AutoCompletePrefixResolver#findTriePrefixContinuation(input)` is called, `findLastPrefixIndex(input)` is called which returns `indexOfLastPrefix`. 1. Then, with the `indexOfLastPrefix`, it calls `findLastPrefix` to find the last prefix in the `input`. @@ -322,7 +338,7 @@ The reference frame below, `create empty autocomplete`, is used in the next few #### Design considerations -**Separation of concerns:** +**1. Separation of concerns:** As the autocomplete feature involves many classes all over the codebase, it is important to handle the separation of concerns carefully, to lead to higher cohesion and lower coupling. @@ -332,7 +348,7 @@ This was done through the following: * Separating the dynamic autocompletion from the static autocompletion, as their internal implementations were different. * Having each of the subcomponents, Attribute Classes, Parser Classes and AutoComplete Classes, as packages, which encapsulates them, limiting functional overlaps. -**Caching of intermediate results for improved performance:** +**2. Caching of intermediate results for improved performance:** There are two layers in the current implementation used for caching, which are: * When the current `lastModifiedText` doesn't change, caching the `AutoCompleteResult` in `autoCompleteResultCache`. @@ -340,7 +356,7 @@ There are two layers in the current implementation used for caching, which are: By having caching of intermediate results, it reduces the need to recompute certain results, thus improving performance of TAPro on users' systems. -**Lazy evaluation to reduce redundant computations:** +**3. Lazy evaluation to reduce redundant computations:** Lazy evaluation is carried out in `AttributeTrie`, where the new `Trie` was lazily evaluated. It means that the `Trie` was only generated when the autocompletion of a parameter value doesn't have an `AttributeTrie` already present. @@ -355,10 +371,10 @@ Lazy evaluation is carried out in `AttributeTrie`, where the new `Trie` was lazi ### Command History Retrieval Let's consider the scenario where the user wants to retrieve the last command executed. The user can do this by -pressing the UP key on +pressing the {{ macros.keyFormat('Up', '') }} key on the keyboard. -The UP key press event is captured by the `CommandBox` class, which then +The {{ macros.keyFormat('Up', '') }} key press event is captured by the `CommandBox` class, which then retrieves the last command from the `CommandHistory` Singleton object. @@ -371,7 +387,7 @@ retrieves the last command from the `CommandHistory` Singleton object. Below is the activity diagram that shows how the process of a user interacting with the input field to retrieve the last command executed. - + {{ newPage }} @@ -404,7 +420,7 @@ be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted

-**Step 3.** The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified contact book state to be saved into the `addressBookStateList`. +**Step 3.** The user executes `addstu n/David …​` to add a new person. The `addstu` command also calls `Model#commitAddressBook()`, causing another modified contact book state to be saved into the `addressBookStateList`. @@ -448,19 +464,19 @@ The `redo` command does the opposite — it calls `Model#redoAddressBook()`, **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest contact book state, then there are no undone `AddressBook` states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. -


+
**Step 6.** The user then decides to execute the command `list`. Commands that do not modify the contact book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.

-**Step 7.** The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all contact book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. +**Step 7.** The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all contact book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `addstu n/David …​` command. This is the behavior that most modern desktop applications follow. The following activity diagram summarizes what happens when a user executes a new command: -

+

{{ newPageBetween }} @@ -477,14 +493,6 @@ The following activity diagram summarizes what happens when a user executes a ne * Pros: Will use less memory (e.g. for `delstu`, just save the person being deleted). * Cons: We must ensure that the implementation of each individual command are correct. -_{more aspects and alternatives to be added}_ - -{{ newPage }} - -### \[Proposed\] Data archiving - -_{Explain here how the data archiving feature will be implemented}_ - {{ newPage }} @@ -505,14 +513,14 @@ _{Explain here how the data archiving feature will be implemented}_ ### Product scope **Target user profile**: -* Teaching Assistant for a Computer Science module in NUS +* Teaching Assistant for one Computer Science module in NUS * Tech savvy * Prefer desktop apps over other types * Can type fast * Prefers typing to mouse interactions * Is reasonably comfortable using CLI apps -**Value proposition**: All in one contact book managing student’s progress in the course, by means of participation, grades, and other course specific attributes of an NUS CS class. Can quickly find information, filter and sort with keyboard shortcuts. +**Value proposition**: All in one contact book managing student’s progress in the course, by means of attendance of the NUS CS class. Can quickly find information and perform operations with keyboard shortcuts. {{ newPage }} @@ -530,26 +538,25 @@ _{Explain here how the data archiving feature will be implemented}_ [//]: # (whitespace is added to force the header row into one line) {% set whitespace = '        ' %} -| Priority | As a … | I want to … | So that I can… | -|------------------|---------------------|--------------------------------------------------------------------|------------------------------------------------------| -| {{ threeStars }} | TA {{ whitespace }} | name/rename the CS course that I am tutoring this semester | keep track of the module I am teaching | -| {{ threeStars }} | TA | add a student to the my class that I am tutoring this semester | keep track of him or her | -| {{ threeStars }} | TA | view all students from my class | view details about all of them | -| {{ threeStars }} | TA | mark attendance for a student in my class for a particular week | keep track of who is present | -| {{ threeStars }} | TA | unmark attendance for a student in my class for a particular week | keep track of who is absent | -| {{ threeStars }} | TA | delete a student | remove a student if he or she leaves the class | -| {{ threeStars }} | TA | know all the commands of TAPro via the help window | use it effectively | -| {{ threeStars }} | TA | see all students in the contact book | have an overview of all students | -| {{ threeStars }} | TA | edit a student's details | have the latest data | -| {{ threeStars }} | TA | find a student by name | get a student's data easily | -| {{ threeStars }} | TA | delete all students from a previous semester from the contact book | clear my contacts quickly at the start of a semester | -| {{ twoStars }} | TA | retrieve command history | avoid retyping a command | -| {{ twoStars }} | TA | to autocomplete my input | to save time | -| {{ twoStars }} | TA | exit the program smoothly | to save time | - -**TODO: Add more user stories that are applicable** - -*{More to be added}* +| Priority | As a … | I want to … | So that I can… | +|------------------|----------------------------|--------------------------------------------------------------------|------------------------------------------------------| +| {{ threeStars }} | TA | name/rename the CS course that I am tutoring this semester | keep track of the module I am teaching | +| {{ threeStars }} | TA | add a student to the my class that I am tutoring this semester | keep track of him or her | +| {{ threeStars }} | TA | view all students from my class | view details about all of them | +| {{ threeStars }} | TA | delete a student | remove a student if he or she leaves the class | +| {{ threeStars }} | TA | see all students in the contact book | have an overview of all students | +| {{ threeStars }} | TA | edit a student's details | have the latest data | +| {{ threeStars }} | TA | find a student by name | get a student's data easily | +| {{ threeStars }} | attendance tracking TA | mark attendance for a student in my class for a particular week | keep track of who is present | +| {{ threeStars }} | attendance tracking TA | unmark attendance for a student in my class for a particular week | keep track of who is absent | +| {{ twoStars }} | TA over multiple semesters | delete all students from a previous semester from the contact book | clear my contacts quickly at the start of a semester | +| {{ twoStars }} | new user | know all the commands of TAPro via the help window | use it effectively | +| {{ twoStars }} | CLI user | retrieve command history | avoid retyping a command | +| {{ twoStars }} | CLI user | autocomplete my input | save time | +| {{ twoStars }} | fast typist | use keyboard inputs to interact with TAPro | save time | +| {{ twoStars }} | user | exit the program smoothly | save time | +| {{ oneStar }} | user | easily read the result message of a command | save time | + {{ newPage }} @@ -597,6 +604,8 @@ For all use cases below, the **System** is TAPro and the **Actor** is the user, +{{ newPageBetween }} + **Use case: Editing a Student** @@ -659,6 +668,8 @@ For all use cases below, the **System** is TAPro and the **Actor** is the user, +{{ newPageBetween }} + **Use case: Name or Rename CS Course** @@ -717,6 +728,8 @@ For all use cases below, the **System** is TAPro and the **Actor** is the user, +{{ newPageBetween }} + **Use case: Mark Attendance** @@ -856,10 +869,6 @@ For all use cases below, the **System** is TAPro and the **Actor** is the user, -**TODO: Add more use cases** - -*{More to be added}* - {{ newPage }} ### Non-Functional Requirements @@ -871,8 +880,6 @@ For all use cases below, the **System** is TAPro and the **Actor** is the user, 5. Input validation to prevent errors due to incorrect data entry. 6. Application to handle common errors gracefully, such as incorrect data entry, without crashing or losing data. -*{More to be added}* - {{ newPage }} ### Glossary @@ -948,6 +955,7 @@ Expected: The most recent window size and location is retained.
+{{ newPageBetween }} ### Adding a student If TAPro does not have any student contacts, the following commands can be used to add some @@ -1012,9 +1020,8 @@ shown in the status message. This command differs from most other commands that use the `NUSNET` to identify a student. This command uses the index number shown in the displayed person list to identify the student to be edited. -
- -
+

+{{ newPageBetween }} ### Deleting a student @@ -1066,8 +1073,6 @@ Expected: Student with name 'John Doe' is displayed on the Student Contact Cards * `find`: Missing keyword. -2. _{ more test cases …​ }_ -
### Marking a student's attendance @@ -1097,6 +1102,7 @@ Details of the marked student is shown in the result message panel.
+{{ newPageBetween }} ### Unmarking a student's attendance @@ -1154,7 +1160,34 @@ Expected: TAPro's main window's title contains the course code `CS2103` provided ### Autocompleting fields -**TODO** +1. **Autocompleting the `addstu` command name** + + + +1. Prerequisites: No prerequisites. + + + + +2. Test case: Enter `a` and press {{ macros.keyFormat('Tab') }} + +Expected: The command box input text changes to `addstu`. + + + +2. **Autocompleting the parameter `MAJOR`** + + + +1. Prerequisites: There is at least one student, and all students have the major `Computer Science`. + + + + +2. Test case: Enter `edit 1 m/` and press {{ macros.keyFormat('Tab') }} + +Expected: The command box input text changes to `edit 1 m/Computer Science` +
@@ -1168,8 +1201,8 @@ Expected: TAPro's main window's title contains the course code `CS2103` provided -2. Test case: Retrieving a previous command with UP key +2. Test case: Retrieving a previous command with +{{ macros.keyFormat('Up', '') }} key * After the entering a previous command, the command input box is empty. * Pressing {{ macros.keyFormat('Up', '') }} will @@ -1219,17 +1252,6 @@ Expected: The help window automatically pops up, giving further information abou Expected: TAPro's Contact Book resets, clearing all existing students (if any). -
- -### Saving data - -1. **Dealing with missing/corrupted data files** - - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ - -1. _{ more test cases …​ }_ - - {{ newPage }} ## **Appendix: Design Decisions** diff --git a/docs/diagrams/CommandHistoryActivityDiagram.puml b/docs/diagrams/CommandHistoryActivityDiagram.puml index 0e041b3db1e..63f8d415a12 100644 --- a/docs/diagrams/CommandHistoryActivityDiagram.puml +++ b/docs/diagrams/CommandHistoryActivityDiagram.puml @@ -26,4 +26,4 @@ endif :Input field is cleared; stop -@enduml \ No newline at end of file +@enduml diff --git a/docs/diagrams/ModelClassDiagram.puml b/docs/diagrams/ModelClassDiagram.puml index 6744c9ea0bd..f4b84b63540 100644 --- a/docs/diagrams/ModelClassDiagram.puml +++ b/docs/diagrams/ModelClassDiagram.puml @@ -43,13 +43,13 @@ UserPrefs .up.|> ReadOnlyUserPrefs AddressBook *--> "1" UniquePersonList UniquePersonList --> "~* all" Person -Person *--> Name -Person *--> NusNetId -Person *--> Phone -Person *--> Email -Person *--> Major -Person *--> "*" Tag -Person *--> "*" WeekNumber +Person *---> Name +Person *---> NusNetId +Person *---> Phone +Person *---> Email +Person *---> Major +Person *---> "*" Tag +Person *---> "*" WeekNumber Person -[hidden]up--> I UniquePersonList -[hidden]right-> I diff --git a/docs/diagrams/ParserClasses.puml b/docs/diagrams/ParserClasses.puml index ce4c5ce8c8d..adf1e492903 100644 --- a/docs/diagrams/ParserClasses.puml +++ b/docs/diagrams/ParserClasses.puml @@ -21,10 +21,10 @@ Class Prefix Class HiddenOutside #FFFFFF HiddenOutside ..> AddressBookParser -AddressBookParser .down.> XYZCommandParser: <> +AddressBookParser .down.> XYZCommandParser: creates > -XYZCommandParser ..> XYZCommand : <> -AddressBookParser ..> Command : <> +XYZCommandParser ..> XYZCommand : creates > +AddressBookParser ..> Command : uses > XYZCommandParser .up.|> Parser XYZCommandParser ..> ArgumentMultimap XYZCommandParser ..> ArgumentTokenizer From b22487c1f90d35a213f7fba697345a62faf2df16 Mon Sep 17 00:00:00 2001 From: Titus Chew <39845485+tituschewxj@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:03:41 +0800 Subject: [PATCH 12/14] Add acknowledgements --- docs/DeveloperGuide.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 504e1a70b02..cdec39ddcc2 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -14,9 +14,25 @@ ## **Acknowledgements** +**Code:** + * Trie implementation is reused from [eugenp's tutorials](https://github.com/eugenp/tutorials) with minor modifications. -_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_ +**Documentation:** + +* Icons in our User Guide and Developer Guide are taken from [Font Awesome](https://fontawesome.com/). +* Our documentation is generated using [MarkBind](https://markbind.org/index.html), with [Nunjucks](https://mozilla.github.io/nunjucks/) variables and macros. +* Our UML diagrams are generated using [PlantUML](https://plantuml.com/). + +**Dev-dependencies:** + +* The dependency [MarkBind](https://markbind.org/index.html), was used for having a live preview locally, through installing the [`markbind-cli`](https://www.npmjs.com/package/markbind-cli) package with [NPM](https://www.npmjs.com/), that runs over the [Node.js](https://nodejs.org/) runtime. +* The dependency [`captain-githook`](https://github.com/swellaby/captain-githook), was used for configuring git hooks, for pre-push and pre-commit checks. + +**Ideas:** + +* The idea of autocomplete and command history retrieval was adapted from common command terminals, like the [Windows Terminal](https://github.com/microsoft/terminal) and [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)), which had these features. +* The idea of syntax highlighting was adapted from common file editors, like [Visual Studio Code](https://code.visualstudio.com/) and Integrated Development Environments like [IntelliJ IDEA](https://www.jetbrains.com/idea/), which had syntax highlighting. {{ newPage }} From dde4f8ad9fcdf1be56b80c0bdbef1d6be6e5c541 Mon Sep 17 00:00:00 2001 From: Titus Chew <39845485+tituschewxj@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:23:44 +0800 Subject: [PATCH 13/14] Fix setcrs UG --- docs/UserGuide.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3818ab567a6..6f19fa1d3ad 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -347,9 +347,7 @@ The help window is resizable, so you can {{ macros.semiBold('easily reposition a Sets the course code in question. -Course is shown at the top of the window. - -Course is shown at the top of the window. +The course code is shown at the top of TAPro's main window. @@ -361,22 +359,26 @@ Course is shown at the top of the window. Course codes are case-insensitive. + -Here is the output in the command results when the `setcrs` command is successful: - +**Course code should follow the format `XX1234Y`, where `Y` is optional:** - + -Course code should follow the format "XX1234Y", Y is optional. +`X` and `Y` can be any letters, while `1234` can be any four-digit number. + + -X and Y can be any letters, while 1234 can be any 4-digit number. +Course code is meant for CS coded courses, hence only two prefix letters are allowed. + -Course code is meant for CS coded courses, hence only 2 prefix letters are allowed. + When an invalid course code is entered, the following error message appears: Setcrs Error + {{ newPage }} From 8062d1c2d12ff758652bf197b72f1d5206753cd0 Mon Sep 17 00:00:00 2001 From: Titus Chew <39845485+tituschewxj@users.noreply.github.com> Date: Mon, 15 Apr 2024 15:51:18 +0800 Subject: [PATCH 14/14] Improve DG Let's - Use codeblocks - Update pagination --- docs/DeveloperGuide.md | 186 +++++++++++++++++++++++++++++++---------- 1 file changed, 141 insertions(+), 45 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index cdec39ddcc2..8dd34ee67c1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -951,7 +951,7 @@ testers are expected to do more *exploratory* testing. 5. Run `java -jar TAPro.jar`. -Expected: TAPro launches and shows the GUI with a set of sample student contacts. The window size may not be optimal. +Expected: TAPro launches and shows the GUI with a set of sample student contacts. The window size may not be optimal. 2. **Saving window preferences** @@ -967,7 +967,7 @@ Expected: TAPro launches and shows the GUI with a set of sample student contacts 3. Re-launch the app by double-clicking the jar file.
-Expected: The most recent window size and location is retained. +Expected: The most recent window size and location is retained.
@@ -986,13 +986,16 @@ students. -2. Test case: `addstu n/John Doe p/98765432 e/johndoe@example.com nn/E0123456 m/Computer Science, #02-25 t/friends t/owesMoney` +2. Test case: +``` +addstu n/John Doe p/98765432 e/johndoe@example.com nn/E0123456 m/Computer Science, #02-25 t/friends t/owesMoney +``` -Expected: Student with NUSNet ID `E0123456` is added into TAPro. Details of the added student is +Expected: Student with NUSNet ID `E0123456` is added into TAPro. Details of the added student is shown in the result message panel. -1. **Adding a student with NUSNet ID E0123457** +2. **Adding a student with NUSNet ID E0123457** @@ -1001,9 +1004,12 @@ shown in the result message panel. -2. Test case: `addstu n/Mary Jane p/91234911 e/janemary@example.com nn/E0123457 m/Biology t/friends t/owesTutorial2` +2. Test case: +``` +addstu n/Mary Jane p/91234911 e/janemary@example.com nn/E0123457 m/Biology t/friends t/owesTutorial2 +``` -Expected: Student with NUSNet ID `E0123457` is added into TAPro. Details of the added student is +Expected: Student with NUSNet ID `E0123457` is added into TAPro. Details of the added student is shown in the result message panel. @@ -1024,10 +1030,12 @@ the above last `addstu` command to add a student with NUSNet ID E0123457 if it d -2. Test case: `edit 2 p/98765432 m/Computer Science` - +2. Test case: +``` +edit 2 p/98765432 m/Computer Science +``` -Expected: Information of student with NUSNet ID `E0123457` is updated in TAPro. Details of the added student is +Expected: Information of student with NUSNet ID `E0123457` is updated in TAPro. Details of the added student is shown in the status message. @@ -1050,18 +1058,32 @@ This command differs from most other commands that use the `NUSNET` to identify -2. Test case: `delstu nn/E0123456` +2. Test case: +``` +delstu nn/E0123456 +``` -Expected: The student with NUSNet ID `E0123456` is deleted from TAPro. Details of the deleted student +Expected: The student with NUSNet ID `E0123456` is deleted from TAPro. Details of the deleted student shown in the result message panel. 3. Other incorrect `delstu` commands to try: -* `delstu`: Missing parameter and prefix. -* `delstu nn/E6543210`: No student with this NUSNet ID. -* `delstu E0123456`: Missing prefix for the NUSNet ID parameter. +* Missing parameter and prefix: +``` +delstu +``` + +* No student with this NUSNet ID: +``` +delstu nn/E6543210 +``` + +* Missing prefix for the NUSNet ID parameter: +``` +delstu E0123456 +```
@@ -1078,18 +1100,25 @@ shown in the result message panel. -2. Test case: `find john` +2. Test case: +``` +find john +``` -Expected: Student with name 'John Doe' is displayed on the Student Contact Cards Panel. +Expected: Student with name 'John Doe' is displayed on the Student Contact Cards Panel. 3. Other incorrect `find` commands to try: -* `find`: Missing keyword. - +* Missing keyword: +``` +find +``` +

+{{ newPageBetween }} ### Marking a student's attendance @@ -1102,19 +1131,37 @@ Expected: Student with name 'John Doe' is displayed on the Student Contact Cards -2. Test case: `mark nn/E0123456 wk/1` +2. Test case: +``` +mark nn/E0123456 wk/1 +``` -Expected: Student with NUSNet ID `E0123456` is marked as present for week 1 in TAPro, depicted on that student's card in the panel. +Expected: Student with NUSNet ID `E0123456` is marked as present for week 1 in TAPro, depicted on that student's card in the panel. Details of the marked student is shown in the result message panel. 3. Examples of incorrect `mark` commands to try: -* `mark`: Missing NUSNet ID and week number parameters. -* `mark nn/E6543210 wk/1`: No student with this NUSNet ID. -* `mark wk/1`: Missing the NUSNet ID parameter. -* `mark E0123456 1`: Missing prefix for the NUSNet ID and week number parameters. +* Missing NUSNet ID and week number parameters: +``` +mark +``` + +* No student with this NUSNet ID: +``` +mark nn/E6543210 wk/1 +``` + +* Missing the NUSNet ID parameter: +``` +mark wk/1 +``` + +* Missing prefix for the NUSNet ID and week number parameters: +``` +mark E0123456 1 +```
@@ -1131,9 +1178,12 @@ student with NUSNet ID `E6543210`. -2. Test case: `unmark nn/E0123456 wk/1` +2. Test case: +``` +unmark nn/E0123456 wk/1 +``` -Expected: Student with NUSNet ID `E0123456` is not marked as for week 1 in TAPro, depicted on that student's +Expected: Student with NUSNet ID `E0123456` is not marked as for week 1 in TAPro, depicted on that student's card in the panel. Details of the marked student is shown in the status message. @@ -1141,10 +1191,25 @@ Details of the marked student is shown in the status message. 3. Examples of incorrect `unmark` commands to try: -* `unmark`: Missing NUSNet ID and week number parameters. -* `unmark nn/E6543210 wk/1`: No student with this NUSNet ID. -* `unmark wk/1`: Missing the NUSNet ID parameter. -* `unmark E0123456 1`: Missing prefix for the NUSNet ID and week number parameters. +* Missing NUSNet ID and week number parameters: +``` +unmark +``` + +* No student with this NUSNet ID: +``` +unmark nn/E6543210 wk/1 +``` + +* Missing the NUSNet ID parameter: +``` +unmark wk/1 +``` + +* Missing prefix for the NUSNet ID and week number parameters: +``` +unmark E0123456 1 +```
@@ -1161,7 +1226,10 @@ Details of the marked student is shown in the status message. -2. Test case: `setcrs CS2103` +2. Test case: +``` +setcrs CS2103 +``` @@ -1169,10 +1237,11 @@ Enter `setcrs` followed by a whitespace, followed by a course code in the format in upper or lower case, `YYYY` can be any 4-digit number and `Z` is optional. -Expected: TAPro's main window's title contains the course code `CS2103` provided. +Expected: TAPro's main window's title contains the course code `CS2103` provided.
+{{ newPageBetween }} ### Autocompleting fields @@ -1185,9 +1254,16 @@ Expected: TAPro's main window's title contains the course code `CS2103` provided -2. Test case: Enter `a` and press {{ macros.keyFormat('Tab') }} +2. Test case: +``` +a +``` +Then press {{ macros.keyFormat('Tab') }}. -Expected: The command box input text changes to `addstu`. +Expected: The command box input text changes to: +``` +addstu +``` @@ -1200,9 +1276,16 @@ Expected: The command box input text changes to `addstu`. -2. Test case: Enter `edit 1 m/` and press {{ macros.keyFormat('Tab') }} +2. Test case: +``` +edit 1 m/ +``` +Then press {{ macros.keyFormat('Tab') }}. -Expected: The command box input text changes to `edit 1 m/Computer Science` +Expected: The command box input text changes to: +``` +edit 1 m/Computer Science +```
@@ -1211,7 +1294,10 @@ Expected: The command box input text changes to `edit 1 m/Computer Science` -1. Prerequisites: Previously ran a successful command like `mark nn/E0123456 wk/6`. +1. Prerequisites: Ran the following command as the previous command: +``` +mark nn/E0123456 wk/6 +``` @@ -1220,12 +1306,15 @@ Expected: The command box input text changes to `edit 1 m/Computer Science` 2. Test case: Retrieving a previous command with {{ macros.keyFormat('Up', '') }} key -* After the entering a previous command, the command input box is empty. +* After the entering that previous command, the command input box is empty. * Pressing {{ macros.keyFormat('Up', '') }} will fill the text in the command input box to - the previous command `mark nn/E0123456`! + the previous command: +``` +mark nn/E0123456 wk/6 +``` * You can press {{ macros.keyFormat('Up', '') }} continuously to scroll - through all the previous commands you have entered. + through all the previous (successful) commands you have entered. * Pressing {{ macros.keyFormat('Down', '') }} will scroll back to the more recent commands you have entered. @@ -1233,6 +1322,7 @@ Expected: The command box input text changes to `edit 1 m/Computer Science`
+{{ newPageBetween }} ### Accessing help @@ -1245,9 +1335,12 @@ Expected: The command box input text changes to `edit 1 m/Computer Science` -2. Test case: `help` +2. Test case: +``` +help +``` -Expected: The help window automatically pops up, giving further information about TAPro's commands. +Expected: The help window automatically pops up, giving further information about TAPro's commands.
@@ -1263,9 +1356,12 @@ Expected: The help window automatically pops up, giving further information abou -2. Test case: `clear` +2. Test case: +``` +clear +``` -Expected: TAPro's Contact Book resets, clearing all existing students (if any). +Expected: TAPro's Contact Book resets, clearing all existing students (if any). {{ newPage }}