From d06f6fddcc9b24e37b578d092c2cc454e16ca7c9 Mon Sep 17 00:00:00 2001 From: HQkim Date: Tue, 20 Dec 2022 10:33:25 +0900 Subject: [PATCH 1/9] =?UTF-8?q?docs:=20=EA=B5=AC=ED=98=84=ED=95=A0=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index fcf3f057..130bee6a 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,22 @@ ## 과제 제출 과정 * [과제 제출 방법](https://github.com/next-step/nextstep-docs/tree/master/ent-precourse) + +## 구현할 기능 목록 + +1. 컴퓨터가 1~9 사이의 서로 다른 3개의 수를 랜덤으로 선택 + +2. 플레이어가 수 3개를 입력 + +3. 플레이어의 수와 컴퓨터의 수로 점수를 계산 + + - 컴퓨터의 수가 425 일 때, 플레이어 수가 123 이라면 1스트라이크 456이면 1스트라이크 1볼 789라면 낫싱 + +4. 점수에 따라 결과를 출력 + +5. 모두 맞췄을 경우 처리 + + - 게임을 새로 하려면 1, 게임을 종료 하려면 2 + - 1을 누르면 컴퓨터가 랜덤수 3개를 추출하는 메소드(1번)가 다시 실행 + + From 9f1ed7d038b9902f51f2cedbda8ff54ec2b20a22 Mon Sep 17 00:00:00 2001 From: HQkim Date: Tue, 20 Dec 2022 13:10:03 +0900 Subject: [PATCH 2/9] =?UTF-8?q?test:=20String=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/StringTest.java | 42 +++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/test/java/study/StringTest.java b/src/test/java/study/StringTest.java index 43e47d90..8f1f38b9 100644 --- a/src/test/java/study/StringTest.java +++ b/src/test/java/study/StringTest.java @@ -1,13 +1,51 @@ package study; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.*; public class StringTest { @Test + @DisplayName("String 치환") void replace() { String actual = "abc".replace("b", "d"); assertThat(actual).isEqualTo("adc"); } + + @Test + @DisplayName("String \',\'로 split") + void split() { + String[] actual = "1,2".split(","); + assertThat(actual).containsExactly("1", "2"); + } + + @Test + @DisplayName("String 문자 하나일때 split") + void splitOne() { + String[] actual = "1".split(","); + assertThat(actual).containsExactly("1"); + } + + @Test + @DisplayName("String 앞뒤 자르기") + void splitBracket() { + String actual = "(1,2)".substring(1, 4); + assertThat(actual).isEqualTo("1,2"); + } + + @Test + @DisplayName("String 인덱스 접근") + void getChar() { + char actual = "abc".charAt(1); + assertThat(actual).isEqualTo('b'); + } + + @Test + @DisplayName("String 인덱스 벗어날 때 예외 처리") + void getCharException() { + assertThatExceptionOfType(IndexOutOfBoundsException.class) + .isThrownBy(() -> { + char actual = "abc".charAt(3); + }).withMessageMatching("Index \\d+ out of bounds for length \\d+"); + } } From 36c9d0088c7f1c52a15495e9fcd6401e8da132b7 Mon Sep 17 00:00:00 2001 From: HQkim Date: Tue, 20 Dec 2022 13:10:45 +0900 Subject: [PATCH 3/9] =?UTF-8?q?test:=20Set=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/study/SetTest.java | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/test/java/study/SetTest.java diff --git a/src/test/java/study/SetTest.java b/src/test/java/study/SetTest.java new file mode 100644 index 00000000..371fa814 --- /dev/null +++ b/src/test/java/study/SetTest.java @@ -0,0 +1,45 @@ +package study; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.HashSet; +import java.util.Set; + +import static org.assertj.core.api.Assertions.*; +public class SetTest { + private Set numbers; + + @BeforeEach + void setUp() { + numbers = new HashSet<>(); + numbers.add(1); + numbers.add(2); + numbers.add(2); + numbers.add(3); + } + + @Test + @DisplayName("Set의 크기") + void setSize() { + assertThat(numbers.size()).isEqualTo(3); + } + + @ParameterizedTest + @ValueSource(ints = {1, 2, 3}) + @DisplayName("Set에 값이 존재하는지 확인") + void setContain(int input) { + assertThat(numbers).contains(input); + } + + @ParameterizedTest + @CsvSource(value = {"1:true", "2:true", "3:true", "4:false", "5:false"}, delimiter = ':') + @DisplayName("Set에 포함되면 true, 안되면 false") + void setContainTrueOrFalse(int input, boolean expected) { + assertThat(numbers.contains(input)).isEqualTo(expected); + } +} From 9a214263fc14923ec74d21e8e48c1f4dd3d3d9d9 Mon Sep 17 00:00:00 2001 From: HQkim Date: Tue, 20 Dec 2022 23:58:39 +0900 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20=EC=BB=B4=ED=93=A8=ED=84=B0=203?= =?UTF-8?q?=EA=B0=9C=20=EB=9E=9C=EB=8D=A4=EC=88=98=EC=84=A0=ED=83=9D=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Computer.java | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/java/Computer.java diff --git a/src/main/java/Computer.java b/src/main/java/Computer.java new file mode 100644 index 00000000..e6273ed5 --- /dev/null +++ b/src/main/java/Computer.java @@ -0,0 +1,30 @@ +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +public class Computer { + private Integer[] randomNumbers = new Integer[3]; + + Computer() { + resetRandomNumbers(); + } + + public Integer[] getRandomNumbers() { + return randomNumbers; + } + + private void resetRandomNumbers() { + randomNumbers = getThreeUniqueRandomNumbers(); + } + public Integer[] getThreeUniqueRandomNumbers() { + Set numberSet = new HashSet<>(); + while (numberSet.size() < 3) { + Double d = Math.random() * 9 + 1; + numberSet.add(d.intValue()); + } + Integer[] numbers = numberSet.toArray(new Integer[0]); + Collections.shuffle(Arrays.asList(numbers)); + return numbers; + } +} From 0a31e420bfce7010573a34fe5132d722a359ef58 Mon Sep 17 00:00:00 2001 From: HQkim Date: Wed, 21 Dec 2022 00:32:00 +0900 Subject: [PATCH 5/9] =?UTF-8?q?feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=EC=88=98=203=EA=B0=9C=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/View.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/View.java diff --git a/src/main/java/View.java b/src/main/java/View.java new file mode 100644 index 00000000..77cdc507 --- /dev/null +++ b/src/main/java/View.java @@ -0,0 +1,18 @@ +import java.util.Scanner; + +public class View { + private Scanner sc = new Scanner(System.in); + + public Integer[] getPlayerInput() { + System.out.println("숫자를 입력해주세요 : "); + String input = sc.nextLine(); + String[] numbersInString = input.split(""); + Integer[] numbers = new Integer[3]; + for (int i = 0; i < 3; i++) { + numbers[i] = Integer.parseInt(numbersInString[i]); + } + return numbers; + } + + +} From 129146d310372cf89f5c7ad166df7ff318819644 Mon Sep 17 00:00:00 2001 From: HQkim Date: Wed, 21 Dec 2022 01:32:15 +0900 Subject: [PATCH 6/9] =?UTF-8?q?feat:=20=ED=94=8C=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=EC=88=98=EC=99=80=20=EC=BB=B4=ED=93=A8=ED=84=B0=20?= =?UTF-8?q?=EC=88=98=EB=A1=9C=20=EC=A0=90=EC=88=98=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Computer 클래스 내 변수명 변경 Player 클래스 추가 BaseballGame, Main 클래스 추가 --- src/main/java/BaseballGame.java | 15 +++++++++++++++ src/main/java/Computer.java | 34 ++++++++++++++++++++++++++------- src/main/java/Main.java | 11 +++++++++++ src/main/java/Player.java | 13 +++++++++++++ src/main/java/View.java | 1 - 5 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 src/main/java/BaseballGame.java create mode 100644 src/main/java/Main.java create mode 100644 src/main/java/Player.java diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java new file mode 100644 index 00000000..8ee54915 --- /dev/null +++ b/src/main/java/BaseballGame.java @@ -0,0 +1,15 @@ +import java.util.Locale; + +public class BaseballGame { + private View view = new View(); + private Computer computer = new Computer(); + private Player player = new Player(); + private boolean isRun = true; + public void run() { + while (isRun) { + player.setNumbers(view.getPlayerInput()); + int[] scores = computer.calculateScores(player.getNumbers()); + view.printScore(scores); + } + } +} diff --git a/src/main/java/Computer.java b/src/main/java/Computer.java index e6273ed5..a50d730a 100644 --- a/src/main/java/Computer.java +++ b/src/main/java/Computer.java @@ -4,18 +4,18 @@ import java.util.Set; public class Computer { - private Integer[] randomNumbers = new Integer[3]; + private Integer[] numbers = new Integer[3]; Computer() { resetRandomNumbers(); } - public Integer[] getRandomNumbers() { - return randomNumbers; + public Integer[] getNumbers() { + return numbers; } private void resetRandomNumbers() { - randomNumbers = getThreeUniqueRandomNumbers(); + numbers = getThreeUniqueRandomNumbers(); } public Integer[] getThreeUniqueRandomNumbers() { Set numberSet = new HashSet<>(); @@ -23,8 +23,28 @@ public Integer[] getThreeUniqueRandomNumbers() { Double d = Math.random() * 9 + 1; numberSet.add(d.intValue()); } - Integer[] numbers = numberSet.toArray(new Integer[0]); - Collections.shuffle(Arrays.asList(numbers)); - return numbers; + Integer[] randomNumbers = numberSet.toArray(new Integer[0]); + Collections.shuffle(Arrays.asList(randomNumbers)); + return randomNumbers; + } + + public int[] calculateScores(Integer[] playerNumbers) { + int strikeCount = 0; + int ballCount = 0; + for (int i = 0; i < 3; i++) { + strikeCount += checkStrike(i, playerNumbers[i]); + ballCount += checkBall(i, playerNumbers[i]); + } + return new int[] {strikeCount, ballCount}; + } + + public int checkStrike(int idx, Integer number) { + return number.equals(numbers[idx]) ? 1 : 0; + } + + public int checkBall(int idx, Integer playerNumbers) { + if (numbers[(idx+1)%3].equals(playerNumbers)) return 1; + if (numbers[(idx+2)%3].equals(playerNumbers)) return 1; + return 0; } } diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 00000000..9b3a9dc6 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,11 @@ + +public class Main { + + public static void main(String args[]) { + BaseballGame baseballGame = new BaseballGame(); + baseballGame.run(); + } + + + +} diff --git a/src/main/java/Player.java b/src/main/java/Player.java new file mode 100644 index 00000000..69430247 --- /dev/null +++ b/src/main/java/Player.java @@ -0,0 +1,13 @@ +public class Player { + private Integer[] numbers = new Integer[3]; + public Integer[] getNumbers() { + return numbers; + } + public void setNumbers(Integer[] inputNumbers) { + numbers = inputNumbers; + } + + + + +} diff --git a/src/main/java/View.java b/src/main/java/View.java index 77cdc507..b67be474 100644 --- a/src/main/java/View.java +++ b/src/main/java/View.java @@ -14,5 +14,4 @@ public Integer[] getPlayerInput() { return numbers; } - } From 07123135d756fd8ba8e821ed94ec4b4a9a2c5e95 Mon Sep 17 00:00:00 2001 From: HQkim Date: Wed, 21 Dec 2022 01:41:51 +0900 Subject: [PATCH 7/9] =?UTF-8?q?feat:=20=EC=A0=90=EC=88=98=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=9D=BC=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/View.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/View.java b/src/main/java/View.java index b67be474..b23d3e90 100644 --- a/src/main/java/View.java +++ b/src/main/java/View.java @@ -14,4 +14,12 @@ public Integer[] getPlayerInput() { return numbers; } + public void printScore(int[] scores) { + String strike = ""; + String ball = ""; + if (scores[0] != 0) strike = scores[0] + "스트라이크"; + if (scores[1] != 0) ball = scores[1] + "볼"; + if (scores[0]+scores[1] != 0) System.out.println(strike + " " + ball); + if (scores[0]+scores[1] == 0) System.out.println("낫싱"); + } } From 43b58c803ff68aa97886e3eb3c78c7128e1f7ccb Mon Sep 17 00:00:00 2001 From: HQkim Date: Wed, 21 Dec 2022 02:39:35 +0900 Subject: [PATCH 8/9] =?UTF-8?q?feat:=20=EB=AA=A8=EB=91=90=20=EB=A7=9E?= =?UTF-8?q?=EC=B7=84=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 입력을 Scanner에서 BufferedReader로 변경 --- src/main/java/BaseballGame.java | 30 ++++++++++++++++++++++++++++-- src/main/java/Computer.java | 2 +- src/main/java/Main.java | 3 --- src/main/java/View.java | 23 +++++++++++++++++------ 4 files changed, 46 insertions(+), 12 deletions(-) diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java index 8ee54915..7c752418 100644 --- a/src/main/java/BaseballGame.java +++ b/src/main/java/BaseballGame.java @@ -1,4 +1,3 @@ -import java.util.Locale; public class BaseballGame { private View view = new View(); @@ -7,9 +6,36 @@ public class BaseballGame { private boolean isRun = true; public void run() { while (isRun) { - player.setNumbers(view.getPlayerInput()); + Integer[] numbers = computer.getNumbers(); + System.out.println(""+numbers[0]+numbers[1]+numbers[2]); + try { + player.setNumbers(view.getPlayerInput()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } int[] scores = computer.calculateScores(player.getNumbers()); view.printScore(scores); + isRun = checkIsRun(scores); } } + + public boolean checkIsRun(int[] scores) { + if (scores[0] != 3) return true; + try { + if (scores[0] == 3) return checkIsFinish(view.getPlayerRetryChoice()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return false; + } + + private boolean checkIsFinish(boolean playerRetryChoice) { + if (playerRetryChoice == true) { + computer.resetRandomNumbers(); + return true; + } + + return false; + } + } diff --git a/src/main/java/Computer.java b/src/main/java/Computer.java index a50d730a..2ad89d75 100644 --- a/src/main/java/Computer.java +++ b/src/main/java/Computer.java @@ -14,7 +14,7 @@ public Integer[] getNumbers() { return numbers; } - private void resetRandomNumbers() { + public void resetRandomNumbers() { numbers = getThreeUniqueRandomNumbers(); } public Integer[] getThreeUniqueRandomNumbers() { diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 9b3a9dc6..9e1db01b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -5,7 +5,4 @@ public static void main(String args[]) { BaseballGame baseballGame = new BaseballGame(); baseballGame.run(); } - - - } diff --git a/src/main/java/View.java b/src/main/java/View.java index b23d3e90..e224fc23 100644 --- a/src/main/java/View.java +++ b/src/main/java/View.java @@ -1,11 +1,14 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.Scanner; public class View { - private Scanner sc = new Scanner(System.in); + private BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - public Integer[] getPlayerInput() { + public Integer[] getPlayerInput() throws IOException { System.out.println("숫자를 입력해주세요 : "); - String input = sc.nextLine(); + String input = reader.readLine(); String[] numbersInString = input.split(""); Integer[] numbers = new Integer[3]; for (int i = 0; i < 3; i++) { @@ -17,9 +20,17 @@ public Integer[] getPlayerInput() { public void printScore(int[] scores) { String strike = ""; String ball = ""; - if (scores[0] != 0) strike = scores[0] + "스트라이크"; - if (scores[1] != 0) ball = scores[1] + "볼"; - if (scores[0]+scores[1] != 0) System.out.println(strike + " " + ball); + if (scores[0] != 0) strike = scores[0] + "스트라이크 "; + if (scores[1] != 0) ball = scores[1] + "볼 "; + if (scores[0]+scores[1] != 0) System.out.println(strike + ball); if (scores[0]+scores[1] == 0) System.out.println("낫싱"); } + + public boolean getPlayerRetryChoice() throws IOException{ + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + String playerChoice = reader.readLine(); + if (playerChoice.equals("1")) return true; + if (playerChoice.equals("2")) return false; + return false; + } } From 2f5d45258ad87eb9c45241dd1b3afce71716e0f4 Mon Sep 17 00:00:00 2001 From: HQkim Date: Thu, 22 Dec 2022 02:49:19 +0900 Subject: [PATCH 9/9] =?UTF-8?q?test:=20Computer=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Computer클래스 numbers에 대한 setter추가 View클래스 게임종료시 입력값이 올바르지 않으면 다시 입력하도록 변경 --- src/main/java/BaseballGame.java | 3 -- src/main/java/Computer.java | 4 +++ src/main/java/Player.java | 4 --- src/main/java/View.java | 2 +- src/test/java/ComputerTest.java | 61 +++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 src/test/java/ComputerTest.java diff --git a/src/main/java/BaseballGame.java b/src/main/java/BaseballGame.java index 7c752418..fdbdfa6c 100644 --- a/src/main/java/BaseballGame.java +++ b/src/main/java/BaseballGame.java @@ -6,8 +6,6 @@ public class BaseballGame { private boolean isRun = true; public void run() { while (isRun) { - Integer[] numbers = computer.getNumbers(); - System.out.println(""+numbers[0]+numbers[1]+numbers[2]); try { player.setNumbers(view.getPlayerInput()); } catch (Exception e) { @@ -34,7 +32,6 @@ private boolean checkIsFinish(boolean playerRetryChoice) { computer.resetRandomNumbers(); return true; } - return false; } diff --git a/src/main/java/Computer.java b/src/main/java/Computer.java index 2ad89d75..b0ca609e 100644 --- a/src/main/java/Computer.java +++ b/src/main/java/Computer.java @@ -14,6 +14,10 @@ public Integer[] getNumbers() { return numbers; } + public void setNumbers(Integer[] inputNumbers) { + numbers = inputNumbers; + } + public void resetRandomNumbers() { numbers = getThreeUniqueRandomNumbers(); } diff --git a/src/main/java/Player.java b/src/main/java/Player.java index 69430247..d0b8dbaa 100644 --- a/src/main/java/Player.java +++ b/src/main/java/Player.java @@ -6,8 +6,4 @@ public Integer[] getNumbers() { public void setNumbers(Integer[] inputNumbers) { numbers = inputNumbers; } - - - - } diff --git a/src/main/java/View.java b/src/main/java/View.java index e224fc23..0424cf02 100644 --- a/src/main/java/View.java +++ b/src/main/java/View.java @@ -31,6 +31,6 @@ public boolean getPlayerRetryChoice() throws IOException{ String playerChoice = reader.readLine(); if (playerChoice.equals("1")) return true; if (playerChoice.equals("2")) return false; - return false; + return getPlayerRetryChoice(); } } diff --git a/src/test/java/ComputerTest.java b/src/test/java/ComputerTest.java new file mode 100644 index 00000000..e47ac61b --- /dev/null +++ b/src/test/java/ComputerTest.java @@ -0,0 +1,61 @@ +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ComputerTest { + + private static Computer computer; + + @BeforeAll + static void initAll() { + computer = new Computer(); + } + + @Test + @DisplayName("랜덤넘버가 중복되지 않는지 확인") + void testRandomNumberUnique() { + Integer[] randomNumbers = computer.getThreeUniqueRandomNumbers(); + assertThat(randomNumbers[0]).isNotEqualTo(randomNumbers[1]); + assertThat(randomNumbers[0]).isNotEqualTo(randomNumbers[2]); + assertThat(randomNumbers[1]).isNotEqualTo(randomNumbers[2]); + } + + @Test + @DisplayName("랜덤넘버가 1-9 사이인지 확인") + void testRandomNumberInBoundary() { + Integer[] randomNumbers = computer.getThreeUniqueRandomNumbers(); + for (Integer number : randomNumbers) { + assertThat(number).isBetween(1, 9); + } + } + + @Test + @DisplayName("점수 계산 테스트: 1스트라이크") + void testCalculateScoresOneStrike() { + Integer[] computerNumbers = {4, 2, 5}; + computer.setNumbers(computerNumbers); + + Integer[] playerNumbersCaseOne = {1, 2, 3}; + assertThat(computer.calculateScores(playerNumbersCaseOne)).containsExactly(1, 0); + } + @Test + @DisplayName("점수 계산 테스트: 1스트라이크 1볼") + void testCalculateScoresOneStrikeOneBall() { + Integer[] computerNumbers = {4, 2, 5}; + computer.setNumbers(computerNumbers); + + Integer[] playerNumbersCaseTwo = {4, 5, 6}; + assertThat(computer.calculateScores(playerNumbersCaseTwo)).containsExactly(1, 1); + } + @Test + @DisplayName("점수 계산 테스트: 낫싱") + void testCalculateScores1Strike() { + Integer[] computerNumbers = {4, 2, 5}; + computer.setNumbers(computerNumbers); + + Integer[] playerNumbersCaseThree = {7, 8, 9}; + assertThat(computer.calculateScores(playerNumbersCaseThree)).containsExactly(0, 0); + } +}