Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
c811e2b
feat: String 클래스에 대한 학습 테스트
Livenow14 Feb 3, 2021
19ac667
feat: Set Collection에 대한 학습 테스트
Livenow14 Feb 3, 2021
f336109
docs: 문자열 계산기 요구사항 정리
Livenow14 Feb 3, 2021
1b2447b
feat: null 또는 반문자가 들어올 시 0을 반환한다
Livenow14 Feb 3, 2021
73a50a5
feat: 숫자 하나를 문자열로 입력할 경우 해당 숫자를 반환한다
Livenow14 Feb 3, 2021
48b5b7d
feat: 쉼표구분자
Livenow14 Feb 3, 2021
1af69a3
feat: 쉼표 혹은 콜론구분자
Livenow14 Feb 3, 2021
78d3eb7
feat: 커스텀 구분자 지정
Livenow14 Feb 3, 2021
042b56d
feat: 예외 처리 구현
Livenow14 Feb 3, 2021
436eed1
feat: StringCalulator클래스 main패키지로 이동
Livenow14 Feb 3, 2021
9c0733a
refactor: 메소드 길이, 역할 수정
Livenow14 Feb 3, 2021
39b7eb7
refactor: Code Convention
Livenow14 Feb 3, 2021
d7590ac
docs: 자동차 경주 구현할 기능 목록 정리
Livenow14 Feb 3, 2021
a99f843
feat: 자동차 객체 생성시 이름 유효성 체크
Livenow14 Feb 3, 2021
ba3fd5c
feat: 쉼표를 기준으로 구분된 문자열을 받으면 Cars를 생성한다
Livenow14 Feb 4, 2021
bc4eae5
feat: 쉼표가 아닌 다른 구분자가 들어오면 에러가 발생한다
Livenow14 Feb 4, 2021
518b49a
feat: 전진조건에 맞을 경우 Car객체의 포지션이 증가한다
Livenow14 Feb 4, 2021
f64324e
feat: 랜덤값을 생성하는 객체 구현
Livenow14 Feb 4, 2021
51d30d5
feat: Cars에 속한 자동차 객체를 파라미터값에 의해 움직이게 하는 기능 구현
Livenow14 Feb 4, 2021
cb0fb0c
feat: 게임 시도 횟수 입력 구현
Livenow14 Feb 4, 2021
b10a043
feat: 게임이 한번 실행될때 tryCount가 줄어든다.
Livenow14 Feb 4, 2021
81eb58b
feat: 시도 횟수가 양수가 아니면 에러가 발생한다.
Livenow14 Feb 4, 2021
350f4fe
feat: Car객체가 하나일 경우 에러가 발생한다.
Livenow14 Feb 4, 2021
a731e2b
feat: 우승자 탐색 서비스 구현 완료
Livenow14 Feb 4, 2021
7a80bfa
feat: 각 회차별 실행 결과를 출력한다.
Livenow14 Feb 4, 2021
38be250
feat: 가장 멀리 이동한 1명 이상의 우승자 명단을 탐색해 출력한다.
Livenow14 Feb 4, 2021
69419e6
refactor: test 클래스 내의 클래스 삭제
Livenow14 Feb 4, 2021
b6fc770
refactor: CarDto 객체 생성 방식 변경
Livenow14 Feb 4, 2021
57b1c8e
refactor: GameScreen 네이밍 수정
Livenow14 Feb 4, 2021
0be9843
Merge pull request #1 from Livenow14/livenow14
xlffm3 Feb 4, 2021
cf45d87
style: 포맷을 통일한다
xlffm3 Feb 5, 2021
5d839e5
refactor: Screen 역할을 InputView와 OutputView로 이동
xlffm3 Feb 5, 2021
40efac1
style: 패키지명 camel case 제거
xlffm3 Feb 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: 전진조건에 맞을 경우 Car객체의 포지션이 증가한다
  • Loading branch information
Livenow14 committed Feb 4, 2021
commit 518b49a00ca5ebc8f4861b6ec7d9bdfe07769ea8
2 changes: 1 addition & 1 deletion src/main/java/racing/docs/요구사항.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
- [ ] 최소 1회 이상의 이동 횟수를 입력받는다.
- [ ] 음수, 실수, 문자열 등 유효하지 않은 값을 입력받으면 에러가 발생한다.
- [ ] 각 자동차들은 이동 횟수만큼 전진할 수 있는 기회를 부여받는다.
- [ ] 전진 조건은 0에서 9 사이의 random 값을 구한 후 random 값이 4 이상인 경우이다.
- [x] 전진 조건은 0에서 9 사이의 random 값을 구한 후 random 값이 4 이상인 경우이다.
- [ ] 각 회차별 실행 결과를 출력한다.
- [ ] 가장 멀리 이동한 1명 이상의 우승자 명단을 탐색해 출력한다.
34 changes: 32 additions & 2 deletions src/test/java/racing/domain/CarTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,27 @@

import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.NullAndEmptySource;
import org.junit.jupiter.params.provider.ValueSource;

import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;

import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.*;

public class CarTest {

private static Stream<Arguments> moveTest() {
return Stream.of(Arguments.of(1, false),
Arguments.of(2, false),
Arguments.of(4, true),
Arguments.of(9, true));
}

@Test
void Car_유효한_이름_정상_생성된다() {
assertThatCode(() -> {
Expand All @@ -30,13 +39,26 @@ public class CarTest {
}).isInstanceOf(IllegalArgumentException.class);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

예외를 던질 때 예외 상황에 맞는 메시지를 담아주면, 아래와 같이 더 정밀하게 검증할 수 있겠죠?

assertThatThrownBy(() -> {
    // ...
}).isInstanceOf(IllegalArgumentException.class)
  .hasMessageContaining("이름은 5자 이하만 가능합니다.");

}

@ParameterizedTest
@MethodSource("moveTest")
void Car_값이_4_이상일때_이동한다(int randomNumber, boolean isMoved) {
Car pobiCar = new Car("pobi");
boolean moveResult = pobiCar.move(randomNumber);

assertThat(moveResult).isEqualTo(isMoved);
}

private static class Car {
private static final Pattern PATTERN = Pattern.compile("[a-zA-Z]{1,5}");
private static final int MINIMUM_MOVE_NUMBER = 4;
private static final int DEFAULT_POSITION = 0;

private final String name;
private int position;

public Car(String name) {
this.name = name;
this.position = DEFAULT_POSITION;
validateName();
}

Expand All @@ -49,5 +71,13 @@ private void validateName() {
throw new IllegalArgumentException();
}
}

public boolean move(int randomNumber) {
if (randomNumber >= MINIMUM_MOVE_NUMBER) {
this.position++;
return true;
}
return false;
}
}
}