diff --git a/build.gradle b/build.gradle index 239f9e78..454ab60c 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,12 @@ plugins { id 'java' } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + group = 'cholog' version = '1.0-SNAPSHOT' diff --git a/src/main/java/lotto/Application.java b/src/main/java/lotto/Application.java index 49173376..f9a24519 100644 --- a/src/main/java/lotto/Application.java +++ b/src/main/java/lotto/Application.java @@ -1,28 +1,44 @@ package lotto; +import lotto.domain.*; +import lotto.input.PassivityLottoInput; +import lotto.input.PassivityNumberInput; +import lotto.input.WinningNumberInput; +import lotto.parser.WinningNumberParser; + import java.util.ArrayList; import java.util.List; import java.util.Scanner; -import java.util.stream.Collectors; -import java.util.List; -import java.util.Scanner; public class Application { private static final int MINIMUM_AMOUNT = 1000; public static void main(String[] args) { + new Application().run(); + } + + // 테스트 확인 + private void run() { int ticketCount = buyLotto(); - List tickets = createTickets(ticketCount); - WinningNumberInput input = new WinningNumberInput(); - WinningNumber winning = input.inputWinningNumber(); - int ticketCount = buyLotto(); - List tickets = createTickets(ticketCount); - WinningNumber winning = WinningNumber.inputWinningNumbers(); - LottoStatus status = checkResult(tickets, winning); - printResults(status, ticketCount); + List ticket = prepareTicket(ticketCount); + WinningNumber winningNumber = new WinningNumberInput().inputWinningNumber(); + LottoStatus lottoStatus = checkResult(ticket, winningNumber); + lottoStatus.print(ticketCount, MINIMUM_AMOUNT); } + private List prepareTicket(int ticketCount) { + int passivityCount = new PassivityNumberInput(ticketCount).passivityLottoCount(); + List passivityTicket = new PassivityLottoInput( + new WinningNumberParser()).inputPassivityTicket(passivityCount); + List auto = LottoCounter.generateAuto(ticketCount, passivityCount); + List totalTicket = new ArrayList<>(); + totalTicket.addAll(passivityTicket); + totalTicket.addAll(auto); + System.out.printf("수동 %d장, 자동 %d장 구매 완료%n", passivityCount, ticketCount - passivityCount); + return totalTicket; + } + private static int buyLotto() { Money money = new Money(inputMoney()); int ticketCount = money.countTickets(MINIMUM_AMOUNT); @@ -38,40 +54,7 @@ private static List createTickets(int count) { List picked = LottoManage.pickupLottoNumbers(lottoParts); List wrapped = picked.stream() .map(LottoNumber::new) - .collect(Collectors.toList()); - - tickets.add(InputLottoNumber.of(wrapped)); - } - return tickets; - } - - private static LottoStatus checkResult( - List tickets, - WinningNumber winning) { - LottoStatus status = new LottoStatus(); - tickets.forEach(ticket -> { - System.out.println(ticket); - status.record(MatchResult.of(ticket.countMatching(winning))); - }); - return status; - } - - private static void printResults(LottoStatus status, int ticketCount) { - System.out.println("\n당첨 통계\n---------"); - status.print(); - Money totalCost = new Money(ticketCount * MINIMUM_AMOUNT); - Money totalPayout = status.getTotalPrizeAmount(); - double returnMoney = (double) totalPayout.getAmount() / totalCost.getAmount(); - System.out.printf("총 수익률: %.2f 입니다.%n", returnMoney); - int money = inputMoney(); - int count = money / MINIMUM_AMOUNT; - for (int i = 0; i < count; i++) { - List lottoParts = LottoManage.pullOutNumbers(); - LottoManage.shuffleNumbers(lottoParts); - List picked = LottoManage.pickupLottoNumbers(lottoParts); - List wrapped = picked.stream() - .map(LottoNumber::new) - .toList(); + .toList(); tickets.add(InputLottoNumber.of(wrapped)); } @@ -89,15 +72,6 @@ private static LottoStatus checkResult( return status; } - private static void printResults(LottoStatus status, int ticketCount) { - System.out.println("\n당첨 통계\n---------"); - status.print(); - Money totalCost = new Money(ticketCount * MINIMUM_AMOUNT); - Money totalPayout = status.getTotalPrizeAmount(); - double returnMoney = (double) totalPayout.getAmount() / totalCost.getAmount(); - System.out.printf("총 수익률: %.2f 입니다.%n", returnMoney); - } - private static int inputMoney() { Scanner scanner = new Scanner(System.in); System.out.print("구입 금액 입력(금액은 1000원 이상 입력해주세요): "); diff --git a/src/main/java/lotto/LottoCounter.java b/src/main/java/lotto/LottoCounter.java new file mode 100644 index 00000000..61233b60 --- /dev/null +++ b/src/main/java/lotto/LottoCounter.java @@ -0,0 +1,23 @@ +package lotto; + +import lotto.domain.InputLottoNumber; +import lotto.domain.LottoNumber; + +import java.util.List; +import java.util.stream.IntStream; + +public class LottoCounter { + + public static List generateAuto(int totalTicket, int passivityCount) { + int autoLottoCount = totalTicket - passivityCount; + return IntStream.range(0, autoLottoCount) + .mapToObj(i -> { + List pool = LottoManage.pullOutNumbers(); + LottoManage.shuffleNumbers(pool); + List picked = LottoManage.pickupLottoNumbers(pool) + .stream().map(LottoNumber::new).toList(); + return InputLottoNumber.of(picked); + }) + .toList(); + } +} diff --git a/src/main/java/lotto/LottoNumber.java b/src/main/java/lotto/LottoNumber.java deleted file mode 100644 index d9e456a2..00000000 --- a/src/main/java/lotto/LottoNumber.java +++ /dev/null @@ -1,44 +0,0 @@ -package lotto; - -public record LottoNumber(int value) { - private static final int MINIMUM_NUMBER = 1; - private static final int MAX_NUMBER = 45; - - public LottoNumber { - if (value < MINIMUM_NUMBER || value > MAX_NUMBER) { - throw new IllegalArgumentException("로또 번호는 1 ~45 사이의 숫자 입니다."); - } - -public class LottoNumber { - private final int value; - private static final int MINIMUM_NUMBER = 1; - private static final int MAX_NUMBER = 45; - - public LottoNumber(int value) { - if (value < MINIMUM_NUMBER || value > MAX_NUMBER) { - throw new IllegalArgumentException("로또 번호는 1 ~45 사이의 숫자 입니다."); - } - this.value = value; - } - - public int getValue() { - return value; - } - - @Override - public boolean equals(Object object) { - if (!(object instanceof LottoNumber)) return false; - return this.value == ((LottoNumber) object).value; - } - - @Override - public int hashCode() { - return Integer.hashCode(value); - } - - - @Override - public String toString() { - return String.valueOf(value); - } -} diff --git a/src/main/java/lotto/LottoStatus.java b/src/main/java/lotto/LottoStatus.java deleted file mode 100644 index a104a209..00000000 --- a/src/main/java/lotto/LottoStatus.java +++ /dev/null @@ -1,39 +0,0 @@ -package lotto; - -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; - -public class LottoStatus { - private final Map stat = new HashMap<>(); - - public void record(MatchResult matchResult) { - stat.put(matchResult, stat.getOrDefault(matchResult, 0) + 1); - } - - public void print() { - MatchResult.getAll().stream() - .filter(matchResult -> matchResult != MatchResult.NONE) - .sorted(Comparator.comparing(MatchResult::getMatchCount)) - .forEach(matchResult -> System.out.printf( - "%d개 일치 (%d원)- %d개\n", - matchResult.getMatchCount(), matchResult.getPrizeAmount().amount, - stat.getOrDefault(matchResult, 0) - .filter(r -> r != MatchResult.NONE) - .forEach(r -> System.out.printf( - "%d개 일치 (%d원)- %d개\n", - r.getMatchCount(), r.getPrizeAmount().amount, - stat.getOrDefault(r, 0) - )); - } - - public Money getTotalPrizeAmount() { - int sum = 0; - for (Map.Entry entry : stat.entrySet()) { - sum += entry.getKey().getPrizeAmount().amount * entry.getValue(); - } - return new Money(sum); - } - - -} diff --git a/src/main/java/lotto/WinningNumber.java b/src/main/java/lotto/WinningNumber.java deleted file mode 100644 index 3d5ff49f..00000000 --- a/src/main/java/lotto/WinningNumber.java +++ /dev/null @@ -1,97 +0,0 @@ -package lotto; - - -import java.util.List; - -public class WinningNumber { - private final List winning; - private final LottoNumber bonus; - - private WinningNumber(List winning, LottoNumber bonus) { - this.bonus = bonus; - this.winning = winning; - } - - public static WinningNumber of(List winning, LottoNumber bonus) { - return new WinningNumber(winning, bonus); - } - - public List getWinning() { - return winning; - } - - public LottoNumber getBonus() { - return bonus; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Scanner; - -public class WinningNumber { - private final List winning; - private static final int LOTTO_START_NUMBER = 1; - private static final int LOTTO_END_NUMBER = 45; - - private WinningNumber(List winning) { - this.winning = winning; - } - - public static WinningNumber of(List list) { - return new WinningNumber(list); - } - - public static WinningNumber inputWinningNumbers() { - while (true) { - String line = readLine(); - try { - List list = parseNumbers(line); - numberValidate(list); - duplicateNumber(list); - return WinningNumber.of(list); - } catch (IllegalArgumentException e) { - System.out.println("→ " + e.getMessage() + " 다시 입력해주세요."); - } - } - } - private static String readLine() { - System.out.println("지난 주 당첨 번호를 입력해 주세요 (예: 1,2,3,4,5,6): "); - return new Scanner(System.in).nextLine(); - } - - private static List parseNumbers(String line) { - String[] parts = line.split(","); - if (parts.length != 6) { - throw new IllegalArgumentException("숫자는 반드시 6개여야 합니다."); - } - List list = new ArrayList<>(); - for (String lottoParts : parts) { - try { - list.add(new LottoNumber(Integer.parseInt(lottoParts.trim()))); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("숫자 형식이 올바르지 않습니다."); - } - } - return list; - } - - private static void numberValidate(List list) { - for (LottoNumber lottoNumber : list) { - int inputNumber = lottoNumber.getValue(); - if (inputNumber < LOTTO_START_NUMBER || inputNumber > LOTTO_END_NUMBER) { - throw new IllegalArgumentException("1~45 사이의 숫자만 입력 가능합니다."); - } - } - } - - private static void duplicateNumber(List list) { - if (new HashSet<>(list).size() != list.size()) { - throw new IllegalArgumentException("중복된 숫자가 있습니다."); - } - } - - public boolean contains(LottoNumber num) { - return winning.contains(num); - } - -} diff --git a/src/main/java/lotto/BonusNumber.java b/src/main/java/lotto/domain/BonusNumber.java similarity index 96% rename from src/main/java/lotto/BonusNumber.java rename to src/main/java/lotto/domain/BonusNumber.java index 4179c22a..21cd23e3 100644 --- a/src/main/java/lotto/BonusNumber.java +++ b/src/main/java/lotto/domain/BonusNumber.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.domain; public class BonusNumber { private final LottoNumber bonus; diff --git a/src/main/java/lotto/InputLottoNumber.java b/src/main/java/lotto/domain/InputLottoNumber.java similarity index 89% rename from src/main/java/lotto/InputLottoNumber.java rename to src/main/java/lotto/domain/InputLottoNumber.java index 204a225c..efa8dd93 100644 --- a/src/main/java/lotto/InputLottoNumber.java +++ b/src/main/java/lotto/domain/InputLottoNumber.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.domain; import java.util.List; import java.util.stream.Collectors; @@ -29,9 +29,5 @@ public String toString() { return numbers.stream() .map(n -> String.valueOf(n.getValue())) .collect(Collectors.joining(", ", "[", "]")); - - @Override - public String toString() { - return numbers.toString(); } } diff --git a/src/main/java/lotto/LottoBonus.java b/src/main/java/lotto/domain/LottoBonus.java similarity index 68% rename from src/main/java/lotto/LottoBonus.java rename to src/main/java/lotto/domain/LottoBonus.java index 787ab708..00c62fc1 100644 --- a/src/main/java/lotto/LottoBonus.java +++ b/src/main/java/lotto/domain/LottoBonus.java @@ -1,4 +1,7 @@ -package lotto; +package lotto.domain; + +import java.util.Comparator; +import java.util.EnumSet; public enum LottoBonus { FIRST_PLACE(6, false, 2000000000), @@ -31,16 +34,9 @@ public Money getWinningMoney() { } public static LottoBonus valueOf (int matchCount, boolean needBonusMatch) { - for (LottoBonus bonus : values()) { - if (bonus.matchCount == matchCount && bonus.needBonusMatch == needBonusMatch) { - return bonus; - } - } - for (LottoBonus bonus : values()) { - if (bonus.matchCount == matchCount && !bonus.needBonusMatch) { - return bonus; - } - } - return LOSING_PLACE; + return EnumSet.allOf(LottoBonus.class).stream() + .filter(b -> b.matchCount == matchCount) + .min(Comparator.comparing(b -> b.needBonusMatch != needBonusMatch)) + .orElse(LOSING_PLACE); } } diff --git a/src/main/java/lotto/domain/LottoNumber.java b/src/main/java/lotto/domain/LottoNumber.java new file mode 100644 index 00000000..962f56d5 --- /dev/null +++ b/src/main/java/lotto/domain/LottoNumber.java @@ -0,0 +1,16 @@ +package lotto.domain; + +public record LottoNumber(int value) { + + private static final int MINIMUM_NUMBER = 1; + private static final int MAX_NUMBER = 45; + + public LottoNumber { + if (value < MINIMUM_NUMBER || value > MAX_NUMBER) { + throw new IllegalArgumentException("로또 번호는 1 ~45 사이의 숫자 입니다."); + } + } + public int getValue() { + return value(); + } +} diff --git a/src/main/java/lotto/domain/LottoStatus.java b/src/main/java/lotto/domain/LottoStatus.java new file mode 100644 index 00000000..e58b1d75 --- /dev/null +++ b/src/main/java/lotto/domain/LottoStatus.java @@ -0,0 +1,47 @@ +package lotto.domain; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; + +public class LottoStatus { + private final Map stat = new HashMap<>(); + + public void record(MatchResult matchResult) { + stat.put(matchResult, stat.getOrDefault(matchResult, 0) + 1); + } + + public void print(int ticketCount, int minimumAmount) { + System.out.println("당첨 통계\n--------"); + MatchResult.getAll().stream() + .filter(matchResult -> matchResult != MatchResult.NONE) + .sorted(Comparator.comparingInt(MatchResult::getMatchCount)) + .map(matchResult -> { + String matchLabel = matchResult.getMatchCount() + "개 일치"; + if (matchResult.isBonusMatch()) { + matchLabel += ", 보너스 볼 일치"; + } + return String.format( + "%s (%d원)- %d개", + matchLabel, + matchResult.getPrizeAmount().getAmount(), + stat.getOrDefault(matchResult, 0) + ); + }) + .forEach(System.out::println); + double returnRate = (double) getTotalPrizeAmount().getAmount() + / (ticketCount * minimumAmount); + System.out.printf("총 수익률은 %.2f 입니다.%n", returnRate); + + } + + public Money getTotalPrizeAmount() { + int sum = 0; + for (Map.Entry entry : stat.entrySet()) { + sum += entry.getKey().getPrizeAmount().amount * entry.getValue(); + } + return new Money(sum); + } + + +} diff --git a/src/main/java/lotto/MatchResult.java b/src/main/java/lotto/domain/MatchResult.java similarity index 54% rename from src/main/java/lotto/MatchResult.java rename to src/main/java/lotto/domain/MatchResult.java index 7b0a03a9..db7c302f 100644 --- a/src/main/java/lotto/MatchResult.java +++ b/src/main/java/lotto/domain/MatchResult.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.domain; import java.util.Arrays; import java.util.List; @@ -52,38 +52,6 @@ public boolean equals(Object object) { @Override public int hashCode() { return bonus.hashCode(); - private final int matchCount; - private final Money prizeAmount; - private static final MatchResult THREE = new MatchResult(3, new Money(5000)); - private static final MatchResult FOUR = new MatchResult(4, new Money(50000)); - private static final MatchResult FIVE = new MatchResult(5, new Money(1500000)); - private static final MatchResult SIX = new MatchResult(6, new Money(2000000000)); - public static final MatchResult NONE = new MatchResult(0, new Money(0)); - private static final List VALUES = Arrays.asList(THREE, FOUR, FIVE, SIX, NONE); - - private MatchResult(int matchCount, Money prizeAmount) { - this.matchCount = matchCount; - this.prizeAmount = prizeAmount; - } - - - public static MatchResult of(int count) { - for (MatchResult matchResult : VALUES) { - if (matchResult.matchCount == count) return matchResult; - } - return NONE; - } - - public int getMatchCount() { - return matchCount; - } - - public Money getPrizeAmount() { - return prizeAmount; - } - - public static List getAll() { - return VALUES; } } diff --git a/src/main/java/lotto/Money.java b/src/main/java/lotto/domain/Money.java similarity index 92% rename from src/main/java/lotto/Money.java rename to src/main/java/lotto/domain/Money.java index 356bd9f7..5b3e9304 100644 --- a/src/main/java/lotto/Money.java +++ b/src/main/java/lotto/domain/Money.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.domain; public class Money { public final int amount; diff --git a/src/main/java/lotto/domain/WinningNumber.java b/src/main/java/lotto/domain/WinningNumber.java new file mode 100644 index 00000000..aa2d50e2 --- /dev/null +++ b/src/main/java/lotto/domain/WinningNumber.java @@ -0,0 +1,29 @@ +package lotto.domain; + +import java.util.List; + +public class WinningNumber { + private final List winning; + private final LottoNumber bonus; + + private WinningNumber(List winning, LottoNumber bonus) { + this.bonus = bonus; + this.winning = winning; + } + + public static WinningNumber of(List winning, LottoNumber bonus) { + return new WinningNumber(winning, bonus); + } + + public List getWinning() { + return winning; + } + + public LottoNumber getBonus() { + return bonus; + } + + public boolean contains(LottoNumber number) { + return winning.contains(number); + } +} diff --git a/src/main/java/lotto/InputMoney.java b/src/main/java/lotto/input/InputMoney.java similarity index 96% rename from src/main/java/lotto/InputMoney.java rename to src/main/java/lotto/input/InputMoney.java index 9ca5cb16..9d92e4a3 100644 --- a/src/main/java/lotto/InputMoney.java +++ b/src/main/java/lotto/input/InputMoney.java @@ -1,4 +1,4 @@ -package lotto; +package lotto.input; import java.util.Scanner; diff --git a/src/main/java/lotto/input/PassivityLottoInput.java b/src/main/java/lotto/input/PassivityLottoInput.java new file mode 100644 index 00000000..52ef8cd2 --- /dev/null +++ b/src/main/java/lotto/input/PassivityLottoInput.java @@ -0,0 +1,29 @@ +package lotto.input; + +import lotto.domain.InputLottoNumber; +import lotto.domain.LottoNumber; +import lotto.parser.WinningNumberParser; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class PassivityLottoInput { + private final WinningNumberParser winningNumberParser; + private final Scanner scanner = new Scanner(System.in); + + public PassivityLottoInput(WinningNumberParser winningNumberParser) { + this.winningNumberParser = winningNumberParser; + } + + public List inputPassivityTicket(int count) { + List passivityTicket = new ArrayList<>(); + for (int i = 1; i <= count; i++) { + System.out.print(i + "번째 수동 로또 번호를 입력해주세요: "); + String line = scanner.nextLine(); + List number = winningNumberParser.parseNumbers(line); + passivityTicket.add(InputLottoNumber.of(number)); + } + return passivityTicket; + } +} diff --git a/src/main/java/lotto/input/PassivityNumberInput.java b/src/main/java/lotto/input/PassivityNumberInput.java new file mode 100644 index 00000000..8628ac33 --- /dev/null +++ b/src/main/java/lotto/input/PassivityNumberInput.java @@ -0,0 +1,24 @@ +package lotto.input; + +import java.util.Scanner; + +public class PassivityNumberInput { + private final Scanner scanner = new Scanner(System.in); + private final int totalTicket; + + public PassivityNumberInput(int totalTicket) { + this.totalTicket = totalTicket; + } + + public int passivityLottoCount() { + System.out.println("수동으로 구매할 로또 수를 입력해 주세요."); + int count = scanner.nextInt(); + while (count < 0 || count > totalTicket) { + System.out.println("잘못된 입력입니다 구입 금액에 맞춰 다시 작성해주세요"); + count = scanner.nextInt(); + } + return count; + } + + +} diff --git a/src/main/java/lotto/WinningNumberInput.java b/src/main/java/lotto/input/WinningNumberInput.java similarity index 91% rename from src/main/java/lotto/WinningNumberInput.java rename to src/main/java/lotto/input/WinningNumberInput.java index 1646f018..2592ac56 100644 --- a/src/main/java/lotto/WinningNumberInput.java +++ b/src/main/java/lotto/input/WinningNumberInput.java @@ -1,4 +1,8 @@ -package lotto; +package lotto.input; + +import lotto.domain.LottoNumber; +import lotto.domain.WinningNumber; +import lotto.parser.WinningNumberParser; import java.util.List; import java.util.Scanner; diff --git a/src/main/java/lotto/WinningNumberParser.java b/src/main/java/lotto/parser/WinningNumberParser.java similarity index 95% rename from src/main/java/lotto/WinningNumberParser.java rename to src/main/java/lotto/parser/WinningNumberParser.java index 68cd8cc4..eab72907 100644 --- a/src/main/java/lotto/WinningNumberParser.java +++ b/src/main/java/lotto/parser/WinningNumberParser.java @@ -1,4 +1,6 @@ -package lotto; +package lotto.parser; + +import lotto.domain.LottoNumber; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/lotto/WinningNumberValidate.java b/src/main/java/lotto/validate/WinningNumberValidate.java similarity index 94% rename from src/main/java/lotto/WinningNumberValidate.java rename to src/main/java/lotto/validate/WinningNumberValidate.java index ad14c70e..f0a062c8 100644 --- a/src/main/java/lotto/WinningNumberValidate.java +++ b/src/main/java/lotto/validate/WinningNumberValidate.java @@ -1,4 +1,6 @@ -package lotto; +package lotto.validate; + +import lotto.domain.LottoNumber; import java.util.HashSet; import java.util.List; diff --git a/src/test/java/lotto/InputLottoNumberTest.java b/src/test/java/lotto/InputLottoNumberTest.java index 5b8e7f18..bd879ca4 100644 --- a/src/test/java/lotto/InputLottoNumberTest.java +++ b/src/test/java/lotto/InputLottoNumberTest.java @@ -1,5 +1,6 @@ package lotto; +import lotto.domain.LottoNumber; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/lotto/LottoCounterTest.java b/src/test/java/lotto/LottoCounterTest.java new file mode 100644 index 00000000..256c8ad1 --- /dev/null +++ b/src/test/java/lotto/LottoCounterTest.java @@ -0,0 +1,21 @@ +package lotto; + +import lotto.domain.InputLottoNumber; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class LottoCounterTest { + + @Test + void generateAuto() { + int total = 5; + int passivity = 2; + + List autos = LottoCounter.generateAuto(total, passivity); + + assertEquals(3, autos.size(), "자동 로또 개수는 총 5장에서 수동 2장을 뺀 3장입니다."); + } +} \ No newline at end of file diff --git a/src/test/java/lotto/LottoManageTest.java b/src/test/java/lotto/LottoManageTest.java index 2c4f0e33..97683f94 100644 --- a/src/test/java/lotto/LottoManageTest.java +++ b/src/test/java/lotto/LottoManageTest.java @@ -9,8 +9,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; -======= -import static org.junit.jupiter.api.Assertions.*; class LottoManageTest { diff --git a/src/test/java/lotto/PassivityNumberInputTest.java b/src/test/java/lotto/PassivityNumberInputTest.java new file mode 100644 index 00000000..b8ebb896 --- /dev/null +++ b/src/test/java/lotto/PassivityNumberInputTest.java @@ -0,0 +1,24 @@ +package lotto; + +import lotto.input.PassivityNumberInput; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; + +import static org.junit.jupiter.api.Assertions.*; + +class PassivityNumberInputTest { + + @Test + void passivityLottoCount() { + String input = "7\n-1\n2\n"; + ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + PassivityNumberInput passivityNumberInput = new PassivityNumberInput(5); + int result = passivityNumberInput.passivityLottoCount(); + + assertEquals(2, result, "수동 개수는 2개 반한됩니다"); + } + +} \ No newline at end of file