From a54e864f2a1ee22854b2101daa4f32eb6c7e579a Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 16:49:25 +0900 Subject: [PATCH 01/10] =?UTF-8?q?refactor:=20=ED=94=BC=EB=93=9C=EB=B0=B1?= =?UTF-8?q?=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/domain/Lotto.java | 13 +------------ src/main/java/lotto/domain/LottoNumber.java | 16 ++++------------ src/test/java/lotto/domain/LottoTest.java | 4 ++-- 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/src/main/java/lotto/domain/Lotto.java b/src/main/java/lotto/domain/Lotto.java index bec5d7d065..e314f96fde 100644 --- a/src/main/java/lotto/domain/Lotto.java +++ b/src/main/java/lotto/domain/Lotto.java @@ -23,28 +23,19 @@ public Lotto(Set numbers) { } private static Set numbersToSet(int[] intNumbers) { - validateInputSize(intNumbers.length); Set numbers = new HashSet<>(); for (int number : intNumbers) { numbers.add(LottoNumber.of(number)); } - validateNoDuplicate(numbers.size(), intNumbers.length); return numbers; } public static Lotto from(List intNumbers) { return new Lotto(createLottoNumbers(intNumbers)); } - - private static void validateNoDuplicate(int setSize, int inputSize) { - if (setSize != inputSize) { - throw new IllegalArgumentException("로또 번호는 중복될 수 없습니다."); - } - } - private static void validateInputSize(int length) { if (length != LOTTO_NUMBER_COUNT) { - throw new IllegalArgumentException("로또 번호는 총 6개여야 합니다."); + throw new IllegalArgumentException("로또 번호는 중복없이 6개여야 합니다."); } } @@ -54,8 +45,6 @@ private static Set createLottoNumbers(List intNumbers) { lottoNumbers.add(LottoNumber.of(number)); } - validateNoDuplicate(lottoNumbers.size(), intNumbers.size()); - validateInputSize(lottoNumbers.size()); return lottoNumbers; } diff --git a/src/main/java/lotto/domain/LottoNumber.java b/src/main/java/lotto/domain/LottoNumber.java index b560abe023..4e74fde4ea 100644 --- a/src/main/java/lotto/domain/LottoNumber.java +++ b/src/main/java/lotto/domain/LottoNumber.java @@ -17,24 +17,16 @@ public class LottoNumber { private final int value; - private LottoNumber(String value) { - this(Integer.parseInt(value)); - } - private LottoNumber(int value) { - validate(value); this.value = value; } public static LottoNumber of(int number) { - validate(number); - return CACHE.get(number); - } - - private static void validate(int value) { - if (value < MIN_NUMBER || value > MAX_NUMBER) { - throw new IllegalArgumentException("로또 번호는 1부터 45 사이의 숫자여야 한다"); + LottoNumber lottoNumber = CACHE.get(number); + if (lottoNumber == null) { + throw new IllegalArgumentException(String.format("로또 번호는 %d부터 %d 사이의 숫자여야 한다", MIN_NUMBER, MAX_NUMBER)); } + return lottoNumber; } public int getValue() { diff --git a/src/test/java/lotto/domain/LottoTest.java b/src/test/java/lotto/domain/LottoTest.java index ed1a900dd6..e4259448a1 100644 --- a/src/test/java/lotto/domain/LottoTest.java +++ b/src/test/java/lotto/domain/LottoTest.java @@ -18,14 +18,14 @@ public class LottoTest { void 로또_번호_6개가_아니면_예외발생() { assertThatThrownBy(() -> new Lotto(1, 2, 3, 4, 5)) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("로또 번호는 총 6개여야 합니다."); + .hasMessage("로또 번호는 중복없이 6개여야 합니다."); } @Test void 로또_번호가_중복되면_예외발생() { assertThatThrownBy(() -> new Lotto(1, 2, 3, 4, 5, 5)) .isInstanceOf(IllegalArgumentException.class) - .hasMessage("로또 번호는 중복될 수 없습니다."); + .hasMessage("로또 번호는 중복없이 6개여야 합니다."); } @Test From 0b5b2ae683d49c9d4dd5633aa2f467888ce95ca2 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 17:47:14 +0900 Subject: [PATCH 02/10] =?UTF-8?q?docs:=204=EB=8B=A8=EA=B3=84=20=EC=9A=94?= =?UTF-8?q?=EA=B5=AC=EC=82=AC=ED=95=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...24\352\265\254\354\202\254\355\225\255.md" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 "docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" diff --git "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" new file mode 100644 index 0000000000..17f1174910 --- /dev/null +++ "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" @@ -0,0 +1,23 @@ +# 로또 구현 + +## 기능 요구사항 + +## 입력 + +- [ ] 수동으로 구매할 로또 수를 입력받는다 +- [ ] 수동번호를 수동 갯수만큼 로또를 입력받는다. + +## 수동 로또 + +- [ ] 입력받은 로또 리스트를 받아서 생성한다. + - [ ] 0이나 null인경우 빈 값으로 판단한다. +- [ ] 수동로또가 비어있으면 빈 리스트를 반환한다. + +## 로또 티켓 + +- [ ] 구입금액과 수동 로또를 받아서 생성한다. +- [ ] 수동로또를 추가하고 남은 금만큼 자동 로또를 생성한다. + +## 출력 + +- [ ] 수동, 자동 장수를 출력한다. From 60760c4d58e8889969b6268c4e2cf30ba7dde8c9 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 18:46:03 +0900 Subject: [PATCH 03/10] =?UTF-8?q?feat:=20=EC=88=98=EB=8F=99=EB=A1=9C?= =?UTF-8?q?=EB=98=90=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...24\352\265\254\354\202\254\355\225\255.md" | 6 ++-- src/main/java/lotto/domain/ManualLottos.java | 22 +++++++++++++ .../java/lotto/domain/ManualLottosTest.java | 33 +++++++++++++++++++ 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 src/main/java/lotto/domain/ManualLottos.java create mode 100644 src/test/java/lotto/domain/ManualLottosTest.java diff --git "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" index 17f1174910..8fc5332a4b 100644 --- "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" +++ "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" @@ -9,9 +9,9 @@ ## 수동 로또 -- [ ] 입력받은 로또 리스트를 받아서 생성한다. - - [ ] 0이나 null인경우 빈 값으로 판단한다. -- [ ] 수동로또가 비어있으면 빈 리스트를 반환한다. +- [x] 입력받은 로또 리스트를 받아서 생성한다. + - [x] 빈List이거나 null인경우 빈 값으로 판단한다. +- [x] 수동로또가 비어있으면 빈 리스트를 반환한다. ## 로또 티켓 diff --git a/src/main/java/lotto/domain/ManualLottos.java b/src/main/java/lotto/domain/ManualLottos.java new file mode 100644 index 0000000000..361cd55add --- /dev/null +++ b/src/main/java/lotto/domain/ManualLottos.java @@ -0,0 +1,22 @@ +package lotto.domain; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +public class ManualLottos { + private final List manualLottos; + + public ManualLottos(List manualLottos) { + this.manualLottos = Optional.ofNullable(manualLottos) + .orElse(Collections.emptyList()); + } + + public int getCount() { + return manualLottos.size(); + } + + public List getManualLottos() { + return manualLottos; + } +} diff --git a/src/test/java/lotto/domain/ManualLottosTest.java b/src/test/java/lotto/domain/ManualLottosTest.java new file mode 100644 index 0000000000..e783376d1c --- /dev/null +++ b/src/test/java/lotto/domain/ManualLottosTest.java @@ -0,0 +1,33 @@ +package lotto.domain; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ManualLottosTest { + + @Test + void 수동_로또_리스트로_생성한다() { + Lotto lotto1 = new Lotto(1, 2, 3, 4, 5, 6); + Lotto lotto2 = new Lotto(7, 8, 9, 10, 11, 12); + List lottos = Arrays.asList(lotto1, lotto2); + + ManualLottos manualLottos = new ManualLottos(lottos); + + assertThat(manualLottos.getCount()).isEqualTo(2); + } + + @Test + void 비어있거나_null_입력시_빈_리스트로_초기화() { + ManualLottos manualLottos = new ManualLottos(null); + ManualLottos emptyManualLottos = new ManualLottos(Collections.emptyList()); + + assertThat(manualLottos.getCount()).isEqualTo(0); + assertThat(emptyManualLottos.getCount()).isEqualTo(0); + } + +} From 793141c583f0084b74fda55b7649577cef84ea4f Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 19:01:49 +0900 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20=EB=A1=9C=EB=98=90=ED=8B=B0?= =?UTF-8?q?=EC=BC=93=EC=97=90=20=EC=88=98=EB=8F=99=EB=A1=9C=EB=98=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/domain/LottoTickets.java | 37 +++++++++++++++- .../java/lotto/domain/LottoTicketsTest.java | 43 +++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/src/main/java/lotto/domain/LottoTickets.java b/src/main/java/lotto/domain/LottoTickets.java index ba6c2dbbaa..9d3d28fc79 100644 --- a/src/main/java/lotto/domain/LottoTickets.java +++ b/src/main/java/lotto/domain/LottoTickets.java @@ -7,9 +7,15 @@ public class LottoTickets { private final List lottos; + private final ManualLottos manualLottos; public LottoTickets(List lottos) { + this(lottos, new ManualLottos(lottos)); + } + + public LottoTickets(List lottos, ManualLottos manualLottos) { this.lottos = lottos; + this.manualLottos = manualLottos; } public static LottoTickets create(PurchaseAmount purchaseAmount) { @@ -21,6 +27,35 @@ public static LottoTickets create(PurchaseAmount purchaseAmount) { return new LottoTickets(lottos); } + public static LottoTickets create(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { + validateManualLottoCount(purchaseAmount, manualLottos); + List lottos = createLottos(purchaseAmount, manualLottos); + return new LottoTickets(lottos, manualLottos); + } + + private static void validateManualLottoCount(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { + if (manualLottos.getCount() > purchaseAmount.getLottoCount()) { + throw new IllegalArgumentException("수동로또 개수가 구입 가능한 개수보다 많습니다."); + } + } + + private static List createLottos(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { + List lottos = new ArrayList<>(manualLottos.getManualLottos()); + int autoCount = purchaseAmount.getLottoCount() - manualLottos.getCount(); + for (int i = 0; i < autoCount; i++) { + lottos.add(Lotto.from(LottoNumberGenerator.generate())); + } + return lottos; + } + + public int getManualCount() { + return manualLottos.getCount(); + } + + public int getAutoCount() { + return lottos.size() - manualLottos.getCount(); + } + public int size() { return lottos.size(); } @@ -29,7 +64,7 @@ public List getLottos() { return new ArrayList<>(lottos); } - public WinningResult matchWith(WinningNumbers winningNumbers){ + public WinningResult matchWith(WinningNumbers winningNumbers) { Map result = initializeResult(); for (Lotto lotto : lottos) { Rank rank = winningNumbers.match(lotto); diff --git a/src/test/java/lotto/domain/LottoTicketsTest.java b/src/test/java/lotto/domain/LottoTicketsTest.java index 4180e31c3d..9e99843fb5 100644 --- a/src/test/java/lotto/domain/LottoTicketsTest.java +++ b/src/test/java/lotto/domain/LottoTicketsTest.java @@ -2,9 +2,11 @@ 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.assertj.core.api.Assertions.assertThatThrownBy; //- [ ] 구입 금액을 1000으로 나눈 갯수반큼 로또 티켓을 발행한다. @@ -32,4 +34,45 @@ public class LottoTicketsTest { assertThat(lotto.getNumbers()).hasSize(6); } } + + @Test + void 구매금액과_수동로또개수가_같은경우_수동로또만_구매() { + PurchaseAmount purchaseAmount = new PurchaseAmount(2000); + Lotto manual1 = new Lotto(1, 2, 3, 4, 5, 6); + Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); + ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2)); + + LottoTickets tickets = LottoTickets.create(purchaseAmount, manualLottos); + + assertThat(tickets.size()).isEqualTo(2); + assertThat(tickets.getManualCount()).isEqualTo(2); + assertThat(tickets.getAutoCount()).isEqualTo(0); + } + + @Test + void 수동_자동_혼합_구매() { + PurchaseAmount purchaseAmount = new PurchaseAmount(5000); + Lotto manual1 = new Lotto(1, 2, 3, 4, 5, 6); + Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); + ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2)); + + LottoTickets tickets = LottoTickets.create(purchaseAmount, manualLottos); + + assertThat(tickets.size()).isEqualTo(5); + assertThat(tickets.getManualCount()).isEqualTo(2); + assertThat(tickets.getAutoCount()).isEqualTo(3); + } + + @Test + void 수동로또_개수가_구입가능_개수보다_많으면_예외를던진() { + PurchaseAmount purchaseAmount = new PurchaseAmount(2000); + Lotto manual1 = new Lotto(1, 2, 3, 4, 5, 6); + Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); + Lotto manual3 = new Lotto(13, 14, 15, 16, 17, 18); + ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2, manual3)); + + assertThatThrownBy(() -> LottoTickets.create(purchaseAmount, manualLottos)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("수동로또 개수가 구입 가능한 개수보다 많습니다."); + } } From 26f42dca9967f946783ba5a789c3b6815d270e03 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 19:15:53 +0900 Subject: [PATCH 05/10] =?UTF-8?q?feat:=20InputView,=20OutputView=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/LottoApplication.java | 8 ++++++-- src/main/java/lotto/view/InputView.java | 15 +++++++++++++++ src/main/java/lotto/view/ResultView.java | 6 ++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/lotto/LottoApplication.java b/src/main/java/lotto/LottoApplication.java index e628f4d665..32a8dcfe4e 100644 --- a/src/main/java/lotto/LottoApplication.java +++ b/src/main/java/lotto/LottoApplication.java @@ -3,6 +3,7 @@ import lotto.domain.Lotto; import lotto.domain.LottoNumber; import lotto.domain.LottoTickets; +import lotto.domain.ManualLottos; import lotto.domain.PurchaseAmount; import lotto.domain.WinningNumbers; import lotto.domain.WinningResult; @@ -12,9 +13,12 @@ public class LottoApplication { public static void main(String[] args) { PurchaseAmount purchaseAmount = new PurchaseAmount(InputView.inputPurchaseAmount()); - LottoTickets tickets = LottoTickets.create(purchaseAmount); - ResultView.printTicketCount(tickets.size()); + int manualCount = InputView.inputManualLottoCount(); + ManualLottos manualLottos = InputView.inputManualLottos(manualCount); + + LottoTickets tickets = LottoTickets.create(purchaseAmount, manualLottos); + ResultView.printTicketCount(tickets); ResultView.printLottoTickets(tickets); Lotto winningLotto = InputView.inputWinningNumbers(); diff --git a/src/main/java/lotto/view/InputView.java b/src/main/java/lotto/view/InputView.java index 341373ac73..3a1c13a855 100644 --- a/src/main/java/lotto/view/InputView.java +++ b/src/main/java/lotto/view/InputView.java @@ -2,6 +2,7 @@ import lotto.domain.Lotto; import lotto.domain.LottoNumber; +import lotto.domain.ManualLottos; import java.util.ArrayList; import java.util.List; @@ -33,6 +34,20 @@ private static Lotto parseWinningNumbers(String input) { public static LottoNumber inputBonusNumber() { System.out.println("보너스 볼을 입력해 주세요."); return LottoNumber.of(Integer.parseInt(scanner.nextLine())); + } + public static int inputManualLottoCount() { + System.out.println("수동으로 구매할 로또 수를 입력해 주세요."); + return Integer.parseInt(scanner.nextLine()); + } + + public static ManualLottos inputManualLottos(int count) { + System.out.println("수동으로 구매할 번호를 입력해 주세요."); + List manualLottos = new ArrayList<>(); + for (int i = 0; i < count; i++) { + String input = scanner.nextLine(); + manualLottos.add(parseWinningNumbers(input)); + } + return new ManualLottos(manualLottos); } } diff --git a/src/main/java/lotto/view/ResultView.java b/src/main/java/lotto/view/ResultView.java index bc1d85f72f..2292246bf0 100644 --- a/src/main/java/lotto/view/ResultView.java +++ b/src/main/java/lotto/view/ResultView.java @@ -8,8 +8,10 @@ import java.util.List; public class ResultView { - public static void printTicketCount(int count) { - System.out.println(String.format("%d개를 구매했습니다.", count)); + public static void printTicketCount(LottoTickets tickets) { + int manualCount = tickets.getManualCount(); + int autoCount = tickets.getAutoCount(); + System.out.println(String.format("수동으로 %d장, 자동으로 %d개를 구매했습니다.", manualCount, autoCount)); } public static void printLottoTickets(LottoTickets tickets) { From db1459b58c0f730e226fe9a7a2f4a4f366984698 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 19:30:33 +0900 Subject: [PATCH 06/10] =?UTF-8?q?refactor:=20=EC=9D=8C=EC=88=98=EB=82=98?= =?UTF-8?q?=200=EC=9D=84=20=EC=9E=85=EB=A0=A5=ED=96=88=EC=9D=84=EB=96=84?= =?UTF-8?q?=EC=9D=98=20=EC=A1=B0=EA=B1=B4=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\232\224\352\265\254\354\202\254\355\225\255.md" | 13 ++++++++----- src/main/java/lotto/view/InputView.java | 6 ++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" index 8fc5332a4b..620bf825aa 100644 --- "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" +++ "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" @@ -4,8 +4,11 @@ ## 입력 -- [ ] 수동으로 구매할 로또 수를 입력받는다 -- [ ] 수동번호를 수동 갯수만큼 로또를 입력받는다. +- [x] 수동으로 구매할 로또 수를 입력받는다 + - [x] 수동 구매 장수는 음수일수 없다. + - [x] 0개 입력시 전부 자동으로 구매한다. + - [ ] 공백 입력 +- [x] 수동번호를 수동 갯수만큼 로또를 입력받는다. ## 수동 로또 @@ -15,9 +18,9 @@ ## 로또 티켓 -- [ ] 구입금액과 수동 로또를 받아서 생성한다. -- [ ] 수동로또를 추가하고 남은 금만큼 자동 로또를 생성한다. +- [x] 구입금액과 수동 로또를 받아서 생성한다. +- [x] 수동로또를 추가하고 남은 금만큼 자동 로또를 생성한다. ## 출력 -- [ ] 수동, 자동 장수를 출력한다. +- [x] 수동, 자동 장수를 출력한다. diff --git a/src/main/java/lotto/view/InputView.java b/src/main/java/lotto/view/InputView.java index 3a1c13a855..293b8c2296 100644 --- a/src/main/java/lotto/view/InputView.java +++ b/src/main/java/lotto/view/InputView.java @@ -42,6 +42,12 @@ public static int inputManualLottoCount() { } public static ManualLottos inputManualLottos(int count) { + if(count < 0) { + throw new IllegalArgumentException("음수를 입력할 수 없습니다."); + } + if(count == 0) { + return new ManualLottos(null); + } System.out.println("수동으로 구매할 번호를 입력해 주세요."); List manualLottos = new ArrayList<>(); for (int i = 0; i < count; i++) { From cc9dea7c18946714c10dd5576d9673ae48b8f203 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 19:31:41 +0900 Subject: [PATCH 07/10] =?UTF-8?q?refactor:=20=EB=B0=A9=EC=96=B4=EC=A0=81?= =?UTF-8?q?=20=EB=B3=B5=EC=82=AC=EB=A5=BC=20=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/domain/Lotto.java | 2 +- src/main/java/lotto/domain/LottoTickets.java | 2 +- src/main/java/lotto/domain/ManualLottos.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/lotto/domain/Lotto.java b/src/main/java/lotto/domain/Lotto.java index e314f96fde..fe511ced63 100644 --- a/src/main/java/lotto/domain/Lotto.java +++ b/src/main/java/lotto/domain/Lotto.java @@ -54,7 +54,7 @@ public List getNumbers() { result.add(number.getValue()); } Collections.sort(result); - return result; + return List.copyOf(result); } public boolean contains(LottoNumber number) { diff --git a/src/main/java/lotto/domain/LottoTickets.java b/src/main/java/lotto/domain/LottoTickets.java index 9d3d28fc79..24b882e45e 100644 --- a/src/main/java/lotto/domain/LottoTickets.java +++ b/src/main/java/lotto/domain/LottoTickets.java @@ -61,7 +61,7 @@ public int size() { } public List getLottos() { - return new ArrayList<>(lottos); + return List.copyOf(lottos); } public WinningResult matchWith(WinningNumbers winningNumbers) { diff --git a/src/main/java/lotto/domain/ManualLottos.java b/src/main/java/lotto/domain/ManualLottos.java index 361cd55add..9718e59e96 100644 --- a/src/main/java/lotto/domain/ManualLottos.java +++ b/src/main/java/lotto/domain/ManualLottos.java @@ -17,6 +17,6 @@ public int getCount() { } public List getManualLottos() { - return manualLottos; + return List.copyOf(manualLottos); } } From a46f546586ff9b1f458275e5a8de0cff7c6e6232 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Sun, 23 Nov 2025 19:45:10 +0900 Subject: [PATCH 08/10] =?UTF-8?q?refactor:=20=EC=97=90=EB=9F=AC=EB=A1=9C?= =?UTF-8?q?=20=EC=9D=B8=ED=95=B4=20=EC=A4=91=EB=8B=A8=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=EC=9D=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...24\352\265\254\354\202\254\355\225\255.md" | 2 +- src/main/java/lotto/view/InputView.java | 44 +++++++++++++++---- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" index 620bf825aa..d57240c324 100644 --- "a/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" +++ "b/docs/step4\354\232\224\352\265\254\354\202\254\355\225\255.md" @@ -7,7 +7,7 @@ - [x] 수동으로 구매할 로또 수를 입력받는다 - [x] 수동 구매 장수는 음수일수 없다. - [x] 0개 입력시 전부 자동으로 구매한다. - - [ ] 공백 입력 + - [x] 공백 입력 시 재입력받도록 한다. - [x] 수동번호를 수동 갯수만큼 로또를 입력받는다. ## 수동 로또 diff --git a/src/main/java/lotto/view/InputView.java b/src/main/java/lotto/view/InputView.java index 293b8c2296..86186c74a0 100644 --- a/src/main/java/lotto/view/InputView.java +++ b/src/main/java/lotto/view/InputView.java @@ -12,8 +12,16 @@ public class InputView { private static final Scanner scanner = new Scanner(System.in); public static int inputPurchaseAmount() { - System.out.println("구입금액을 입력해 주세요."); - return Integer.parseInt(scanner.nextLine()); + while (true) { + try { + System.out.println("구입금액을 입력해 주세요."); + String input = scanner.nextLine(); + validateNotEmpty(input); + return Integer.parseInt(input.trim()); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } } public static Lotto inputWinningNumbers() { @@ -37,23 +45,43 @@ public static LottoNumber inputBonusNumber() { } public static int inputManualLottoCount() { - System.out.println("수동으로 구매할 로또 수를 입력해 주세요."); - return Integer.parseInt(scanner.nextLine()); + while (true) { + try { + System.out.println("\n수동으로 구매할 로또 수를 입력해 주세요."); + String input = scanner.nextLine(); + validateNotEmpty(input); + return Integer.parseInt(input.trim()); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } } public static ManualLottos inputManualLottos(int count) { - if(count < 0) { - throw new IllegalArgumentException("음수를 입력할 수 없습니다."); - } - if(count == 0) { + validateCount(count); + if (count == 0) { return new ManualLottos(null); } + System.out.println("수동으로 구매할 번호를 입력해 주세요."); List manualLottos = new ArrayList<>(); for (int i = 0; i < count; i++) { String input = scanner.nextLine(); + validateNotEmpty(input); manualLottos.add(parseWinningNumbers(input)); } return new ManualLottos(manualLottos); } + + private static void validateCount(int count) { + if (count < 0) { + throw new IllegalArgumentException("음수를 입력할 수 없습니다."); + } + } + + private static void validateNotEmpty(String input) { + if (input == null || input.trim().isEmpty()) { + throw new IllegalArgumentException("빈 값을 입력할 수 없습니다."); + } + } } From ea1704cdc3b823d79461a53d9d3a2f8a5c81560f Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Tue, 25 Nov 2025 01:27:17 +0900 Subject: [PATCH 09/10] =?UTF-8?q?refactor:=20LottoTicketsFactory=EB=A1=9C?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=EC=9D=98=20=EC=B1=85=EC=9E=84=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/LottoApplication.java | 3 +- src/main/java/lotto/domain/LottoTickets.java | 31 --------------- .../lotto/domain/LottoTicketsFactory.java | 39 +++++++++++++++++++ .../java/lotto/domain/LottoTicketsTest.java | 13 +++---- 4 files changed, 46 insertions(+), 40 deletions(-) create mode 100644 src/main/java/lotto/domain/LottoTicketsFactory.java diff --git a/src/main/java/lotto/LottoApplication.java b/src/main/java/lotto/LottoApplication.java index 32a8dcfe4e..439f9574a4 100644 --- a/src/main/java/lotto/LottoApplication.java +++ b/src/main/java/lotto/LottoApplication.java @@ -3,6 +3,7 @@ import lotto.domain.Lotto; import lotto.domain.LottoNumber; import lotto.domain.LottoTickets; +import lotto.domain.LottoTicketsFactory; import lotto.domain.ManualLottos; import lotto.domain.PurchaseAmount; import lotto.domain.WinningNumbers; @@ -17,7 +18,7 @@ public static void main(String[] args) { int manualCount = InputView.inputManualLottoCount(); ManualLottos manualLottos = InputView.inputManualLottos(manualCount); - LottoTickets tickets = LottoTickets.create(purchaseAmount, manualLottos); + LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount, manualLottos); ResultView.printTicketCount(tickets); ResultView.printLottoTickets(tickets); diff --git a/src/main/java/lotto/domain/LottoTickets.java b/src/main/java/lotto/domain/LottoTickets.java index 24b882e45e..75f1d587a5 100644 --- a/src/main/java/lotto/domain/LottoTickets.java +++ b/src/main/java/lotto/domain/LottoTickets.java @@ -1,6 +1,5 @@ package lotto.domain; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -18,36 +17,6 @@ public LottoTickets(List lottos, ManualLottos manualLottos) { this.manualLottos = manualLottos; } - public static LottoTickets create(PurchaseAmount purchaseAmount) { - int count = purchaseAmount.getLottoCount(); - List lottos = new ArrayList<>(); - for (int i = 0; i < count; i++) { - lottos.add(Lotto.from(LottoNumberGenerator.generate())); - } - return new LottoTickets(lottos); - } - - public static LottoTickets create(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { - validateManualLottoCount(purchaseAmount, manualLottos); - List lottos = createLottos(purchaseAmount, manualLottos); - return new LottoTickets(lottos, manualLottos); - } - - private static void validateManualLottoCount(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { - if (manualLottos.getCount() > purchaseAmount.getLottoCount()) { - throw new IllegalArgumentException("수동로또 개수가 구입 가능한 개수보다 많습니다."); - } - } - - private static List createLottos(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { - List lottos = new ArrayList<>(manualLottos.getManualLottos()); - int autoCount = purchaseAmount.getLottoCount() - manualLottos.getCount(); - for (int i = 0; i < autoCount; i++) { - lottos.add(Lotto.from(LottoNumberGenerator.generate())); - } - return lottos; - } - public int getManualCount() { return manualLottos.getCount(); } diff --git a/src/main/java/lotto/domain/LottoTicketsFactory.java b/src/main/java/lotto/domain/LottoTicketsFactory.java new file mode 100644 index 0000000000..757d392bd7 --- /dev/null +++ b/src/main/java/lotto/domain/LottoTicketsFactory.java @@ -0,0 +1,39 @@ +package lotto.domain; + +import java.util.ArrayList; +import java.util.List; + +public class LottoTicketsFactory { + public static LottoTickets create(PurchaseAmount purchaseAmount) { + int count = purchaseAmount.getLottoCount(); + List lottos = generateAutoLottos(count); + return new LottoTickets(lottos, new ManualLottos(null)); + } + + public static LottoTickets create(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { + validateManualCount(purchaseAmount, manualLottos); + List allLottos = createLottos(purchaseAmount, manualLottos); + return new LottoTickets(allLottos, manualLottos); + } + + private static void validateManualCount(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { + if (manualLottos.getCount() > purchaseAmount.getLottoCount()) { + throw new IllegalArgumentException("수동로또 개수가 구입 가능한 개수보다 많습니다."); + } + } + + private static List createLottos(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { + List lottos = new ArrayList<>(manualLottos.getManualLottos()); + int autoCount = purchaseAmount.getLottoCount() - manualLottos.getCount(); + lottos.addAll(generateAutoLottos(autoCount)); + return lottos; + } + + private static List generateAutoLottos(int count) { + List lottos = new ArrayList<>(); + for (int i = 0; i < count; i++) { + lottos.add(Lotto.from(LottoNumberGenerator.generate())); + } + return lottos; + } +} diff --git a/src/test/java/lotto/domain/LottoTicketsTest.java b/src/test/java/lotto/domain/LottoTicketsTest.java index 9e99843fb5..3c898f1b41 100644 --- a/src/test/java/lotto/domain/LottoTicketsTest.java +++ b/src/test/java/lotto/domain/LottoTicketsTest.java @@ -9,15 +9,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; -//- [ ] 구입 금액을 1000으로 나눈 갯수반큼 로또 티켓을 발행한다. -// - [ ] 1부터 45까지의 숫자 중 중복되지 않는 6개의 숫자를 무작위로 선택한다 - public class LottoTicketsTest { @Test void 구입_금액으로_로또_티켓_생성() { PurchaseAmount purchaseAmount =new PurchaseAmount(5_000); - LottoTickets tickets = LottoTickets.create(purchaseAmount); + LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount); assertThat(tickets.size()).isEqualTo(5); } @@ -26,7 +23,7 @@ public class LottoTicketsTest { void 모든_로또_티켓_조회() { PurchaseAmount purchaseAmount =new PurchaseAmount(3_000); - LottoTickets tickets = LottoTickets.create(purchaseAmount); + LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount); List lottos = tickets.getLottos(); assertThat(lottos).hasSize(3); @@ -42,7 +39,7 @@ public class LottoTicketsTest { Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2)); - LottoTickets tickets = LottoTickets.create(purchaseAmount, manualLottos); + LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount, manualLottos); assertThat(tickets.size()).isEqualTo(2); assertThat(tickets.getManualCount()).isEqualTo(2); @@ -56,7 +53,7 @@ public class LottoTicketsTest { Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2)); - LottoTickets tickets = LottoTickets.create(purchaseAmount, manualLottos); + LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount, manualLottos); assertThat(tickets.size()).isEqualTo(5); assertThat(tickets.getManualCount()).isEqualTo(2); @@ -71,7 +68,7 @@ public class LottoTicketsTest { Lotto manual3 = new Lotto(13, 14, 15, 16, 17, 18); ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2, manual3)); - assertThatThrownBy(() -> LottoTickets.create(purchaseAmount, manualLottos)) + assertThatThrownBy(() -> LottoTicketsFactory.create(purchaseAmount, manualLottos)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("수동로또 개수가 구입 가능한 개수보다 많습니다."); } From 01c19dc97cdc64c04635f169dcb1636b394e57c0 Mon Sep 17 00:00:00 2001 From: yangseung-in Date: Tue, 25 Nov 2025 02:02:39 +0900 Subject: [PATCH 10/10] =?UTF-8?q?refactor:=20ManualLottos=EA=B0=80=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EA=B0=80=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=ED=95=9C=20=EA=B0=92=EB=A7=8C=20=EC=A0=80=EC=9E=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/lotto/LottoApplication.java | 5 +++- src/main/java/lotto/domain/LottoTickets.java | 4 --- .../lotto/domain/LottoTicketsFactory.java | 30 +++++++++++++++---- src/main/java/lotto/domain/ManualLottos.java | 12 ++++---- src/main/java/lotto/view/InputView.java | 21 ++++++++----- .../java/lotto/domain/LottoTicketsTest.java | 20 +++++-------- .../java/lotto/domain/ManualLottosTest.java | 8 ++--- .../java/lotto/domain/WinningResultTest.java | 2 +- 8 files changed, 60 insertions(+), 42 deletions(-) diff --git a/src/main/java/lotto/LottoApplication.java b/src/main/java/lotto/LottoApplication.java index 439f9574a4..90a24c8dce 100644 --- a/src/main/java/lotto/LottoApplication.java +++ b/src/main/java/lotto/LottoApplication.java @@ -11,12 +11,15 @@ import lotto.view.InputView; import lotto.view.ResultView; +import java.util.List; + public class LottoApplication { public static void main(String[] args) { PurchaseAmount purchaseAmount = new PurchaseAmount(InputView.inputPurchaseAmount()); int manualCount = InputView.inputManualLottoCount(); - ManualLottos manualLottos = InputView.inputManualLottos(manualCount); + List manualLottosInputs = InputView.inputManualLottos(manualCount); + ManualLottos manualLottos = new ManualLottos(manualLottosInputs); LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount, manualLottos); ResultView.printTicketCount(tickets); diff --git a/src/main/java/lotto/domain/LottoTickets.java b/src/main/java/lotto/domain/LottoTickets.java index 75f1d587a5..b557f2b1f7 100644 --- a/src/main/java/lotto/domain/LottoTickets.java +++ b/src/main/java/lotto/domain/LottoTickets.java @@ -8,10 +8,6 @@ public class LottoTickets { private final List lottos; private final ManualLottos manualLottos; - public LottoTickets(List lottos) { - this(lottos, new ManualLottos(lottos)); - } - public LottoTickets(List lottos, ManualLottos manualLottos) { this.lottos = lottos; this.manualLottos = manualLottos; diff --git a/src/main/java/lotto/domain/LottoTicketsFactory.java b/src/main/java/lotto/domain/LottoTicketsFactory.java index 757d392bd7..025da383a4 100644 --- a/src/main/java/lotto/domain/LottoTicketsFactory.java +++ b/src/main/java/lotto/domain/LottoTicketsFactory.java @@ -12,19 +12,39 @@ public static LottoTickets create(PurchaseAmount purchaseAmount) { public static LottoTickets create(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { validateManualCount(purchaseAmount, manualLottos); - List allLottos = createLottos(purchaseAmount, manualLottos); +// List allLottos = createLottos(purchaseAmount, manualLottos); + List lottos = convertToLottos(manualLottos); + List allLottos = createLottos(purchaseAmount, lottos, manualLottos.getCount()); return new LottoTickets(allLottos, manualLottos); } + private static List convertToLottos(ManualLottos manualLottos) { + List lottos = new ArrayList<>(); + for (String input : manualLottos.getManualLottosInput()) { + lottos.add(parseLotto(input)); + } + return lottos; + } + + private static Lotto parseLotto(String input) { + String[] tokens = input.split(","); + List numbers = new ArrayList<>(); + for (String token : tokens) { + numbers.add(Integer.parseInt(token.trim())); + } + return Lotto.from(numbers); + } + + private static void validateManualCount(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { if (manualLottos.getCount() > purchaseAmount.getLottoCount()) { throw new IllegalArgumentException("수동로또 개수가 구입 가능한 개수보다 많습니다."); } } - - private static List createLottos(PurchaseAmount purchaseAmount, ManualLottos manualLottos) { - List lottos = new ArrayList<>(manualLottos.getManualLottos()); - int autoCount = purchaseAmount.getLottoCount() - manualLottos.getCount(); + + private static List createLottos(PurchaseAmount purchaseAmount, List manualLottosList, int manualCount) { + List lottos = new ArrayList<>(manualLottosList); + int autoCount = purchaseAmount.getLottoCount() - manualCount; lottos.addAll(generateAutoLottos(autoCount)); return lottos; } diff --git a/src/main/java/lotto/domain/ManualLottos.java b/src/main/java/lotto/domain/ManualLottos.java index 9718e59e96..7fc754129f 100644 --- a/src/main/java/lotto/domain/ManualLottos.java +++ b/src/main/java/lotto/domain/ManualLottos.java @@ -5,18 +5,18 @@ import java.util.Optional; public class ManualLottos { - private final List manualLottos; + private final List manualLottosInput; - public ManualLottos(List manualLottos) { - this.manualLottos = Optional.ofNullable(manualLottos) + public ManualLottos(List manualLottosInput) { + this.manualLottosInput = Optional.ofNullable(manualLottosInput) .orElse(Collections.emptyList()); } public int getCount() { - return manualLottos.size(); + return manualLottosInput.size(); } - public List getManualLottos() { - return List.copyOf(manualLottos); + public List getManualLottosInput() { + return List.copyOf(manualLottosInput); } } diff --git a/src/main/java/lotto/view/InputView.java b/src/main/java/lotto/view/InputView.java index 86186c74a0..a6888d3104 100644 --- a/src/main/java/lotto/view/InputView.java +++ b/src/main/java/lotto/view/InputView.java @@ -2,7 +2,6 @@ import lotto.domain.Lotto; import lotto.domain.LottoNumber; -import lotto.domain.ManualLottos; import java.util.ArrayList; import java.util.List; @@ -57,20 +56,26 @@ public static int inputManualLottoCount() { } } - public static ManualLottos inputManualLottos(int count) { + public static List inputManualLottos(int count) { validateCount(count); if (count == 0) { - return new ManualLottos(null); + return new ArrayList<>(); } System.out.println("수동으로 구매할 번호를 입력해 주세요."); - List manualLottos = new ArrayList<>(); + List manualLottos = new ArrayList<>(); for (int i = 0; i < count; i++) { - String input = scanner.nextLine(); - validateNotEmpty(input); - manualLottos.add(parseWinningNumbers(input)); + manualLottos.add(inputSingleManualLotto()); } - return new ManualLottos(manualLottos); + return manualLottos; + } + + private static String inputSingleManualLotto() { + String input = scanner.nextLine(); + validateNotEmpty(input); +// +// parseWinningNumbers(input); + return input.trim(); } private static void validateCount(int count) { diff --git a/src/test/java/lotto/domain/LottoTicketsTest.java b/src/test/java/lotto/domain/LottoTicketsTest.java index 3c898f1b41..e9693d0956 100644 --- a/src/test/java/lotto/domain/LottoTicketsTest.java +++ b/src/test/java/lotto/domain/LottoTicketsTest.java @@ -12,7 +12,7 @@ public class LottoTicketsTest { @Test void 구입_금액으로_로또_티켓_생성() { - PurchaseAmount purchaseAmount =new PurchaseAmount(5_000); + PurchaseAmount purchaseAmount = new PurchaseAmount(5_000); LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount); @@ -21,7 +21,7 @@ public class LottoTicketsTest { @Test void 모든_로또_티켓_조회() { - PurchaseAmount purchaseAmount =new PurchaseAmount(3_000); + PurchaseAmount purchaseAmount = new PurchaseAmount(3_000); LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount); @@ -35,9 +35,7 @@ public class LottoTicketsTest { @Test void 구매금액과_수동로또개수가_같은경우_수동로또만_구매() { PurchaseAmount purchaseAmount = new PurchaseAmount(2000); - Lotto manual1 = new Lotto(1, 2, 3, 4, 5, 6); - Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); - ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2)); + ManualLottos manualLottos = new ManualLottos(Arrays.asList("1, 2, 3, 4, 5, 6", "7, 8, 9, 10, 11, 12")); LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount, manualLottos); @@ -49,9 +47,7 @@ public class LottoTicketsTest { @Test void 수동_자동_혼합_구매() { PurchaseAmount purchaseAmount = new PurchaseAmount(5000); - Lotto manual1 = new Lotto(1, 2, 3, 4, 5, 6); - Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); - ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2)); + ManualLottos manualLottos = new ManualLottos(Arrays.asList("1, 2, 3, 4, 5, 6", "7, 8, 9, 10, 11, 12")); LottoTickets tickets = LottoTicketsFactory.create(purchaseAmount, manualLottos); @@ -63,10 +59,10 @@ public class LottoTicketsTest { @Test void 수동로또_개수가_구입가능_개수보다_많으면_예외를던진() { PurchaseAmount purchaseAmount = new PurchaseAmount(2000); - Lotto manual1 = new Lotto(1, 2, 3, 4, 5, 6); - Lotto manual2 = new Lotto(7, 8, 9, 10, 11, 12); - Lotto manual3 = new Lotto(13, 14, 15, 16, 17, 18); - ManualLottos manualLottos = new ManualLottos(Arrays.asList(manual1, manual2, manual3)); + ManualLottos manualLottos = new ManualLottos(Arrays.asList( + "1, 2, 3, 4, 5, 6", + "7, 8, 9, 10, 11, 12", + "13, 14, 15, 16, 17, 18")); assertThatThrownBy(() -> LottoTicketsFactory.create(purchaseAmount, manualLottos)) .isInstanceOf(IllegalArgumentException.class) diff --git a/src/test/java/lotto/domain/ManualLottosTest.java b/src/test/java/lotto/domain/ManualLottosTest.java index e783376d1c..1619fec1d6 100644 --- a/src/test/java/lotto/domain/ManualLottosTest.java +++ b/src/test/java/lotto/domain/ManualLottosTest.java @@ -11,12 +11,10 @@ public class ManualLottosTest { @Test - void 수동_로또_리스트로_생성한다() { - Lotto lotto1 = new Lotto(1, 2, 3, 4, 5, 6); - Lotto lotto2 = new Lotto(7, 8, 9, 10, 11, 12); - List lottos = Arrays.asList(lotto1, lotto2); + void 수동_로또_문자열리스트로_생성한다() { + List lottosInputs = Arrays.asList("1, 2, 3, 4, 5, 6", "7, 8, 9, 10, 11, 12"); - ManualLottos manualLottos = new ManualLottos(lottos); + ManualLottos manualLottos = new ManualLottos(lottosInputs); assertThat(manualLottos.getCount()).isEqualTo(2); } diff --git a/src/test/java/lotto/domain/WinningResultTest.java b/src/test/java/lotto/domain/WinningResultTest.java index 3b1b7ecdee..8b881ddc1f 100644 --- a/src/test/java/lotto/domain/WinningResultTest.java +++ b/src/test/java/lotto/domain/WinningResultTest.java @@ -62,7 +62,7 @@ private LottoTickets createTickets(Lotto... lottos) { for (Lotto lotto : lottos) { lottoList.add(lotto); } - return new LottoTickets(lottoList); + return new LottoTickets(lottoList, new ManualLottos(null)); } }