From 925ee1e6ede10fb3a9c8cb91c8d9995ef5caf8a2 Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 12:55:26 +0900 Subject: [PATCH 01/14] =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EB=AA=A9=EB=A1=9D=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8d7e8aee..6e8a1492 100644 --- a/README.md +++ b/README.md @@ -1 +1,24 @@ -# java-baseball-precourse \ No newline at end of file +# java-baseball-precourse + +## 구현할 기능 목록 + +### Domain +- 숫자 야구 기능 (1~9 수로 이뤄진 3자리 숫자 야구 생성) +- 게임 결과 저장 기능 + +### Service +- 게임 결과 판단 +- 게임 승리 여부 판단 + +### Controller +- 게임 결과 출력 +- + +### Input and Output +- 문자열 입력 : 아래와 같은 입력이 들어오면 예외처리 + - null + - "" + - blink +- 숫자 입력 : 정상적인 숫자 검증 (숫자 이외에는 다 예외처리 ) + - 숫자가 아닐경우 예외 발생 +- 게임 시작 / 종료/ 결과 메세지 출력 \ No newline at end of file From c07c28cd4816bfe055d153b6e0e4d97042c08ed4 Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 13:25:22 +0900 Subject: [PATCH 02/14] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EB=A1=9C?= =?UTF-8?q?=EB=B6=80=ED=84=B0=201,2=20=EC=9E=85=EB=A0=A5=20=EB=B0=9B?= =?UTF-8?q?=EB=8A=94=20=ED=95=A8=EC=88=98=20(=EA=B2=80=EC=A6=9D)=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EB=A1=9C=EB=B6=80=ED=84=B0=20?= =?UTF-8?q?=EC=98=88=EC=B8=A1=EA=B0=92=20=EC=9E=85=EB=A0=A5=EB=B0=9B?= =?UTF-8?q?=EB=8A=94=20=ED=95=A8=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/IO/Input.java | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/IO/Input.java diff --git a/src/main/java/IO/Input.java b/src/main/java/IO/Input.java new file mode 100644 index 00000000..b2936687 --- /dev/null +++ b/src/main/java/IO/Input.java @@ -0,0 +1,40 @@ +package IO; + +import java.util.*; + +public class Input { + // 유저에게서 정보를 입력 받는 역할 + private static Scanner sc = new Scanner(System.in); + + public static int inputStartGame() { + int input; + while(true){ + System.out.println("게임 시작은 1, 게임 종료는 2: "); + input = Integer.parseInt(sc.nextLine()); + if (input != 1 && input != 2){ + // 유효한 값 이외에 다른 게 들어오면 + throw new IllegalArgumentException("잘못된 입력 방식입니다."); + } + return input; + } + + } + + public static int[] inputGameNumber() { + System.out.print("숫자를 입력해 주세요 : "); + String input = sc.nextLine(); + + if (!input.matches("[0-9]{3}")) { + // 1-9 숫자 3개가 들어오지 않았다면 -> IllegalArgumentException 발생 + throw new IllegalArgumentException("잘못된 입력 방식입니다."); + } + int[] numbers = new int[3]; + for (int i = 0; i < 3; i++) { + char digitChar = input.charAt(i); + int digit = Character.getNumericValue(digitChar); + numbers[i] = digit; + } + + return numbers; + } +} From 44dd6dbd8fb238cec5bf7cf84d6569957d514e49 Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 13:32:47 +0900 Subject: [PATCH 03/14] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EA=B0=80=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=ED=95=9C=20=EA=B0=92=EC=9D=98=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EB=A5=BC=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=ED=95=A8=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/IO/Output.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/main/java/IO/Output.java diff --git a/src/main/java/IO/Output.java b/src/main/java/IO/Output.java new file mode 100644 index 00000000..a1099bee --- /dev/null +++ b/src/main/java/IO/Output.java @@ -0,0 +1,20 @@ +package IO; + +public class Output { + private static void printGrameResult(int strike, int ball) { + if (strike == 0 && ball == 0) { + System.out.println("아웃"); + } else { + if (strike > 0) { + System.out.print(strike + "스트라이크"); + if (ball > 0) { + System.out.print(" "); + } + } + if (ball > 0) { + System.out.print(ball + "볼"); + } + System.out.println(); + } + } +} From 803b891e654dbb3be9aaaba8a735789d90454b8d Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 13:40:55 +0900 Subject: [PATCH 04/14] =?UTF-8?q?=EC=88=AB=EC=9E=90=20=EC=95=BC=EA=B5=AC?= =?UTF-8?q?=20=EB=9E=9C=EB=8D=A4=EA=B0=92=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/uilts/makeRandomNumber.java | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/uilts/makeRandomNumber.java diff --git a/src/main/java/uilts/makeRandomNumber.java b/src/main/java/uilts/makeRandomNumber.java new file mode 100644 index 00000000..ec7ff01a --- /dev/null +++ b/src/main/java/uilts/makeRandomNumber.java @@ -0,0 +1,24 @@ +package uilts; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + + +public class makeRandomNumber { + public static int[] getRandomNumbers() { + List numberList = new ArrayList<>(); + for (int i = 1; i <= 9; i++) { + numberList.add(i); + } + + Collections.shuffle(numberList); + + int[] result = new int[3]; + for (int i = 0; i < 3; i++) { + result[i] = numberList.get(i); + } + + return result; + } +} From 13bb7437c59220422bd7df3503449df3745fb39c Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 13:47:10 +0900 Subject: [PATCH 05/14] =?UTF-8?q?=EA=B5=AC=ED=98=84=ED=95=A0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 6e8a1492..e279a8ac 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,8 @@ ## 구현할 기능 목록 -### Domain +### utils - 숫자 야구 기능 (1~9 수로 이뤄진 3자리 숫자 야구 생성) -- 게임 결과 저장 기능 ### Service - 게임 결과 판단 @@ -12,13 +11,8 @@ ### Controller - 게임 결과 출력 -- -### Input and Output -- 문자열 입력 : 아래와 같은 입력이 들어오면 예외처리 - - null - - "" - - blink +### IO(Input and Output) - 숫자 입력 : 정상적인 숫자 검증 (숫자 이외에는 다 예외처리 ) - 숫자가 아닐경우 예외 발생 - 게임 시작 / 종료/ 결과 메세지 출력 \ No newline at end of file From 791fc17056926b47ce56623f9fa2b8dbe1edc8fd Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 13:53:54 +0900 Subject: [PATCH 06/14] =?UTF-8?q?strike=20=EA=B0=9C=EC=88=98=20=EC=84=B8?= =?UTF-8?q?=EB=8A=94=20=ED=95=A8=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/utils/resultCalculation.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/utils/resultCalculation.java diff --git a/src/main/java/utils/resultCalculation.java b/src/main/java/utils/resultCalculation.java new file mode 100644 index 00000000..9046a07d --- /dev/null +++ b/src/main/java/utils/resultCalculation.java @@ -0,0 +1,13 @@ +package utils; + +public class resultCalculation { + public static int countStrikes(Integer[] gameNumber, Integer[] userNumber) { + int strikeCount = 0; + for (int i = 0; i < 3; i++) { + if (gameNumber[i].equals(userNumber[i])) { + strikeCount++; + } + } + + return strikeCount; +} From 551996ba2bb6412a8b8329bda31f1be3dd705ade Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 13:56:49 +0900 Subject: [PATCH 07/14] =?UTF-8?q?ball=20=EA=B0=9C=EC=88=98=20=EC=84=B8?= =?UTF-8?q?=EB=8A=94=20=ED=95=A8=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/utils/resultCalculation.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/utils/resultCalculation.java b/src/main/java/utils/resultCalculation.java index 9046a07d..a01e8920 100644 --- a/src/main/java/utils/resultCalculation.java +++ b/src/main/java/utils/resultCalculation.java @@ -10,4 +10,19 @@ public static int countStrikes(Integer[] gameNumber, Integer[] userNumber) { } return strikeCount; -} + } + + public static int countBall(Integer[] gameNumber, Integer[] userNumber) { + int ballCount = 0; + for (int i = 0; i < 3; i++) { + for(int j=0; j<3; j++){ + if (gameNumber[i].equals(userNumber[j])) { + ballCount++; + } + } + } + + return ballCount; + } + +} \ No newline at end of file From 566a8ac485aedb135477946daea43fbf0c114c4c Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:00:49 +0900 Subject: [PATCH 08/14] =?UTF-8?q?Integer=20->=20Int=20[]=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/utils/resultCalculation.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/utils/resultCalculation.java b/src/main/java/utils/resultCalculation.java index a01e8920..5cac77f1 100644 --- a/src/main/java/utils/resultCalculation.java +++ b/src/main/java/utils/resultCalculation.java @@ -1,10 +1,10 @@ package utils; public class resultCalculation { - public static int countStrikes(Integer[] gameNumber, Integer[] userNumber) { + public static int countStrikes(int[] gameNumber, int[] userNumber) { int strikeCount = 0; for (int i = 0; i < 3; i++) { - if (gameNumber[i].equals(userNumber[i])) { + if (gameNumber[i] == userNumber[i]) { strikeCount++; } } @@ -12,11 +12,11 @@ public static int countStrikes(Integer[] gameNumber, Integer[] userNumber) { return strikeCount; } - public static int countBall(Integer[] gameNumber, Integer[] userNumber) { + public static int countBall(int[] gameNumber, int[] userNumber) { int ballCount = 0; for (int i = 0; i < 3; i++) { for(int j=0; j<3; j++){ - if (gameNumber[i].equals(userNumber[j])) { + if (gameNumber[i] == userNumber[i]) { ballCount++; } } From 47663012c40a01ecddc7f7e8a0b8114c51ea7c85 Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:05:58 +0900 Subject: [PATCH 09/14] =?UTF-8?q?ball=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/utils/resultCalculation.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/utils/resultCalculation.java b/src/main/java/utils/resultCalculation.java index 5cac77f1..a1979c66 100644 --- a/src/main/java/utils/resultCalculation.java +++ b/src/main/java/utils/resultCalculation.java @@ -15,8 +15,8 @@ public static int countStrikes(int[] gameNumber, int[] userNumber) { public static int countBall(int[] gameNumber, int[] userNumber) { int ballCount = 0; for (int i = 0; i < 3; i++) { - for(int j=0; j<3; j++){ - if (gameNumber[i] == userNumber[i]) { + for (int j = 0; j < 3; j++) { + if (gameNumber[i] == userNumber[j] && i != j) { ballCount++; } } From 3aedf5d8d5891c6f2fea82e71951f4698febc88e Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:12:56 +0900 Subject: [PATCH 10/14] =?UTF-8?q?=EA=B2=8C=EC=9E=84=20=EC=8B=9C=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/Application.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java new file mode 100644 index 00000000..bbb7fddd --- /dev/null +++ b/src/main/java/Application.java @@ -0,0 +1,7 @@ +import Controller.GameController; +public class Application { + public static void main(String[] args) { + GameController gameController = new GameController(); + gameController.run(); + } +} From a3caa1533c7fb184b6a866ee5f89e2eadafeb07d Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:13:12 +0900 Subject: [PATCH 11/14] =?UTF-8?q?}=20=EB=88=84=EB=9D=BD=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/IO/Input.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/IO/Input.java b/src/main/java/IO/Input.java index b2936687..70d2da3a 100644 --- a/src/main/java/IO/Input.java +++ b/src/main/java/IO/Input.java @@ -37,4 +37,5 @@ public static int[] inputGameNumber() { return numbers; } + } From c759daa0928406eda668e42f9f483d0295bec22b Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:14:01 +0900 Subject: [PATCH 12/14] =?UTF-8?q?game=20Contrller=20-=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=20-=20=EC=8A=A4=ED=8A=B8=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=ED=81=AC,=20=EB=B3=BC=20=EC=84=B8=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Controller/GameController.java | 44 +++++++++++++++++++ src/main/java/IO/Output.java | 2 +- .../{uilts => utils}/makeRandomNumber.java | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Controller/GameController.java rename src/main/java/{uilts => utils}/makeRandomNumber.java (97%) diff --git a/src/main/java/Controller/GameController.java b/src/main/java/Controller/GameController.java new file mode 100644 index 00000000..66bd1878 --- /dev/null +++ b/src/main/java/Controller/GameController.java @@ -0,0 +1,44 @@ +package Controller; + +import IO.*; +import utils.*; + +public class GameController { + public void run(){ + while(true){ + firstGameStart(); + if (!wantGame()){ + break; + } + } + } + + private void firstGameStart(){ + // random 숫자 생성 + int[] gameNumber = makeRandomNumber.getRandomNumbers(); + int[] userNumber; + while(true){ + try { + userNumber = Input.inputGameNumber(); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + return; + } + + int strikeCount = resultCalculation.countStrikes(gameNumber, userNumber); + int ballCount = resultCalculation.countBall(gameNumber, userNumber); + Output.printGameResult(strikeCount, ballCount); + + if (strikeCount == 3) { + System.out.println("정답 입니다! 게임 종료"); + break; + } + } + } + + private boolean wantGame() { + int want = Input.inputStartGame(); + + return want == 1; + } +} diff --git a/src/main/java/IO/Output.java b/src/main/java/IO/Output.java index a1099bee..a63c28ab 100644 --- a/src/main/java/IO/Output.java +++ b/src/main/java/IO/Output.java @@ -1,7 +1,7 @@ package IO; public class Output { - private static void printGrameResult(int strike, int ball) { + public static void printGameResult(int strike, int ball) { if (strike == 0 && ball == 0) { System.out.println("아웃"); } else { diff --git a/src/main/java/uilts/makeRandomNumber.java b/src/main/java/utils/makeRandomNumber.java similarity index 97% rename from src/main/java/uilts/makeRandomNumber.java rename to src/main/java/utils/makeRandomNumber.java index ec7ff01a..2b97f93c 100644 --- a/src/main/java/uilts/makeRandomNumber.java +++ b/src/main/java/utils/makeRandomNumber.java @@ -1,4 +1,4 @@ -package uilts; +package utils; import java.util.ArrayList; import java.util.Collections; From fce544844c6571b68f981bb3dfda4736bd87937f Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:26:11 +0900 Subject: [PATCH 13/14] =?UTF-8?q?=EB=82=AB=EC=8B=B1=20=EA=B8=B0=EB=8A=A5?= =?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/main/java/IO/Output.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/IO/Output.java b/src/main/java/IO/Output.java index a63c28ab..fae98807 100644 --- a/src/main/java/IO/Output.java +++ b/src/main/java/IO/Output.java @@ -3,7 +3,7 @@ public class Output { public static void printGameResult(int strike, int ball) { if (strike == 0 && ball == 0) { - System.out.println("아웃"); + System.out.println("낫싱"); } else { if (strike > 0) { System.out.print(strike + "스트라이크"); From fa9eaf0379747ae1b81f84884da8825d4c68ec82 Mon Sep 17 00:00:00 2001 From: mingjuu Date: Mon, 6 May 2024 14:49:22 +0900 Subject: [PATCH 14/14] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/IO/InputTest.java | 46 +++++++++++++++++++ src/test/java/IO/OutputTest.java | 38 +++++++++++++++ src/test/java/utils/makeRandomNumberTest.java | 43 +++++++++++++++++ .../java/utils/resultCalculationTest.java | 43 +++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 src/test/java/IO/InputTest.java create mode 100644 src/test/java/IO/OutputTest.java create mode 100644 src/test/java/utils/makeRandomNumberTest.java create mode 100644 src/test/java/utils/resultCalculationTest.java diff --git a/src/test/java/IO/InputTest.java b/src/test/java/IO/InputTest.java new file mode 100644 index 00000000..f28aa8d9 --- /dev/null +++ b/src/test/java/IO/InputTest.java @@ -0,0 +1,46 @@ +package IO; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.*; + +class InputTest { + private InputStream systemIn; + + @BeforeEach + void setUp() { + systemIn = System.in; + } + + @AfterEach + void tearDown() { + System.setIn(systemIn); + } + + @Test + void inputStartGame() { + String input = "2\n"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + int choice = Input.inputStartGame(); + + assertEquals(2, choice); + } + + @Test + void inputGameNumber() { + String input = "456\n"; + InputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + int[] guess = Input.inputGameNumber(); + + assertArrayEquals(new int[]{4, 5, 6}, guess); + } +} \ No newline at end of file diff --git a/src/test/java/IO/OutputTest.java b/src/test/java/IO/OutputTest.java new file mode 100644 index 00000000..85a094ef --- /dev/null +++ b/src/test/java/IO/OutputTest.java @@ -0,0 +1,38 @@ +package IO; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.PrintStream; + +import static org.junit.jupiter.api.Assertions.*; + +class OutputTest { + private InputStream systemIn; + + @BeforeEach + void setUp() { + systemIn = System.in; + } + + @AfterEach + void tearDown() { + System.setIn(systemIn); + } + + @Test + @DisplayName("낫싱") + void printGameResult() { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + System.setOut(new PrintStream(output)); + + Output.printGameResult(0, 0); + + assertEquals("낫싱\n", output.toString()); + } + +} \ No newline at end of file diff --git a/src/test/java/utils/makeRandomNumberTest.java b/src/test/java/utils/makeRandomNumberTest.java new file mode 100644 index 00000000..5453a9c6 --- /dev/null +++ b/src/test/java/utils/makeRandomNumberTest.java @@ -0,0 +1,43 @@ +package utils; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.*; + +class makeRandomNumberTest { + private InputStream systemIn; + + @BeforeEach + void setUp() { + systemIn = System.in; + } + + @AfterEach + void tearDown() { + System.setIn(systemIn); + } + + @Test + @DisplayName(" 랜덤 숫자 생성 ") + void getRandomNumbers() { + int[] numbers = makeRandomNumber.getRandomNumbers(); + assertNotNull(numbers); + assertEquals(3, numbers.length); + for (int number : numbers) { + assertTrue(number >= 1 && number <= 9); + } + + for (int i = 0; i < numbers.length - 1; i++) { + for (int j = i + 1; j < numbers.length; j++) { + assertNotEquals(numbers[i], numbers[j]); + } + } + + } + +} \ No newline at end of file diff --git a/src/test/java/utils/resultCalculationTest.java b/src/test/java/utils/resultCalculationTest.java new file mode 100644 index 00000000..fff2f0d9 --- /dev/null +++ b/src/test/java/utils/resultCalculationTest.java @@ -0,0 +1,43 @@ +package utils; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.*; + +class resultCalculationTest { + private InputStream systemIn; + + @BeforeEach + void setUp() { + systemIn = System.in; + } + + @AfterEach + void tearDown() { + System.setIn(systemIn); + } + + @Test + @DisplayName("스트라이크가 1개 이상") + void countStrikes() { + int[] game = {1, 2, 3}; + int[] user = {1, 5, 3}; + int result = resultCalculation.countStrikes(game, user); + assertEquals(2, result); + } + + + @Test + @DisplayName("볼이 2개 이상") + void countBall() { + int[] game = {1, 2, 3}; + int[] user = {3, 5, 1}; + int result = resultCalculation.countBall(game, user); + assertEquals(2, result); + } +} \ No newline at end of file