Skip to content

Commit

Permalink
Merge pull request #170 from SunBangjie/fixBug
Browse files Browse the repository at this point in the history
fix OperatingHours bug
  • Loading branch information
SunBangjie authored Apr 6, 2018
2 parents 8f21e02 + 648bc9b commit f5f97bf
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/main/java/seedu/ptman/logic/parser/ParserUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,9 @@ public static OperatingHours parseOperatingHours(String operatingHours) throws I
if (!OperatingHours.isValidOperatingHours(trimmedOperatingHours)) {
throw new IllegalValueException(OperatingHours.MESSAGE_OPERATING_HOUR_CONSTRAINTS);
}
if (!OperatingHours.isValidStartTimeEndTimeOrder(trimmedOperatingHours)) {
throw new IllegalValueException(OperatingHours.MESSAGE_START_END_TIME_CONSTRAINTS);
}
return new OperatingHours(trimmedOperatingHours);
}

Expand Down
12 changes: 12 additions & 0 deletions src/main/java/seedu/ptman/model/outlet/OperatingHours.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class OperatingHours {
public static final String MESSAGE_OPERATING_HOUR_CONSTRAINTS =
"Operating hours must be in the format of START-END where START and END must be in "
+ "the format of hh:mm and in terms of 24 hours. For example, 09:00-22:00";
public static final String MESSAGE_START_END_TIME_CONSTRAINTS = "START time must be before END time.";
public static final String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]";
public static final String OPERATING_HOUR_VALIDATION_REGEX = TIME24HOURS_PATTERN + "-"
+ TIME24HOURS_PATTERN;
Expand All @@ -32,6 +33,7 @@ public class OperatingHours {
public OperatingHours(String operatingHours) {
requireNonNull(operatingHours);
checkArgument(isValidOperatingHours(operatingHours), MESSAGE_OPERATING_HOUR_CONSTRAINTS);
checkArgument(isValidStartTimeEndTimeOrder(operatingHours), MESSAGE_START_END_TIME_CONSTRAINTS);
String[] splitedTime = operatingHours.split("-");
this.startTime = convertStringToLocalTime(splitedTime[0]);
this.endTime = convertStringToLocalTime(splitedTime[1]);
Expand Down Expand Up @@ -63,6 +65,16 @@ public static boolean isValidOperatingHours(String test) {
return test.matches(OPERATING_HOUR_VALIDATION_REGEX);
}

/**
* Returns true if a given string has start time before end time.
*/
public static boolean isValidStartTimeEndTimeOrder(String operatingHours) {
String[] splitedTime = operatingHours.split("-");
LocalTime startTime = convertStringToLocalTime(splitedTime[0]);
LocalTime endTime = convertStringToLocalTime(splitedTime[1]);
return startTime.isBefore(endTime);
}

@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
Expand Down
9 changes: 9 additions & 0 deletions src/test/java/seedu/ptman/logic/parser/ParserUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class ParserUtilTest {
private static final String INVALID_OUTLET_NAME = "Awesome@Outlet";
private static final String INVALID_OUTLET_CONTACT = "+1234";
private static final String INVALID_OPERATING_HOURS = "09:00/18:00";
private static final String INVALID_START_END_TIME = "20:00-10:00";
private static final String INVALID_TIME = "1pm";
private static final String INVALID_CAPACITY = "one";
private static final String VALID_NAME = "Rachel Walker";
Expand Down Expand Up @@ -411,6 +412,14 @@ public void parseOperatingHours_invalidValue_throwsIllegalValueException() {
Optional.of(INVALID_OPERATING_HOURS)));
}

@Test
public void parseOperatingHours_invalidStartEndTimeOrder_throwsIllegalValueException() {
Assert.assertThrows(IllegalValueException.class, () -> ParserUtil.parseOperatingHours(
INVALID_START_END_TIME));
Assert.assertThrows(IllegalValueException.class, () -> ParserUtil.parseOperatingHours(
Optional.of(INVALID_START_END_TIME)));
}

@Test
public void parseOperatingHours_optionalEmpty_returnsOptionalEmpty() throws Exception {
assertFalse(ParserUtil.parseOperatingHours(Optional.empty()).isPresent());
Expand Down
12 changes: 12 additions & 0 deletions src/test/java/seedu/ptman/model/outlet/OperatingHoursTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,18 @@ public void isValidOperatingHours_validOperatingHours_returnsTrue() {
assertTrue(OperatingHours.isValidOperatingHours("08:00-18:00"));
}

@Test
public void isValidStartTimeEndTimeOrder_invalidOrder_returnsFalse() {
assertFalse(OperatingHours.isValidStartTimeEndTimeOrder("22:00-10:00"));
assertFalse(OperatingHours.isValidStartTimeEndTimeOrder("10:00-10:00"));
}

@Test
public void isValidStartTimeEndTimeOrder_validOrder_returnsTrue() {
assertTrue(OperatingHours.isValidStartTimeEndTimeOrder("12:00-20:00"));
assertTrue(OperatingHours.isValidStartTimeEndTimeOrder("12:00-12:30"));
}

@Test
public void convertStringToLocalTime_validInput_returnsLocalTime() {
LocalTime localTime = LocalTime.of(9, 0);
Expand Down

0 comments on commit f5f97bf

Please sign in to comment.