diff --git a/README.md b/README.md
index c9129c05..ee1f9f0c 100644
--- a/README.md
+++ b/README.md
@@ -32,10 +32,11 @@ Please refer to the [Setting up](#setting-up) section to learn how to set up the
**Using Command Line**
-1. Open the `Terminal`/`Command Prompt`
-2. `cd` into the project's `bin` directory
-3. Type `java seedu.addressbook.AddressBook`, then Enter to execute
-4. Command above enables you to interact with the program through the CLI
+1. 'Build' the project using Eclipse
+2. Open the `Terminal`/`Command Prompt`
+3. `cd` into the project's `bin` directory
+4. Type `java seedu.addressbook.AddressBook`, then Enter to execute
+5. Now you can interact with the program through the CLI
#### Viewing help : `help`
Format: `help`
@@ -45,7 +46,7 @@ Format: `help`
> Adds a person to the address book
Format: `add NAME p/PHONE_NUMBER e/EMAIL`
->Words in `UPPER_CASE` are the parameters
+> Words in `UPPER_CASE` are the parameters
Phone number and email can be in any order but the name must come first.
Examples:
@@ -95,7 +96,6 @@ Format: `clear`
#### Exiting the program : `exit`
Format: `exit`
-
#### Saving the data
Address book data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
@@ -144,9 +144,14 @@ You can use the `diff` command in place of the `FC` command.
**Troubleshooting tests**
-* Differences between line endings
-* Diffing the two files
-* Failure during first run
+* Problem: How do I examine the exact differences between `actual.txt` and `expected.txt`?
+ Solution: You can use a diff/merge tool with a GUI e.g. WinMerge (on Windows)
+* Problem: The two files look exactly the same, but the test script reports errors.
+ Solution: This can happen because the line endings used by Windows is different from Unix-based
+ OSes. Convert the actual.txt to the format used by your OS using some [utility](https://kb.iu.edu/d/acux).
+* Problem: Test fails during the very first time.
+ Solution: The output of the very first test run could be slightly different because the program
+ creates a new storage file. Tests should pass from the 2nd run onwards.
-----------------------------------------------------------------------------------------------------
# Learning outcomes
@@ -160,8 +165,8 @@ corresponding exercises.
1. Go to the 'Releases' tab, download the `src.zip` from the latest release, and unzip content.
2. Clone this repo (if you know how to use Git) to your Computer.
* [Set up](#setting-up) the project in Eclipse.
-* [Run the program](#running-the-program) from within Eclipse, and try the features described in
- the [Usage](#usage) section
+* [Run the program](#starting-the-program) from within Eclipse, and try the features described in
+ the [User guide](#user-guide) section
### Navigate code efficiently `[LO-CodeNavigation]`
The `AddressBook.java` code is too big to navigate by scrolling.
@@ -182,7 +187,7 @@ For example, learn the shortcuts to,
### Use a debugger `[LO-Debugging]`
##### Ex : Learn to step through code using the debugger
-Learn Eclipse debugging features.
+Learn Eclipse debugging features from online resources.
Demonstrate your debugging skills using the AddressBook code.
Here are some things you can do in your demonstration.
@@ -198,6 +203,7 @@ Here are some things you can do in your demonstration.
##### Ex : Practice automated CLI testing
* Run the tests as explained in the [Testing](#testing) section.
+* Examine the test script to understand how the script works.
* Add a few more tests to the `input.txt`. Run the tests. It should fail.
Modify `expected.txt` to make the tests pass again.
* Edit the `AddressBook.java` to modify the behavior slightly and modify tests to match.
@@ -212,6 +218,7 @@ Resources: [ArrayList class tutorial (from javaTpoint.com)](http://www.javatpoin
##### Ex: Use `HashMap`
Currently, a person's details are stored as a `String[]`. Modify the code to use a `HashMap` instead.
+Some sample code snippet given below.
```java
private static final PERSON_PROPERTY_NAME = "name";
private static final PERSON_PROPERTY_EMAIL = "email";
@@ -250,7 +257,7 @@ Compare the code with and without the varargs feature.
### Abstract methods well `[LO-MethodAbstraction]`
Notice how most of the methods in `AddressBook` are short, focused, and written at a single
-level of abstraction (cf [SLAP](http://programmers.stackexchange.com/questions/110933/how-to-determine-the-levels-of-abstraction))
+level of abstraction (_cf_ [SLAP](http://programmers.stackexchange.com/questions/110933/how-to-determine-the-levels-of-abstraction))
Here is an example.
```java
@@ -303,15 +310,27 @@ See if you can find where the code contradicts best practices mentioned
programmer (but a very bad programmer :-).
* In particular, inlining methods can worsen the code quality fast.
+### Work in a 1kLoc code base`[LO-1KLoC]`
+
+#### Ex : Enhance the code
+Enhance the Addressbook to prove that you can successfully work in a codebase of 1KLoC.
+
+Some suggested enhancements:
+
+* Make the `find` command case insensitive e.g. `find john` should match `John`
+* Add a `sort` command that can list the persons in alphabetical order
+* Add an `edit` command that can edit properties of a specific person
-----------------------------------------------------------------------------------------------------
# Contributors
+
* [Jeffry Hartanto](http://github.com/jeffryhartanto) : Created a ToDo app that was used as the basis for this code.
* [Leow Yijin](http://github.com/yijinl) : Main developer for the first version of the AddressBook-level1
* [Damith C. Rajapakse](http://www.comp.nus.edu.sg/~damithch) : Project Advisor
-----------------------------------------------------------------------------------------------------
# Contact us
+
* **Bug reports, Suggestions** : Post in our [issue tracker](https://github.com/se-edu/addressbook-level1/issues)
if you noticed bugs or have suggestions on how to improve.
* **Contributing** : We welcome pull requests.
\ No newline at end of file
diff --git a/test/runtests.bat b/test/runtests.bat
index 4b8e5fa9..2ee2491c 100644
--- a/test/runtests.bat
+++ b/test/runtests.bat
@@ -1,3 +1,9 @@
+@ECHO OFF
+REM compile the code into the bin folder
javac ..\src\seedu\addressbook\Addressbook.java -d ..\bin
+
+REM run the program, feed commands from input.txt file and redirect the output to the actual.txt
java -classpath ..\bin seedu.addressbook.AddressBook < input.txt > actual.txt
+
+REM compare the output to the expected output
FC actual.txt expected.txt
\ No newline at end of file