Skip to content

Commit

Permalink
Merge pull request #193 from andlimey/master
Browse files Browse the repository at this point in the history
Fix invalid inputs in command line
  • Loading branch information
ongyz committed Nov 4, 2018
2 parents e65f47a + bcc0fce commit 751400e
Show file tree
Hide file tree
Showing 23 changed files with 62 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ public AddCommand parse(String args) throws ParseException {
Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());
Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());
Set<Subject> subjects = ParserUtil.parseSubjects(argMultimap.getAllValues(PREFIX_SUBJECT));
TuitionTiming tuitionTiming = ParserUtil.parseTuitionTiming
((argMultimap.getValue(PREFIX_DAY_AND_TIME).get()));
TuitionTiming tuitionTiming = ParserUtil.parseTuitionTiming(
argMultimap.getValue(PREFIX_DAY_AND_TIME).get());
Set<Tag> tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));
Person person = new Person(name, phone, email, address, subjects, tuitionTiming, tagList);
return new AddCommand(person);
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/seedu/address/model/person/Name.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
public class Name {

public static final String MESSAGE_NAME_CONSTRAINTS =
"Names should only contain alphanumeric characters and spaces, and it should not be blank";
"Names should only contain alphabetical characters and spaces, and it should not be blank";

/*
* The first character of the address must not be a whitespace,
* otherwise " " (a blank string) becomes a valid input.
*/
public static final String NAME_VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*";
public static final String NAME_VALIDATION_REGEX = "[\\p{Alpha}][\\p{Alpha} ]*";

public final String fullName;

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/seedu/address/model/person/Phone.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ public class Phone {


public static final String MESSAGE_PHONE_CONSTRAINTS =
"Phone numbers should only contain numbers, and it should be at least 3 digits long";
public static final String PHONE_VALIDATION_REGEX = "\\d{3,}";
"Phone numbers should only contain numbers, and it should only contain 8 digits";
public static final String PHONE_VALIDATION_REGEX = "\\d{8}";
public final String value;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,19 @@ public class TuitionTiming {

public static final String MESSAGE_TUITION_TIMING_CONSTRAINTS =
"Tuition Day and Time should not be blank and should be in the format:\n"
+ "1) Day, Time\n"
+ "2) Day Time\n"
+ "Day 12-hr Time\n"
+ "Examples of Valid Input:\n"
+ "Monday, 1:00pm\n"
+ "Monday 1:00pm\n"
+ "Tuesday 1:15AM\n"
+ "Wednesday, 12:30pm\n";
+ "Wednesday 12:30pm\n";
public static final String DAY_REGEX = "^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)";
public static final String TIME_REGEX = "\\d{1,2}[:{1}]\\d{2}(am|pm|AM|PM)$";
public static final String TIME_REGEX = "((1[012]|[0-9]):([0-5][0-9])(am|pm|AM|PM))$";

/**
* The first character of the tuition time and day must not be a whitespace,
* otherwise " " (a blank string) becomes a valid input.
*/
public static final String TUITION_TIMING_VALIDATION_REGEX = DAY_REGEX + ".{1,2}" + TIME_REGEX;
public static final String TUITION_TIMING_VALIDATION_REGEX = DAY_REGEX + " " + TIME_REGEX;

public final DayOfWeek day;
public final String time;
Expand All @@ -55,7 +54,6 @@ public TuitionTiming(String tuitionTiming) {
* Splits the {@code tuitionTiming} string into Day and Time.
*/
private void splitTuitionTiming(String tuitionTiming) {
tuitionTiming = tuitionTiming.replace(",", " ");
String[] tuitionTimingArr = tuitionTiming.split("\\s+");
dayString = tuitionTimingArr[0].trim();
timeString = tuitionTimingArr[1].trim();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<phone>94351253</phone>
<email>alice@example.com</email>
<address>123, Jurong West Ave 6, #08-111</address>
<tuitionTiming>Monday, 6:00pm</tuitionTiming>
<tuitionTiming>Monday 6:00pm</tuitionTiming>
<subjects subjectName="Mathematics" completionRate="0.0"/>
<tagged>friends</tagged>
</persons>
Expand All @@ -17,7 +17,7 @@
<phone>94351253</phone>
<email>alice@example.com</email>
<address>123, Jurong West Ave 6, #08-111</address>
<tuitionTiming>Monday, 6:00pm</tuitionTiming>
<tuitionTiming>Monday 6:00pm</tuitionTiming>
<subjects subjectName="Mathematics" completionRate="0.0"/>
<tagged>friends</tagged>
</persons>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
<!-- Person with invalid email field -->
<persons>
<name>Hans Muster</name>
<phone isPrivate="false">9482424</phone>
<phone isPrivate="false">94824240</phone>
<email isPrivate="false">hans@exam!32ple</email>
<address isPrivate="false">4th street</address>
<tuitionTiming isPrivate="false">Monday, 6:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Monday 6:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Mathematics" completionRate="0.0"/>
</persons>
</TutorHelper>
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
</persons>
<persons>
<name>Elle Meyer</name>
<phone>9482224</phone>
<phone>94822240</phone>
<email>werner@example.com</email>
<address>Michegan ave</address>
<tuitionTiming>Sunday 11:00am</tuitionTiming>
Expand All @@ -74,7 +74,7 @@
</persons>
<persons>
<name>Fiona Kunz</name>
<phone>9482427</phone>
<phone>94824270</phone>
<email>lydia@example.com</email>
<address>little tokyo</address>
<tuitionTiming>Thursday 3:30pm</tuitionTiming>
Expand All @@ -85,7 +85,7 @@
</persons>
<persons>
<name>George Best</name>
<phone>9482442</phone>
<phone>94824420</phone>
<email>anna@example.com</email>
<address>4th street</address>
<tuitionTiming>Friday 5:00pm</tuitionTiming>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- Valid Person -->
<persons>
<name>Hans Muster</name>
<phone isPrivate="false">9482424</phone>
<phone isPrivate="false">94824240</phone>
<email isPrivate="false">hans@example.com</email>
<address isPrivate="false">4th street</address>
</persons>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- Person with invalid name field -->
<persons>
<name>Ha!ns Mu@ster</name>
<phone isPrivate="false">9482424</phone>
<phone isPrivate="false">94824240</phone>
<email isPrivate="false">hans@example.com</email>
<address isPrivate="false">4th street</address>
</persons>
Expand Down
2 changes: 1 addition & 1 deletion src/test/data/XmlUtilTest/invalidPersonField.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<phone>9482asf424</phone>
<email>hans@example</email>
<address>4th street</address>
<tuitionTiming>Monday, 6:00pm</tuitionTiming>
<tuitionTiming>Monday 6:00pm</tuitionTiming>
<subjects subjectName="Mathematics" completionRate="0.0"/>
<tagged>friends</tagged>
<payments>
Expand Down
4 changes: 2 additions & 2 deletions src/test/data/XmlUtilTest/missingPersonField.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Person with missing name field -->
<person>
<phone>9482424</phone>
<phone>94824240</phone>
<email>hans@example</email>
<address>4th street</address>
<tuitionTiming>Monday, 6:00pm</tuitionTiming>
<tuitionTiming>Monday 6:00pm</tuitionTiming>
<subjects subjectName="Mathematics" completionRate="0.0"/>
<tagged>friends</tagged>
<payments>
Expand Down
4 changes: 2 additions & 2 deletions src/test/data/XmlUtilTest/validPerson.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>Hans Muster</name>
<phone>9482424</phone>
<phone>94824240</phone>
<email>hans@example</email>
<address>4th street</address>
<tuitionTiming>Monday, 6:00pm</tuitionTiming>
<tuitionTiming>Monday 6:00pm</tuitionTiming>
<subjects subjectName="Mathematics" completionRate="0.0"/>
<tagged>friends</tagged>
<payments>
Expand Down
30 changes: 15 additions & 15 deletions src/test/data/XmlUtilTest/validTutorHelper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,74 +2,74 @@
<TutorHelper>
<persons>
<name>Hans Muster</name>
<phone isPrivate="false">9482424</phone>
<phone isPrivate="false">94824240</phone>
<email isPrivate="false">hans@example.com</email>
<address isPrivate="false">4th street</address>
<tuitionTiming isPrivate="false">Monday, 6:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Monday 6:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Mathematics" completionRate="0.0"/>
</persons>
<persons>
<name>Ruth Mueller</name>
<phone isPrivate="false">87249245</phone>
<email isPrivate="false">ruth@example.com</email>
<address isPrivate="false">81th street</address>
<tuitionTiming isPrivate="false">Tuesday, 7:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Tuesday 7:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Economics" completionRate="0.0"/>
</persons>
<persons>
<name>Heinz Kurz</name>
<phone isPrivate="false">95352563</phone>
<email isPrivate="false">heinz@example.com</email>
<address isPrivate="false">wall street</address>
<tuitionTiming isPrivate="false">Tuesday, 8:30pm</tuitionTiming>
<tuitionTiming isPrivate="false">Tuesday 8:30pm</tuitionTiming>
<subjects isPrivate="false" subjectName="History" completionRate="0.0"/>
</persons>
<persons>
<name>Cornelia Meier</name>
<phone isPrivate="false">87652533</phone>
<email isPrivate="false">cornelia@example.com</email>
<address isPrivate="false">10th street</address>
<tuitionTiming isPrivate="false">Wednesday, 5:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Wednesday 5:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Mathematics" completionRate="0.0"/>
</persons>
<persons>
<name>Werner Meyer</name>
<phone isPrivate="false">9482224</phone>
<phone isPrivate="false">94822240</phone>
<email isPrivate="false">werner@example.com</email>
<address isPrivate="false">michegan ave</address>
<tuitionTiming isPrivate="false">Thursday, 5:30pm</tuitionTiming>
<tuitionTiming isPrivate="false">Thursday 5:30pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Chemistry" completionRate="0.0"/>
</persons>
<persons>
<name>Lydia Kunz</name>
<phone isPrivate="false">9482427</phone>
<phone isPrivate="false">94824270</phone>
<email isPrivate="false">lydia@example.com</email>
<address isPrivate="false">little tokyo</address>
<tuitionTiming isPrivate="false">Friday, 4:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Friday 4:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Mathematics" completionRate="0.0"/>
</persons>
<persons>
<name>Anna Best</name>
<phone isPrivate="false">9482442</phone>
<phone isPrivate="false">94824420</phone>
<email isPrivate="false">anna@example.com</email>
<address isPrivate="false">4th street</address>
<tuitionTiming isPrivate="false">Saturday, 1:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Saturday 1:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Physics" completionRate="0.0"/>
</persons>
<persons>
<name>Stefan Meier</name>
<phone isPrivate="false">8482424</phone>
<phone isPrivate="false">84824240</phone>
<email isPrivate="false">stefan@example.com</email>
<address isPrivate="false">little india</address>
<tuitionTiming isPrivate="false">Saturday, 3:00pm</tuitionTiming>
<tuitionTiming isPrivate="false">Saturday 3:00pm</tuitionTiming>
<subjects isPrivate="false" subjectName="Mathematics" completionRate="0.0"/>
</persons>
<persons>
<name>Martin Mueller</name>
<phone isPrivate="false">8482131</phone>
<phone isPrivate="false">84821310</phone>
<email isPrivate="false">hans@example.com</email>
<address isPrivate="false">chicago ave</address>
<tuitionTiming isPrivate="false">Sunday, 11:00am</tuitionTiming>
<tuitionTiming isPrivate="false">Sunday 11:00am</tuitionTiming>
<subjects isPrivate="false" subjectName="Chemistry" completionRate="0.0"/>
</persons>
</TutorHelper>
4 changes: 2 additions & 2 deletions src/test/java/seedu/address/commons/util/XmlUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ public class XmlUtilTest {
private static final String INVALID_PHONE = "9482asf424";

private static final String VALID_NAME = "Hans Muster";
private static final String VALID_PHONE = "9482424";
private static final String VALID_PHONE = "94824240";
private static final String VALID_EMAIL = "hans@example";
private static final String VALID_ADDRESS = "4th street";
private static final String VALID_TUITION_TIMING = "Monday, 6:00pm";
private static final String VALID_TUITION_TIMING = "Monday 6:00pm";
private static final List<XmlAdaptedTag> VALID_TAGS = Collections.singletonList(new XmlAdaptedTag("friends"));
private static final List<XmlAdaptedSubject> VALID_SUBJECTS =
Collections.singletonList(new XmlAdaptedSubject(Subject.makeSubject("Mathematics")));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class ParserUtilTest {
private static final String INVALID_TAG = "#friend";

private static final String VALID_NAME = "Rachel Walker";
private static final String VALID_PHONE = "123456";
private static final String VALID_PHONE = "12345678";
private static final String VALID_ADDRESS = "123 Main Street #0505";
private static final String VALID_EMAIL = "rachel@example.com";
private static final String VALID_TAG_1 = "friend";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,10 @@ public void test_nameDoesNotContainKeywords_returnsFalse() {
predicate = new NameContainsKeywordsPredicate(Arrays.asList("Carol"));
assertFalse(predicate.test(new PersonBuilder().withName("Alice Bob").build()));


// Keywords match phone, email and address, but does not match name
predicate = new NameContainsKeywordsPredicate(Arrays.asList("12345", "alice@email.com", "Main", "Street"));
assertFalse(predicate.test(new PersonBuilder().withName("Alice").withPhone("12345")
predicate = new NameContainsKeywordsPredicate(Arrays.asList("12345678", "alice@email.com", "Main", "Street"));
assertFalse(predicate.test(new PersonBuilder().withName("Alice").withPhone("12345678")
.withEmail("alice@email.com").withAddress("Main Street").build()));
}
}
5 changes: 2 additions & 3 deletions src/test/java/seedu/address/model/person/NameTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,11 @@ public void isValidName() {
assertFalse(Name.isValidName(" ")); // spaces only
assertFalse(Name.isValidName("^")); // only non-alphanumeric characters
assertFalse(Name.isValidName("peter*")); // contains non-alphanumeric characters
assertFalse(Name.isValidName("peter the 2nd")); // alphanumeric characters

// valid name
assertTrue(Name.isValidName("peter jack")); // alphabets only
assertTrue(Name.isValidName("12345")); // numbers only
assertTrue(Name.isValidName("peter the 2nd")); // alphanumeric characters
assertTrue(Name.isValidName("Capital Tan")); // with capital letters
assertTrue(Name.isValidName("David Roger Jackson Ray Jr 2nd")); // long names
assertTrue(Name.isValidName("David Roger Jackson Ray Jr")); // long names
}
}
4 changes: 1 addition & 3 deletions src/test/java/seedu/address/model/person/PhoneTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@ public void isValidPhone() {
// invalid phone numbers
assertFalse(Phone.isValidPhone("")); // empty string
assertFalse(Phone.isValidPhone(" ")); // spaces only
assertFalse(Phone.isValidPhone("91")); // less than 3 numbers
assertFalse(Phone.isValidPhone("91")); // less than 8 numbers
assertFalse(Phone.isValidPhone("phone")); // non-numeric
assertFalse(Phone.isValidPhone("9011p041")); // alphabets within digits
assertFalse(Phone.isValidPhone("9312 1534")); // spaces within digits

// valid phone numbers
assertTrue(Phone.isValidPhone("911")); // exactly 3 numbers
assertTrue(Phone.isValidPhone("93121534"));
assertTrue(Phone.isValidPhone("124293842033123")); // long phone numbers
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,12 @@ public void isValidTiming() {
assertFalse(TuitionTiming.isValidTiming("MONDAY 12:00PM")); //day in caps
assertFalse(TuitionTiming.isValidTiming("12:00pm")); // time only
assertFalse(TuitionTiming.isValidTiming("12:00pm Monday")); // wrong format
assertFalse(TuitionTiming.isValidTiming("Monday 13:00pm")); //invalid timing

// valid tuition timing
assertTrue(TuitionTiming.isValidTiming("Monday 12:00pm"));
assertTrue(TuitionTiming.isValidTiming("Saturday 11:00am"));
assertTrue(TuitionTiming.isValidTiming("Tuesday, 5:00PM"));
assertTrue(TuitionTiming.isValidTiming("Sunday, 10:30AM"));
assertTrue(TuitionTiming.isValidTiming("Tuesday 5:00PM"));
assertTrue(TuitionTiming.isValidTiming("Sunday 10:30AM"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class XmlAdaptedPersonTest {
private static final String INVALID_EMAIL = "example.com";
private static final String INVALID_TAG = "#friend";
private static final String INVALID_SUBJECT = "chinese";
private static final String INVALID_TUITION_TIMING = "Frida, 10.00pm";
private static final String INVALID_TUITION_TIMING = "Friday 10.00pm";
private static final String INVALID_MONTH = "16";
private static final String INVALID_AMOUNT = "$200";
private static final String INVALID_YEAR = "$$22";
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/seedu/address/testutil/PersonBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class PersonBuilder {
public static final String DEFAULT_EMAIL = "alice@example.com";
public static final String DEFAULT_ADDRESS = "123, Jurong West Ave 6, #08-111";
public static final String DEFAULT_SUBJECT = "Chemistry";
public static final String DEFAULT_TUITION_TIMING = "Monday, 6:00pm";
public static final String DEFAULT_TUITION_TIMING = "Monday 6:00pm";

private Name name;
private Phone phone;
Expand Down

0 comments on commit 751400e

Please sign in to comment.