diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..ac5683e --- /dev/null +++ b/docs/README.md @@ -0,0 +1,75 @@ +# Leets ๋ฏธ์…˜ 1์ฃผ์ฐจ + +## ๐Ÿ‘ฅ ๋ฏธ์…˜ - ์˜ค๋Š˜์˜ ์ง๊ฟ์€? + +### โœ… ํ•ต์‹ฌ ๊ธฐ๋Šฅ + +**๋ชฉํ‘œ** + +๋‚˜์˜ ์ง๊ฟ์„ ์ •ํ•ด์ค„ ๋žœ๋ค ์ง๊ฟ ๋งค์นญ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ + +### โœ… 1์ฃผ์ฐจ ๋ฏธ์…˜ ๋ชฉํ‘œ + +#### ๊ณผ์ œ๋ฅผ ํ†ตํ•ด ์ƒ๊ฐํ•ด๋ณด๊ธฐ +- ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์งค ์ˆ˜ ์žˆ๋Š”์ง€ +- ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€ +- ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ชฉํ‘œํ•˜๋Š” ๋ฐ”๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ + +### โœ… ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ ๋ชฉ๋ก +**[ Domain ]** +- + +- [x] **Member** + +- ์ฐธ๊ฐ€์ž์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ด€๋ จ ๋กœ์ง์„ ๋‹ด๋‹น +- ๋ฌธ์ž์—ด๋กœ๋œ ๋ฉค๋ฒ„๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์ด ๋ฉค๋ฒ„์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. + +**[ Service ]** +- + +- [x] **GroupService** +- ์ฐธ๊ฐ€์ž๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋กœ์ง์„ ๋‹ด๋‹น +- ๋žœ๋ค ์ง๊ฟ์„ ์ถ”์ฒจํ•ฉ๋‹ˆ๋‹ค. + +**[ View ]** +- + +- [x] **InputView** + +- ๋ฉค๋ฒ„ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์Œ (,๋กœ ๊ตฌ๋ถ„) +- ์ตœ๋Œ€ ์ง ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์Œ +- ๋‹ค์‹œ ๊ตฌ์„ฑํ• ์ง€ ๋ง์ง€ ์ž…๋ ฅ๋ฐ›์Œ(y,n) + +- [x] **OutputView** +- ์ง ์ถ”์ฒœ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์คŒ(default, y) +- ์ธ์‚ฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด์—ฌ์คŒ(n) + +**[ Controller ]** +- + +- [x] **MatchingController** +์ง๊ถ ์ถ”์ฒœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ + +### โœ… ์˜ˆ์™ธ ์ฒ˜๋ฆฌ - exception + +********๊ณตํ†ต******** + +- [x] ์˜ˆ์™ธ ์ƒํ™ฉ ์‹œ ์—๋Ÿฌ ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅ. ๋‹จ, ์—๋Ÿฌ ๋ฌธ๊ตฌ๋Š” "[ERROR]"๋กœ ์‹œ์ž‘ + +--- + +**์ด๋ฆ„ ์ž…๋ ฅ** + +- [x] ์ด๋ฆ„์ด ํ•œ๊ธ€์ด ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ์ฒ˜๋ฆฌ + +--- + +**์ตœ๋Œ€ ์ง์ˆ˜ ์ž…๋ ฅ** + +- [x] ์ตœ๋Œ€ ์ง ์ˆ˜๊ฐ€ ์ด๋ฆ„์˜ ๊ฐฏ์ˆ˜๋ณด๋‹ค ํฌ๋ฉด ์˜ˆ์™ธ์ฒ˜๋ฆฌ +--- + +**retry ์ž…๋ ฅ** +- [x] y์™€ n ์ด์™ธ์˜ ์ˆซ์ž๋ฉด ์˜ˆ์™ธ์ฒ˜๋ฆฌ + + diff --git a/src/main/java/leets/leets_mate/LeetsMateApplication.java b/src/main/java/leets/leets_mate/LeetsMateApplication.java index e48ce2b..f2afb00 100644 --- a/src/main/java/leets/leets_mate/LeetsMateApplication.java +++ b/src/main/java/leets/leets_mate/LeetsMateApplication.java @@ -1,42 +1,10 @@ package leets.leets_mate; -import java.util.*; +import leets.leets_mate.controller.MatchingController; public class LeetsMateApplication { - - // ๋™์ž‘ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. - public void run() { - } - - // ๋ฌธ์ž์—ด๋กœ๋œ ๋ฉค๋ฒ„๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. - public List parseMembers(String members) { - return new ArrayList<>(); - } - - // ์ด ๋ฉค๋ฒ„์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. - public int memberNumber(List members) { - return 0; - } - - // ๋ฉค๋ฒ„ ๋ฌธ์ž์—ด์— ์˜์–ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ์˜ˆ์™ธ ์ถœ๋ ฅ - public void checkHasNoEnglish(String members) { - } - - // ๋ฉค๋ฒ„์ˆ˜์™€ ์ตœ๋Œ€ ์ง์ˆ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ์˜ˆ์™ธ ์ถœ๋ ฅ - public void checkDataValidity(int memberCount, int maximumGroupSize) { - } - - // ๋žœ๋ค ์ง๊ฟ ์ถ”์ฒจํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค. - public List> generateRandomGroups(List memberList, int maximumGroupSize) { - return new ArrayList<>(); - } - - // ๊ฒฐ๊ณผ๋ฅผ ํ”„๋ฆฐํŠธ ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. - public void printResult(List> result) { - } - public static void main(String[] args) { - LeetsMateApplication app = new LeetsMateApplication(); - app.run(); + MatchingController controller = new MatchingController(); + controller.run(); } } \ No newline at end of file diff --git a/src/main/java/leets/leets_mate/controller/MatchingController.java b/src/main/java/leets/leets_mate/controller/MatchingController.java new file mode 100644 index 0000000..5caf03a --- /dev/null +++ b/src/main/java/leets/leets_mate/controller/MatchingController.java @@ -0,0 +1,36 @@ +package leets.leets_mate.controller; + +import leets.leets_mate.domain.Member; +import leets.leets_mate.service.GroupService; +import leets.leets_mate.view.InputView; +import leets.leets_mate.view.OutputView; + +import java.util.List; + +public class MatchingController { + GroupService groupService = new GroupService(); + + public void run() { + String[] members = InputView.readMember(); + int maxGroupSize = InputView.readMaxGroup(members); + + List membersOfList = Member.parseMembers(members); + + boolean retry = true; + while (retry) { + List> groupsOfList = groupService.generateRandomGroups(membersOfList, maxGroupSize); + + OutputView.printResult(groupsOfList); + OutputView.printCompletionMessage(); + + OutputView.printCanYouRetry(); + retry = InputView.readRetry(); + + if (retry == true) { + OutputView.printLine(); + } + } + + OutputView.printDontWantRetry(); + } +} diff --git a/src/main/java/leets/leets_mate/domain/Member.java b/src/main/java/leets/leets_mate/domain/Member.java new file mode 100644 index 0000000..e1e752c --- /dev/null +++ b/src/main/java/leets/leets_mate/domain/Member.java @@ -0,0 +1,29 @@ +package leets.leets_mate.domain; + +import java.util.ArrayList; +import java.util.List; + +public class Member { + private String name; + + public Member(String name) { + this.name = name; + } + + public static List parseMembers(String[] memberName) { + List members = new ArrayList<>(); + for (String name : memberName) { + members.add(new Member(name)); + } + + return members; + } + + public static int memberNumber(List members) { + return members.size(); + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/leets/leets_mate/service/GroupService.java b/src/main/java/leets/leets_mate/service/GroupService.java new file mode 100644 index 0000000..193f637 --- /dev/null +++ b/src/main/java/leets/leets_mate/service/GroupService.java @@ -0,0 +1,32 @@ +package leets.leets_mate.service; + +import leets.leets_mate.domain.Member; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class GroupService { + public List> generateRandomGroups(List memberList, int maximumGroupSize) { + Collections.shuffle(memberList); + + List> groups = new ArrayList<>(); + List group = new ArrayList<>(); + + for (Member member : memberList) { + group.add(member); + + if (group.size() == maximumGroupSize) { + groups.add(new ArrayList<>(group)); + group.clear(); + } + } + + // ํ˜„์žฌ๋กœ์จ๋Š” ๋นˆ ๊ทธ๋ฃน์ด ์ถ”๊ฐ€๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋ณด์ด์ง€ ์•Š๊ธดํ•˜๋‚˜, ํ˜น์‹œ ๋ชจ๋ฅผ ๋นˆ ๊ทธ๋ฃน ์ถ”๊ฐ€ ๋ฐฉ์ง€ + if (!group.isEmpty()) { + groups.add(group); + } + + return groups; + } +} diff --git a/src/main/java/leets/leets_mate/view/InputView.java b/src/main/java/leets/leets_mate/view/InputView.java new file mode 100644 index 0000000..74509cf --- /dev/null +++ b/src/main/java/leets/leets_mate/view/InputView.java @@ -0,0 +1,88 @@ +package leets.leets_mate.view; + +import leets.leets_mate.view.exception.IllegalArgumentExceptionType; + +import java.util.InputMismatchException; +import java.util.Scanner; +import java.util.regex.Pattern; + +public class InputView { + private static final Scanner kb = new Scanner(System.in); + + private InputView() { + } + + public static InputView create() { + return new InputView(); + } + + public static String[] readMember() { + OutputView.printStartMessage(); + try { + String input = kb.nextLine(); + String[] members = input.split(","); + for (String member : members) { + checkHasNoEnglish(member); + } + return members; + } + catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); // ์ถ”ํ›„ ์ด๋ถ€๋ถ„์€ enum์œผ๋กœ ๋™์•„๋ฆฌ ๋ถ€์›๋ฅผ ๊ด€๋ฆฌํ–ˆ์„ ๋•Œ ์—†๋Š” ๋™์•„๋ฆฌ ๋ถ€์›์„ ์ž…๋ ฅํ•˜๋ฉด ์—๋Ÿฌ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ๋„ ํ•˜๋„๋ก ๊ตฌํ˜„ + return readMember(); + } + } + + public static int readMaxGroup(String[] members) { + OutputView.printMaxGroup(); + try { + int memberCount = members.length; + int maximumGroupSize = kb.nextInt(); + kb.nextLine(); + + checkDataValidity(memberCount, maximumGroupSize); + + System.out.println(); + return maximumGroupSize; + } catch (InputMismatchException e) { + System.out.println(IllegalArgumentExceptionType.INVALID_MAX_GROUP.getMessage()); + kb.nextLine(); + return readMaxGroup((members)); + } catch (IllegalArgumentException e){ + System.out.println(e.getMessage()); + return readMaxGroup(members); + } + } + + public static void checkHasNoEnglish(String member) { + // Character.isAlphabetic()์€ ์˜์–ด์ธ์ง€ ๊ตฌ๋ณ„ํ•ด์ฃผ๋Š”๊ฒŒ ์•„๋‹Œ ์ˆซ์ž์™€ ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ด์ค€๋‹ค! +// for(char c : member.toCharArray()) { +// if (Character.isAlphabetic(c)) { +// throw IllegalArgumentExceptionType.INVALID_NAMING.getException(); +// } +// } + if (Pattern.matches(".*[a-zA-Z]+.*", member)) { + throw IllegalArgumentExceptionType.INVALID_NAMING.getException(); + } + } + + public static void checkDataValidity(int memberCount, int maximumGroupSize) { + if (memberCount < maximumGroupSize) { + throw IllegalArgumentExceptionType.GROUP_SIZE_EXCEEDS_MEMBER_COUNT.getException(); + } + } + + public static boolean readRetry() { + try { + char c = kb.next().charAt(0); + if (c == 'y') { + return true; + } else if (c == 'n') { + return false; + } else + throw IllegalArgumentExceptionType.INVALID_RETRY_INPUT.getException(); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + return readRetry(); + } + } +} diff --git a/src/main/java/leets/leets_mate/view/OutputView.java b/src/main/java/leets/leets_mate/view/OutputView.java new file mode 100644 index 0000000..d6efc8f --- /dev/null +++ b/src/main/java/leets/leets_mate/view/OutputView.java @@ -0,0 +1,49 @@ +package leets.leets_mate.view; + +import leets.leets_mate.domain.Member; + +import java.util.List; +import java.util.stream.Collectors; + +public class OutputView { + public static void printStartMessage() { + System.out.println("[Leets ์˜ค๋Š˜์˜ ์ง์—๊ฒŒ]๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค."); + System.out.println(); + System.out.println("๋ฉค๋ฒ„์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”. (, ๋กœ ๊ตฌ๋ถ„)"); + } + + public static void printMaxGroup() { + System.out.println(); + System.out.println("์ตœ๋Œ€ ์ง ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”."); + } + + public static void printResult(List> result) { + System.out.println("์˜ค๋Š˜์˜ ์ง ์ถ”์ฒœ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค."); + for (List group : result) { + + List memberNames = group.stream() + .map(Member::getName) + .collect(Collectors.toList()); + String groupResult = String.join(" | ", memberNames); + + System.out.println("[ " + groupResult + " ]"); + } + } + + public static void printCompletionMessage() { + System.out.println(); + System.out.println("์ถ”์ฒœ์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค."); + } + + public static void printCanYouRetry() { + System.out.print("๋‹ค์‹œ ๊ตฌ์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (y or n): "); + } + + public static void printLine() { + System.out.println("--------------------------------"); + } + + public static void printDontWantRetry() { + System.out.println("์ž๋ฆฌ๋ฅผ ์ด๋™ํ•ด ์„œ๋กœ์—๊ฒŒ ์ธ์‚ฌํ•ด์ฃผ์„ธ์š”."); + } +} diff --git a/src/main/java/leets/leets_mate/view/exception/ExceptionType.java b/src/main/java/leets/leets_mate/view/exception/ExceptionType.java new file mode 100644 index 0000000..97d205e --- /dev/null +++ b/src/main/java/leets/leets_mate/view/exception/ExceptionType.java @@ -0,0 +1,7 @@ +package leets.leets_mate.view.exception; + +public interface ExceptionType { + String getMessage(); + + T getException(); +} \ No newline at end of file diff --git a/src/main/java/leets/leets_mate/view/exception/IllegalArgumentExceptionType.java b/src/main/java/leets/leets_mate/view/exception/IllegalArgumentExceptionType.java new file mode 100644 index 0000000..1ad7879 --- /dev/null +++ b/src/main/java/leets/leets_mate/view/exception/IllegalArgumentExceptionType.java @@ -0,0 +1,25 @@ +package leets.leets_mate.view.exception; + +public enum IllegalArgumentExceptionType implements ExceptionType { + + INVALID_NAMING("[ERROR] ์ด๋ฆ„์€ ํ•œ๊ธ€๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"), + GROUP_SIZE_EXCEEDS_MEMBER_COUNT("[ERROR] ์ตœ๋Œ€ ์ง ์ˆ˜๋Š” ์ด๋ฆ„์˜ ๊ฐฏ์ˆ˜๋ณด๋‹ค ํด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."), + INVALID_MAX_GROUP("[ERROR] ์ตœ๋Œ€ ์ง์ˆ˜๋Š” ์ˆซ์ž๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"), + INVALID_RETRY_INPUT("[ERROR] y์™€ n๋งŒ ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค."); + + private final String message; + + IllegalArgumentExceptionType(String message) { + this.message = message; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public IllegalArgumentException getException() { + return new IllegalArgumentException(getMessage()); + } +} diff --git a/src/test/java/leets/leets_mate/LeetsMateApplicationTests.java b/src/test/java/leets/leets_mate/LeetsMateApplicationTests.java index 706e295..db1924b 100644 --- a/src/test/java/leets/leets_mate/LeetsMateApplicationTests.java +++ b/src/test/java/leets/leets_mate/LeetsMateApplicationTests.java @@ -16,32 +16,4 @@ class LeetsMateApplicationTests { void setUp() { app = new LeetsMateApplication(); } - - @Test - void ์ž…๋ ฅ๋ฐ›์€_๋ฌธ์ž์—ด์„_ํŒŒ์‹ฑํ•˜์—ฌ_๋ฆฌ์ŠคํŠธ๋กœ_๋งŒ๋“ ๋‹ค() { - String members = "๋ฆฌ์ธ ์—,์˜ค์‹ ,๊ฑธ,ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"; - List actual = app.parseMembers(members); - assertThat(actual).containsExactly("๋ฆฌ์ธ ์—", "์˜ค์‹ ", "๊ฑธ", "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"); - } - - @Test - void ๋ฉค๋ฒ„์ˆ˜๋ฅผ_๋ฐ˜ํ™˜ํ•œ๋‹ค() { - List members = Arrays.asList("๋ฆฌ์ธ ์—", "์˜ค์‹ ", "๊ฑธ", "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"); - int actual = app.memberNumber(members); - assertThat(actual).isEqualTo(4); - } - - @Test - void ๋ฉค๋ฒ„์ˆ˜์™€_์ตœ๋Œ€_๋ฉค๋ฒ„์ˆ˜๋ฅผ_์ž˜๋ชป_์ž…๋ ฅํ•œ_๊ฒฝ์šฐ_์˜ˆ์™ธ๋ฅผ_๋ฐ˜ํ™˜ํ•œ๋‹ค() { - assertThrows(Exception.class, () -> { - app.checkDataValidity(3, 4); - }); - } - - @Test - void ๋ฉค๋ฒ„_๋ฌธ์ž์—ด์—_์˜์–ด๋ฅผ_์ž…๋ ฅํ•œ_๊ฒฝ์šฐ_์˜ˆ์™ธ๋ฅผ_๋ฐ˜ํ™˜ํ•œ๋‹ค() { - assertThrows(Exception.class, () -> { - app.checkHasNoEnglish("welcome,to,leets"); - }); - } } \ No newline at end of file diff --git a/src/test/java/leets/leets_mate/domain/MemberTests.java b/src/test/java/leets/leets_mate/domain/MemberTests.java new file mode 100644 index 0000000..67a4d1e --- /dev/null +++ b/src/test/java/leets/leets_mate/domain/MemberTests.java @@ -0,0 +1,26 @@ +package leets.leets_mate.domain; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class MemberTests { + + @Test + void ์ž…๋ ฅ๋ฐ›์€_๋ฌธ์ž์—ด์„_ํŒŒ์‹ฑํ•˜์—ฌ_๋ฆฌ์ŠคํŠธ๋กœ_๋งŒ๋“ ๋‹ค() { + String[] members = {"๋ฆฌ์ธ ์—", "์˜ค์‹ ", "๊ฑธ", "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"}; + List actual = Member.parseMembers(members); + assertThat(actual).extracting(Member::getName) + .containsExactly("๋ฆฌ์ธ ์—", "์˜ค์‹ ", "๊ฑธ", "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"); } + + @Test + void ๋ฉค๋ฒ„์ˆ˜๋ฅผ_๋ฐ˜ํ™˜ํ•œ๋‹ค() { + String[] membersArray = {"๋ฆฌ์ธ ์—", "์˜ค์‹ ", "๊ฑธ", "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"}; + List members = Member.parseMembers(membersArray); + int actual = Member.memberNumber(members); + assertThat(actual).isEqualTo(4); + } +} + diff --git a/src/test/java/leets/leets_mate/view/InputViewTests.java b/src/test/java/leets/leets_mate/view/InputViewTests.java new file mode 100644 index 0000000..a8c8fd5 --- /dev/null +++ b/src/test/java/leets/leets_mate/view/InputViewTests.java @@ -0,0 +1,19 @@ +package leets.leets_mate.view; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class InputViewTests { + + @Test + void ๋ฉค๋ฒ„์ˆ˜์™€_์ตœ๋Œ€_๋ฉค๋ฒ„์ˆ˜๋ฅผ_์ž˜๋ชป_์ž…๋ ฅํ•œ_๊ฒฝ์šฐ_์˜ˆ์™ธ๋ฅผ_๋ฐ˜ํ™˜ํ•œ๋‹ค() { + InputView inputView = InputView.create(); + assertThrows(IllegalArgumentException.class, () -> inputView.checkDataValidity(3, 4)); + } + + @Test + void ๋ฉค๋ฒ„_๋ฌธ์ž์—ด์—_์˜์–ด๋ฅผ_์ž…๋ ฅํ•œ_๊ฒฝ์šฐ_์˜ˆ์™ธ๋ฅผ_๋ฐ˜ํ™˜ํ•œ๋‹ค() { + InputView inputView = InputView.create(); + assertThrows(IllegalArgumentException.class, () -> inputView.checkHasNoEnglish("welcome,to,leets")); + } +}