Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2주차 미션 구현 #9

Open
wants to merge 2 commits into
base: this-is-spear
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 1 addition & 5 deletions src/main/java/baseball/BaseballMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,9 @@ public static void main(String[] args) {
System.out.println("게임을 시작합니다!");
RandomNumbersSpecification randomNumbersSpecification = new RandomNumbersSpecificationApi();
BaseballInputClient baseballInputClient = new BaseballInputClientImpl();

do {
BaseballService baseballService = new BaseballService(randomNumbersSpecification, baseballInputClient);
baseballService.startBaseball();
if (baseballInputClient.command().equals(GameStatus.STOP)) {
break;
}
} while (true);
} while (!baseballInputClient.command().equals(GameStatus.STOP));
}
}
7 changes: 2 additions & 5 deletions src/main/java/baseball/api/BaseballService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import baseball.domain.RandomNumbersSpecification;
import baseball.error.NumberDuplicateException;
import baseball.error.NumberOfInputException;
import baseball.result.Result;
import baseball.domain.Result;

import java.util.List;

Expand Down Expand Up @@ -49,10 +49,7 @@ public Numbers inputNumbers() {
List<Number> request = baseballInputClient.inputNumbers();
try {
return new Numbers(request);
} catch (NumberOfInputException e) {
System.out.println(e.getMessage());
return inputNumbers();
} catch (NumberDuplicateException e) {
} catch (NumberOfInputException | NumberDuplicateException e) {
System.out.println(e.getMessage());
return inputNumbers();
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/baseball/domain/Number.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public class Number {
private static final int MIN_NUMBER = 1;
private static final int MAX_NUMBER = 9;
private int number;
private final int number;

public Number(int number) {
if (number < MIN_NUMBER || number > MAX_NUMBER) {
Expand Down
8 changes: 3 additions & 5 deletions src/main/java/baseball/domain/Numbers.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@

import baseball.error.NumberDuplicateException;
import baseball.error.NumberOfInputException;
import baseball.result.Result;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class Numbers {
private static final int NUMBERS_SIZE = 3;
private List<Number> numbers;
private final List<Number> numbers;

public Numbers(List<Number> numbers) {
if (!Objects.equals(numbers.size(), NUMBERS_SIZE)) {
Expand All @@ -24,8 +23,7 @@ public Numbers(List<Number> numbers) {
}
});

this.numbers = numbers.stream()
.collect(Collectors.toList());
this.numbers = new ArrayList<>(numbers);
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package baseball.result;
package baseball.domain;

import baseball.error.CalculationFailureException;

import java.util.Objects;

public class Result {
private int strike;
private int ball;
private boolean nothing;
private final int strike;
private final int ball;
private final boolean nothing;

public Result(int strike, int ball, boolean nothing) {
if (strike + ball > 3) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ public Numbers storeNumber() {
Set<Number> numbers = new HashSet<>();
do {
numbers.add(new Number(getNumberOne()));
if (numbers.size() == 3) {
break;
}
}while (true);
} while (numbers.size() != 3);
List<Number> numberList =new ArrayList<>(numbers);
return new Numbers(numberList);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/calculaotor/Delimiter.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public enum Delimiter {
MULTIPLICATION("*"),
DIVISION("/");

private String delimiter;
private final String delimiter;

Delimiter(String delimiter) {
this.delimiter = delimiter;
Expand Down
4 changes: 1 addition & 3 deletions src/main/java/calculaotor/StringCalculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@ private Number calculate(String expression) {
}
});

Number number = numbers.stream()
return numbers.stream()
.reduce((number1, number2) -> number1.calculate(delimiter.pollFirst(), number2))
.orElseThrow(RuntimeException::new);

return number;
}

public void printResult() {
Expand Down
10 changes: 5 additions & 5 deletions src/test/java/baseball/api/GameServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
Expand All @@ -21,7 +22,7 @@ class GameServiceTest {
void test1() {
//when & then
assertDoesNotThrow(
() -> baseballService.storeRandomNumbers()
() -> baseballService.storeRandomNumbers()
);
}

Expand All @@ -30,10 +31,9 @@ void test1() {
void test2() {
//given
Numbers numbers = baseballService.storeRandomNumbers();
List<Number> numberList = Arrays.asList(new Number(4), new Number(9), new Number(3));
//when & then
assertThat(numbers.getNumbers().containsAll(
Arrays.asList(new Number(4), new Number(9), new Number(3)))
).isTrue();
assertThat(numbers.getNumbers().containsAll(numberList)).isTrue();

}

Expand All @@ -42,7 +42,7 @@ void test2() {
void test3() {
//given & when & then
assertDoesNotThrow(
() -> baseballService.inputNumbers()
() -> baseballService.inputNumbers()
);
}
}
9 changes: 2 additions & 7 deletions src/test/java/baseball/domain/NumberTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,16 @@ void test1() {
//given
int request = 4;
//when & then
Assertions.assertDoesNotThrow(
() -> new Number(request)
);
Assertions.assertDoesNotThrow(() -> new Number(request));
}


@Test
@DisplayName("Number는 1 이상 9 이하의 자연수 아니면 IllegalArgumentException 예외를 발생한다.")
void test2() {
//given
int request = -1;
//when & then
assertThatThrownBy(
() -> new Number(request)
).isInstanceOf(IllegalArgumentException.class);
assertThatThrownBy(() -> new Number(request)).isInstanceOf(IllegalArgumentException.class);
}

}
25 changes: 12 additions & 13 deletions src/test/java/baseball/domain/NumbersTest.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package baseball.domain;

import baseball.error.NumberOfInputException;
import baseball.result.Result;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand All @@ -23,7 +22,7 @@ void test1() {

//when & then
Assertions.assertAll(
() -> Assertions.assertDoesNotThrow(() -> new Numbers(request))
() -> Assertions.assertDoesNotThrow(() -> new Numbers(request))
);
}

Expand All @@ -36,12 +35,12 @@ void test2() {
Numbers numbers = new Numbers(request);
//then
Assertions.assertAll(
() -> assertThat(
numbers.getNumbers()
.containsAll(
Arrays.asList(new Number(1), new Number(2), new Number(3))
)
).isTrue()
() -> assertThat(
numbers.getNumbers()
.containsAll(
Arrays.asList(new Number(1), new Number(2), new Number(3))
)
).isTrue()
);
}

Expand All @@ -55,9 +54,9 @@ void test3() {
Numbers numbers = new Numbers(request);
//then
Assertions.assertAll(
() -> assertThat(request.contains(numbers.getNumbers().get(0))).isTrue(),
() -> assertThat(request.contains(numbers.getNumbers().get(1))).isTrue(),
() -> assertThat(request.contains(numbers.getNumbers().get(2))).isTrue()
() -> assertThat(request.contains(numbers.getNumbers().get(0))).isTrue(),
() -> assertThat(request.contains(numbers.getNumbers().get(1))).isTrue(),
() -> assertThat(request.contains(numbers.getNumbers().get(2))).isTrue()
);
}

Expand All @@ -68,7 +67,7 @@ void test4() {
List<Number> request = Arrays.asList(new Number(1), new Number(2), new Number(3), new Number(4));
//when & then
assertThatThrownBy(
() -> new Numbers(request)
() -> new Numbers(request)
).isInstanceOf(NumberOfInputException.class);
}

Expand All @@ -83,7 +82,7 @@ void test6() {
Numbers input = new Numbers(inputRequest);
//when & then
assertDoesNotThrow(
() -> store.compareTo(input)
() -> store.compareTo(input)
);
}

Expand Down
7 changes: 4 additions & 3 deletions src/test/java/baseball/result/ResultTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package baseball.result;

import baseball.domain.Result;
import baseball.error.CalculationFailureException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
Expand All @@ -18,7 +19,7 @@ void test1() {
boolean nothing = false;
//when & then
Assertions.assertDoesNotThrow(
() -> new Result(strike, ball, nothing)
() -> new Result(strike, ball, nothing)
);
}

Expand All @@ -32,7 +33,7 @@ void test2() {
boolean nothing = false;
//when & then
assertThatThrownBy(
()-> new Result(strike, ball, nothing)
() -> new Result(strike, ball, nothing)
).isInstanceOf(CalculationFailureException.class);
}

Expand All @@ -45,7 +46,7 @@ void test3() {
boolean nothing = true;
//when & then
assertThatThrownBy(
()-> new Result(strike, ball, nothing)
() -> new Result(strike, ball, nothing)
).isInstanceOf(CalculationFailureException.class);
}

Expand Down
7 changes: 0 additions & 7 deletions src/test/java/calculaotor/StringCalculatorTest.java

This file was deleted.

13 changes: 0 additions & 13 deletions src/test/java/study/StringTest.java

This file was deleted.