# Unit 4 – Basic Practice: TodoList

A to-do list is one of the most common tools people use to stay organised — 
you add tasks as you think of them, remove them when they're done, and 
check what's still left to handle.

## Instructions

### `TodoList`

1. Give the list a title — think about whether a title should be able to 
   change after the list is created.
2. Decide how to store the tasks — can the collection itself be swapped 
   out, or only its contents?
3. Implement `addTask(task)` — add the task to the collection and print 
   `"Added: <task>"`.
4. Implement `removeTask(task)` — remove the task and print 
   `"Removed: <task>"`.
5. Implement `printAll()` — if the list is empty, print 
   `"No tasks in '<title>'."`; otherwise print `"=== <title> ==="` 
   followed by each task numbered from 1.
6. Implement `count()` — return the number of tasks.

### Testing

1. Create `TodoList("Shopping")`.
2. Call `printAll()` — expect `"No tasks in 'Shopping'."`.
3. Call `addTask("Buy milk")` and `addTask("Buy bread")`.
4. Call `printAll()` — expect:
   ```
   === Shopping ===
   1. Buy milk
   2. Buy bread
   ```
5. Call `count()` — expect `2`.
6. Call `removeTask("Buy milk")`, then `printAll()` — only `"Buy bread"` 
   remains.
7. Call `removeTask("Buy bread")`, then `printAll()` — back to the empty 
   message.
