Skip to content

Commit

Permalink
feat(InputValidator): ,로 이름을 나누어 입력하지 않은 경우 예외 발생
Browse files Browse the repository at this point in the history
  • Loading branch information
homebdy committed Sep 8, 2023
1 parent 61a169a commit 068ebe5
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

- [x] 이름 입력 안내 출력
- [x] 이름 입력
- [ ] `,`로 이름을 나누어 입력하지 않은 경우 예외 발생
- [x] `,`로 이름을 나누어 입력하지 않은 경우 예외 발생
- [x] 이름이 5글자가 넘을 경우 예외 발생
- [x] 횟수 입력 안내 출력
- [x] 횟수 입력
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/racingcar/constant/ExceptionMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

public enum ExceptionMessage {

INVALID_LENGTH("이름은 5글자 이하로 입력해야합니다.");
INVALID_LENGTH("이름은 5글자 이하로 입력해야합니다."),
INCORRECT_DELIMITER("','로 구분하여 입력해야합니다.");

private static final String PREFIX = "[ERROR] ";
private final String message;
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/racingcar/validator/InputValidator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package racingcar.validator;

import racingcar.constant.ExceptionMessage;

import java.util.regex.Pattern;

public class InputValidator {

private static final String DELIMITER_REGEXP = "^[a-zA-Zㄱ-힣0-9,]*$";

public void validateDelimiter(String input) {
if (!Pattern.matches(DELIMITER_REGEXP, input)) {
ExceptionMessage exceptionMessage = ExceptionMessage.INCORRECT_DELIMITER;
throw new IllegalArgumentException(exceptionMessage.toString());
}
}
}
4 changes: 4 additions & 0 deletions src/main/java/racingcar/view/InputView.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import camp.nextstep.edu.missionutils.Console;
import racingcar.domain.Name;
import racingcar.validator.InputValidator;

import java.util.Arrays;
import java.util.List;
Expand All @@ -11,8 +12,11 @@ public class InputView {

private static final String NAMES_REGEX = ",";

private final InputValidator inputValidator = new InputValidator();

public List<Name> readNames() {
String names = Console.readLine();
inputValidator.validateDelimiter(names);
return Arrays.stream(names.split(NAMES_REGEX))
.map(Name::new)
.collect(Collectors.toList());
Expand Down

0 comments on commit 068ebe5

Please sign in to comment.