Skip to content

Commit 143213d

Browse files
committed
feat: 저장소 구현체, 메시지를 담을 클래스 구현
1 parent 51355a2 commit 143213d

File tree

4 files changed

+51
-5
lines changed

4 files changed

+51
-5
lines changed

calculator/src/main/java/com/wonu606/calculator/CalculatorApp.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import com.wonu606.app.App;
44
import com.wonu606.calculator.storage.Persistence;
5+
import com.wonu606.calculator.storage.ResultStore;
56
import com.wonu606.calculator.strategy.Strategy;
67
import com.wonu606.io.Input;
78
import com.wonu606.io.Print;
9+
import com.wonu606.util.Message;
810
import java.io.IOException;
911
import java.util.ArrayList;
1012
import java.util.List;
@@ -13,7 +15,7 @@
1315
public class CalculatorApp implements App {
1416

1517
private final List<Strategy> strategies = new ArrayList<>();
16-
private final Persistence store;
18+
private final Persistence store = new ResultStore();
1719
Input input;
1820
Print printer;
1921

@@ -36,7 +38,7 @@ public void execute(Input input, Print printer) throws IOException {
3638
Optional.ofNullable(strategies.get(selection - 1));
3739
selectedStrategy.ifPresentOrElse(
3840
strategy -> strategy.execute(input, printer, store),
39-
() -> new IllegalArgumentException("잘못된 입력입니다."));
41+
() -> new IllegalArgumentException(Message.INVALID_NUMBER));
4042
}
4143
}
4244
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.wonu606.calculator.storage;
2+
3+
import com.wonu606.calculator.model.CalculationResult;
4+
import com.wonu606.util.Message;
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.List;
8+
9+
public class ResultStore implements Persistence {
10+
11+
private final List<CalculationResult> store = new ArrayList<>();
12+
13+
@Override
14+
public void saveResult(CalculationResult calculationResult) {
15+
store.add(calculationResult);
16+
}
17+
18+
@Override
19+
public CalculationResult findResult(int sequence) {
20+
try {
21+
return store.get(sequence - 1);
22+
} catch (IndexOutOfBoundsException exception) {
23+
throw new IllegalArgumentException(Message.INVALID_ORDER);
24+
}
25+
}
26+
27+
@Override
28+
public List<CalculationResult> findAllResult() {
29+
return new ArrayList<>(store);
30+
}
31+
32+
@Override
33+
public void clear() {
34+
store.clear();
35+
}
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.wonu606.util;
2+
3+
public abstract class Message {
4+
public static final String INVALID_ORDER = "잘못된 순번입니다.";
5+
public static final String INVALID_NUMBER = "잘못된 번호입니다.";
6+
}

calculator/src/test/java/com/wonu606/storage/ResultStoreTest.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import com.wonu606.calculator.model.CalculationResult;
77
import com.wonu606.calculator.storage.Persistence;
8+
import com.wonu606.calculator.storage.ResultStore;
9+
import com.wonu606.util.Message;
810
import java.util.ArrayList;
911
import java.util.List;
1012
import org.junit.jupiter.api.BeforeEach;
@@ -13,7 +15,7 @@
1315

1416
public class ResultStoreTest {
1517

16-
private Persistence store;
18+
private Persistence store = new ResultStore();
1719

1820
@BeforeEach
1921
void setUp() {
@@ -49,7 +51,7 @@ void testFindNumberLessThan1() {
4951

5052
assertThatThrownBy(() -> store.findResult(0))
5153
.isInstanceOf(IllegalArgumentException.class)
52-
.hasMessageContaining("잘못된 순번입니다.");
54+
.hasMessageContaining(Message.INVALID_ORDER);
5355
}
5456

5557
@Test
@@ -60,7 +62,7 @@ void testFindNumberMoreThanSize() {
6062

6163
assertThatThrownBy(() -> store.findResult(store.findAllResult().size() + 1))
6264
.isInstanceOf(IllegalArgumentException.class)
63-
.hasMessageContaining("잘못된 순번입니다.");
65+
.hasMessageContaining(Message.INVALID_ORDER);
6466
}
6567

6668
@Test

0 commit comments

Comments
 (0)