From f48034764ccd87c12ee2c4ab87cd3f3ff6d6b552 Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Thu, 5 Dec 2024 23:43:25 +0900 Subject: [PATCH 1/7] =?UTF-8?q?step3=20-=20=EA=B2=B0=EA=B3=BC=20=EC=A1=B0?= =?UTF-8?q?=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ladder/domain/LadderResultTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/test/java/nextstep/ladder/domain/LadderResultTest.java diff --git a/src/test/java/nextstep/ladder/domain/LadderResultTest.java b/src/test/java/nextstep/ladder/domain/LadderResultTest.java new file mode 100644 index 0000000000..4b221a1fb5 --- /dev/null +++ b/src/test/java/nextstep/ladder/domain/LadderResultTest.java @@ -0,0 +1,32 @@ +package nextstep.ladder.domain; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class LadderResultTest { + + Participants participants; + + @BeforeEach + void setUp() { + participants = new Participants("a,b,c,d"); + } + + @Test + @DisplayName("입력한결과와 사다리결과를 조합하여 참여자의 결과 값에 저장") + void combineLadderResult() { + LadderExecutor ladderExecutor = new LadderExecutor(LinesTest.lines(), participants); + ladderExecutor.executeLadder(); + + LadderResult ladderResult = new LadderResult(ExecuteResultTest.EXECUTE_RESULT, ladderExecutor); + ladderResult.combineLadderResult(); + + assertThat(ladderResult.getPartitions().getParticipant(0).getResult()).isEqualTo("하겐다즈"); + assertThat(ladderResult.getPartitions().getParticipant(1).getResult()).isEqualTo("먹기만해"); + assertThat(ladderResult.getPartitions().getParticipant(2).getResult()).isEqualTo("먹어랏"); + assertThat(ladderResult.getPartitions().getParticipant(3).getResult()).isEqualTo("사줘라"); + } +} From 48280079764284158e7d870545af78dab237343b Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Fri, 13 Dec 2024 18:23:48 +0900 Subject: [PATCH 2/7] =?UTF-8?q?step3=20-=20=ED=94=BC=EB=93=9C=EB=B0=B1=20?= =?UTF-8?q?=EB=B0=98=EC=98=81=20-=20=EC=82=AC=EB=8B=A4=EB=A6=AC=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=20=ED=9B=84=20=EC=9C=84=EC=B9=98=20=EA=B0=92?= =?UTF-8?q?=EA=B3=BC=20=EC=9C=84=EC=B9=98=20=EA=B0=92=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20=EC=B0=B8=EC=97=AC=EC=9E=90=EC=99=80=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EA=B0=92=EC=9D=84=20=EB=A7=A4=ED=95=91=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=EC=9D=84=20=EB=B6=84=EB=A6=AC?= =?UTF-8?q?=ED=95=98=EB=A9=B4=20=EB=B3=B5=EC=9E=A1=EB=8F=84=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20(=EC=B0=B8=EC=97=AC=EC=9E=90=EA=B0=80=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99x)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ladder/domain/LadderResultTest.java | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/test/java/nextstep/ladder/domain/LadderResultTest.java diff --git a/src/test/java/nextstep/ladder/domain/LadderResultTest.java b/src/test/java/nextstep/ladder/domain/LadderResultTest.java deleted file mode 100644 index 4b221a1fb5..0000000000 --- a/src/test/java/nextstep/ladder/domain/LadderResultTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package nextstep.ladder.domain; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -class LadderResultTest { - - Participants participants; - - @BeforeEach - void setUp() { - participants = new Participants("a,b,c,d"); - } - - @Test - @DisplayName("입력한결과와 사다리결과를 조합하여 참여자의 결과 값에 저장") - void combineLadderResult() { - LadderExecutor ladderExecutor = new LadderExecutor(LinesTest.lines(), participants); - ladderExecutor.executeLadder(); - - LadderResult ladderResult = new LadderResult(ExecuteResultTest.EXECUTE_RESULT, ladderExecutor); - ladderResult.combineLadderResult(); - - assertThat(ladderResult.getPartitions().getParticipant(0).getResult()).isEqualTo("하겐다즈"); - assertThat(ladderResult.getPartitions().getParticipant(1).getResult()).isEqualTo("먹기만해"); - assertThat(ladderResult.getPartitions().getParticipant(2).getResult()).isEqualTo("먹어랏"); - assertThat(ladderResult.getPartitions().getParticipant(3).getResult()).isEqualTo("사줘라"); - } -} From bbcd869e1c144ba9da2385e74312a3d22d9b2cc1 Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Wed, 18 Dec 2024 22:35:45 +0900 Subject: [PATCH 3/7] =?UTF-8?q?step4=20-=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20-=20Lines=20>=20NextStepLines=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ladder/controller/LadderController.java | 8 ++-- .../ladder/domain/LadderExecutor.java | 8 ++-- .../domain/{Lines.java => NextStepLines.java} | 6 +-- .../java/nextstep/ladder/view/OutputView.java | 10 ++--- .../ladder/domain/LadderExecutorTest.java | 2 +- .../nextstep/ladder/domain/LinesTest.java | 40 ------------------- .../ladder/domain/NextStepLinesTest.java | 40 +++++++++++++++++++ 7 files changed, 57 insertions(+), 57 deletions(-) rename src/main/java/nextstep/ladder/domain/{Lines.java => NextStepLines.java} (90%) delete mode 100644 src/test/java/nextstep/ladder/domain/LinesTest.java create mode 100644 src/test/java/nextstep/ladder/domain/NextStepLinesTest.java diff --git a/src/main/java/nextstep/ladder/controller/LadderController.java b/src/main/java/nextstep/ladder/controller/LadderController.java index 862f7cd05a..1516500143 100644 --- a/src/main/java/nextstep/ladder/controller/LadderController.java +++ b/src/main/java/nextstep/ladder/controller/LadderController.java @@ -4,7 +4,7 @@ import nextstep.ladder.domain.LadderFactory; import nextstep.ladder.domain.ExecuteResult; import nextstep.ladder.domain.LadderResult; -import nextstep.ladder.domain.Lines; +import nextstep.ladder.domain.NextStepLines; import nextstep.ladder.domain.MachingResult; import nextstep.ladder.domain.Participants; import nextstep.ladder.view.InputView; @@ -28,15 +28,15 @@ public void startLadder() { ExecuteResult executeResult = new ExecuteResult(participants.size(), executeResultStr); - Lines lines = LadderFactory.createLadder(participants, maxLadder); + NextStepLines nextStepLines = LadderFactory.createLadder(participants, maxLadder); - LadderExecutor ladderExecutor = new LadderExecutor(lines, participants); + LadderExecutor ladderExecutor = new LadderExecutor(nextStepLines, participants); MachingResult machingResult = ladderExecutor.play(); LadderResult ladderResult = machingResult.map(participants, executeResult); outputView.outputParticipants(participants); - outputView.outputResult(executeResult, lines, ladderResult); + outputView.outputResult(executeResult, nextStepLines, ladderResult); String participant = inputView.inputParticipantResult(); outputView.outputParticipantResult(ladderResult.getReward(participant)); diff --git a/src/main/java/nextstep/ladder/domain/LadderExecutor.java b/src/main/java/nextstep/ladder/domain/LadderExecutor.java index aa8a6e0640..084ac76a7b 100644 --- a/src/main/java/nextstep/ladder/domain/LadderExecutor.java +++ b/src/main/java/nextstep/ladder/domain/LadderExecutor.java @@ -4,11 +4,11 @@ public class LadderExecutor { - private Lines lines; + private NextStepLines nextStepLines; private Participants participants; - public LadderExecutor(Lines lines, Participants participants) { - this.lines = lines; + public LadderExecutor(NextStepLines nextStepLines, Participants participants) { + this.nextStepLines = nextStepLines; this.participants = participants; } @@ -22,7 +22,7 @@ public MachingResult play() { } private void moveAndCollectResult(MachingResult results, Position position) { - for (Line line : lines.getLines()) { + for (Line line : nextStepLines.getLines()) { Point point = PointFactory.generatePoint(position.getX(), line); position.move(point.getDirection()); } diff --git a/src/main/java/nextstep/ladder/domain/Lines.java b/src/main/java/nextstep/ladder/domain/NextStepLines.java similarity index 90% rename from src/main/java/nextstep/ladder/domain/Lines.java rename to src/main/java/nextstep/ladder/domain/NextStepLines.java index 4a931f848f..c999be5827 100644 --- a/src/main/java/nextstep/ladder/domain/Lines.java +++ b/src/main/java/nextstep/ladder/domain/NextStepLines.java @@ -5,14 +5,14 @@ import java.util.ArrayList; import java.util.List; -public class Lines { +public class NextStepLines { private final List lines; - public Lines() { + public NextStepLines() { this(new ArrayList()); } - public Lines(ArrayList lines) { + public NextStepLines(ArrayList lines) { this.lines = new ArrayList<>(lines); } diff --git a/src/main/java/nextstep/ladder/view/OutputView.java b/src/main/java/nextstep/ladder/view/OutputView.java index 70692a33a7..83a379a1a5 100644 --- a/src/main/java/nextstep/ladder/view/OutputView.java +++ b/src/main/java/nextstep/ladder/view/OutputView.java @@ -2,7 +2,7 @@ import nextstep.ladder.domain.ExecuteResult; import nextstep.ladder.domain.LadderResult; -import nextstep.ladder.domain.Lines; +import nextstep.ladder.domain.NextStepLines; import nextstep.ladder.domain.Participant; import nextstep.ladder.domain.Participants; @@ -18,16 +18,16 @@ public class OutputView { POINTS_LINE.put(false, outputLineFalse()); } - public void outputResult(ExecuteResult executeResult, Lines lines, LadderResult ladderResult) { + public void outputResult(ExecuteResult executeResult, NextStepLines nextStepLines, LadderResult ladderResult) { System.out.println(); - outputLadder(lines); + outputLadder(nextStepLines); ouputExecuteResult(executeResult); } - private static void outputLadder(Lines lines) { - lines.getLines().forEach(line -> { + private static void outputLadder(NextStepLines nextStepLines) { + nextStepLines.getLines().forEach(line -> { line.getPoints().forEach(points -> System.out.print(POINTS_LINE.get(points))); System.out.println("|"); }); diff --git a/src/test/java/nextstep/ladder/domain/LadderExecutorTest.java b/src/test/java/nextstep/ladder/domain/LadderExecutorTest.java index 73f514ea62..a56621ea66 100644 --- a/src/test/java/nextstep/ladder/domain/LadderExecutorTest.java +++ b/src/test/java/nextstep/ladder/domain/LadderExecutorTest.java @@ -18,7 +18,7 @@ void setUp() { @Test @DisplayName("사다리를 실행하고 결과를 수집") void moveAndCollectResult() { - LadderExecutor ladderExecutor = new LadderExecutor(LinesTest.lines(), participants); + LadderExecutor ladderExecutor = new LadderExecutor(NextStepLinesTest.lines(), participants); MachingResult machingResult = ladderExecutor.play(); assertThat(machingResult.getMachingResultMap().get(0)).isEqualTo(1); diff --git a/src/test/java/nextstep/ladder/domain/LinesTest.java b/src/test/java/nextstep/ladder/domain/LinesTest.java deleted file mode 100644 index 85dc1253e4..0000000000 --- a/src/test/java/nextstep/ladder/domain/LinesTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package nextstep.ladder.domain; - -import nextstep.ladder.strategy.LineStrategy; -import nextstep.ladder.strategy.TrueLineStrategy; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -class LinesTest { - - public static Lines lines() { - LineStrategy lineStrategy = new TrueLineStrategy(); - Lines lines = new Lines(); - lines.generateLine(4, 3, lineStrategy); - return lines; - } - - @Test - void 세명의참가자만큼_네줄로_사다리_생성() { - LineStrategy lineStrategy = new TrueLineStrategy(); - Lines lines = new Lines(); - lines.generateLine(3, 4, lineStrategy); - - assertThat(lines.size()).isEqualTo(4); - for (int i = 0; i < lines.size(); i++) { - assertThatLineSize(lines, i); - assertThatLinePatternIsCorrect(lines, i); - } - } - - private static void assertThatLinePatternIsCorrect(Lines lines, int linesIdx) { - for (int j = 0; j < lines.getLineSize(linesIdx); j++) { - assertThat(lines.getPoint(linesIdx, j)).isEqualTo(j % 2 == 0); - } - } - - private static void assertThatLineSize(Lines lines, int linesIdx) { - assertThat(lines.getLineSize(linesIdx)).isEqualTo(2); - } -} diff --git a/src/test/java/nextstep/ladder/domain/NextStepLinesTest.java b/src/test/java/nextstep/ladder/domain/NextStepLinesTest.java new file mode 100644 index 0000000000..c7b46849ad --- /dev/null +++ b/src/test/java/nextstep/ladder/domain/NextStepLinesTest.java @@ -0,0 +1,40 @@ +package nextstep.ladder.domain; + +import nextstep.ladder.strategy.LineStrategy; +import nextstep.ladder.strategy.TrueLineStrategy; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class NextStepLinesTest { + + public static NextStepLines lines() { + LineStrategy lineStrategy = new TrueLineStrategy(); + NextStepLines nextStepLines = new NextStepLines(); + nextStepLines.generateLine(4, 3, lineStrategy); + return nextStepLines; + } + + @Test + void 세명의참가자만큼_네줄로_사다리_생성() { + LineStrategy lineStrategy = new TrueLineStrategy(); + NextStepLines nextStepLines = new NextStepLines(); + nextStepLines.generateLine(3, 4, lineStrategy); + + assertThat(nextStepLines.size()).isEqualTo(4); + for (int i = 0; i < nextStepLines.size(); i++) { + assertThatLineSize(nextStepLines, i); + assertThatLinePatternIsCorrect(nextStepLines, i); + } + } + + private static void assertThatLinePatternIsCorrect(NextStepLines nextStepLines, int linesIdx) { + for (int j = 0; j < nextStepLines.getLineSize(linesIdx); j++) { + assertThat(nextStepLines.getPoint(linesIdx, j)).isEqualTo(j % 2 == 0); + } + } + + private static void assertThatLineSize(NextStepLines nextStepLines, int linesIdx) { + assertThat(nextStepLines.getLineSize(linesIdx)).isEqualTo(2); + } +} From 3b882082338394971192a3b55eb0cc85bc311f2b Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Thu, 19 Dec 2024 00:03:57 +0900 Subject: [PATCH 4/7] =?UTF-8?q?step4=20-=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20-=20interface=20=EB=B6=84=EB=A6=AC,=20Cyclic=20Depe?= =?UTF-8?q?ndencies=20=EB=B0=A9=EC=96=B4=20=ED=95=B4=EB=B3=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/engine/LinesCreator.java | 12 ++++++++++ src/main/java/factory/LinesFactoryBean.java | 15 ++++++++++++ .../ladder/controller/LadderController.java | 11 +++++---- .../ladder/domain/LadderExecutor.java | 10 ++++---- .../nextstep/ladder/domain/LadderFactory.java | 13 ----------- .../nextstep/ladder/domain/NextStepLines.java | 11 +++++---- .../java/nextstep/ladder/view/OutputView.java | 9 ++++---- .../java/engine/LinesFactoryBeanTest.java | 23 +++++++++++++++++++ 8 files changed, 73 insertions(+), 31 deletions(-) create mode 100644 src/main/java/engine/LinesCreator.java create mode 100644 src/main/java/factory/LinesFactoryBean.java delete mode 100644 src/main/java/nextstep/ladder/domain/LadderFactory.java create mode 100644 src/test/java/engine/LinesFactoryBeanTest.java diff --git a/src/main/java/engine/LinesCreator.java b/src/main/java/engine/LinesCreator.java new file mode 100644 index 0000000000..0171a359fa --- /dev/null +++ b/src/main/java/engine/LinesCreator.java @@ -0,0 +1,12 @@ +package engine; + +import nextstep.ladder.domain.Line; +import nextstep.ladder.strategy.LineStrategy; + +import java.util.List; + + +public interface LinesCreator { + void generateLine(int participantCnt, int maxLadder, LineStrategy lineStrategy); + List getLines(); +} diff --git a/src/main/java/factory/LinesFactoryBean.java b/src/main/java/factory/LinesFactoryBean.java new file mode 100644 index 0000000000..f99e0f156c --- /dev/null +++ b/src/main/java/factory/LinesFactoryBean.java @@ -0,0 +1,15 @@ +package factory; + +import engine.LinesCreator; +import nextstep.ladder.domain.NextStepLines; +import nextstep.ladder.strategy.LineStrategy; + +public class LinesFactoryBean { + + public static LinesCreator createNextStepLadderFactory(int size, int maxLadder, LineStrategy lineStrategy) { + NextStepLines nextStepLines = new NextStepLines(); + nextStepLines.generateLine(size, maxLadder, lineStrategy); + return new NextStepLines(); + } + +} diff --git a/src/main/java/nextstep/ladder/controller/LadderController.java b/src/main/java/nextstep/ladder/controller/LadderController.java index 1516500143..1644777861 100644 --- a/src/main/java/nextstep/ladder/controller/LadderController.java +++ b/src/main/java/nextstep/ladder/controller/LadderController.java @@ -1,12 +1,13 @@ package nextstep.ladder.controller; +import engine.LinesCreator; +import factory.LinesFactoryBean; import nextstep.ladder.domain.LadderExecutor; -import nextstep.ladder.domain.LadderFactory; import nextstep.ladder.domain.ExecuteResult; import nextstep.ladder.domain.LadderResult; -import nextstep.ladder.domain.NextStepLines; import nextstep.ladder.domain.MachingResult; import nextstep.ladder.domain.Participants; +import nextstep.ladder.strategy.LadderLineStrategy; import nextstep.ladder.view.InputView; import nextstep.ladder.view.OutputView; @@ -28,15 +29,15 @@ public void startLadder() { ExecuteResult executeResult = new ExecuteResult(participants.size(), executeResultStr); - NextStepLines nextStepLines = LadderFactory.createLadder(participants, maxLadder); + LinesCreator linesCreator = LinesFactoryBean.createNextStepLadderFactory(participants.size(), maxLadder, new LadderLineStrategy()); - LadderExecutor ladderExecutor = new LadderExecutor(nextStepLines, participants); + LadderExecutor ladderExecutor = new LadderExecutor(linesCreator, participants); MachingResult machingResult = ladderExecutor.play(); LadderResult ladderResult = machingResult.map(participants, executeResult); outputView.outputParticipants(participants); - outputView.outputResult(executeResult, nextStepLines, ladderResult); + outputView.outputResult(executeResult, linesCreator, ladderResult); String participant = inputView.inputParticipantResult(); outputView.outputParticipantResult(ladderResult.getReward(participant)); diff --git a/src/main/java/nextstep/ladder/domain/LadderExecutor.java b/src/main/java/nextstep/ladder/domain/LadderExecutor.java index 084ac76a7b..b72d1e8416 100644 --- a/src/main/java/nextstep/ladder/domain/LadderExecutor.java +++ b/src/main/java/nextstep/ladder/domain/LadderExecutor.java @@ -1,14 +1,16 @@ package nextstep.ladder.domain; +import engine.LinesCreator; + import java.util.Collections; public class LadderExecutor { - private NextStepLines nextStepLines; + private LinesCreator linesCreator; private Participants participants; - public LadderExecutor(NextStepLines nextStepLines, Participants participants) { - this.nextStepLines = nextStepLines; + public LadderExecutor(LinesCreator linesCreator, Participants participants) { + this.linesCreator = linesCreator; this.participants = participants; } @@ -22,7 +24,7 @@ public MachingResult play() { } private void moveAndCollectResult(MachingResult results, Position position) { - for (Line line : nextStepLines.getLines()) { + for (Line line : linesCreator.getLines()) { Point point = PointFactory.generatePoint(position.getX(), line); position.move(point.getDirection()); } diff --git a/src/main/java/nextstep/ladder/domain/LadderFactory.java b/src/main/java/nextstep/ladder/domain/LadderFactory.java deleted file mode 100644 index e084cb6836..0000000000 --- a/src/main/java/nextstep/ladder/domain/LadderFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package nextstep.ladder.domain; - -import nextstep.ladder.strategy.LadderLineStrategy; - -public class LadderFactory { - - public static Lines createLadder(Participants participants, int maxLadder) { - Lines lines = new Lines(); - lines.generateLine(participants.size(), maxLadder, new LadderLineStrategy()); - return lines; - } - -} diff --git a/src/main/java/nextstep/ladder/domain/NextStepLines.java b/src/main/java/nextstep/ladder/domain/NextStepLines.java index c999be5827..0047a3febc 100644 --- a/src/main/java/nextstep/ladder/domain/NextStepLines.java +++ b/src/main/java/nextstep/ladder/domain/NextStepLines.java @@ -1,11 +1,12 @@ package nextstep.ladder.domain; +import engine.LinesCreator; import nextstep.ladder.strategy.LineStrategy; import java.util.ArrayList; import java.util.List; -public class NextStepLines { +public class NextStepLines implements LinesCreator { private final List lines; public NextStepLines() { @@ -27,10 +28,6 @@ private void generateLine(int participantCnt, LineStrategy lineStrategy) { lines.add(line); } - public int size() { - return lines.size(); - } - public List getLines() { return lines; } @@ -42,4 +39,8 @@ public int getLineSize(int linesIdx) { public boolean getPoint(int linesIdx, int lineIdx) { return lines.get(linesIdx).getLine(lineIdx); } + + public int size() { + return lines.size(); + } } diff --git a/src/main/java/nextstep/ladder/view/OutputView.java b/src/main/java/nextstep/ladder/view/OutputView.java index 83a379a1a5..2cb40ca201 100644 --- a/src/main/java/nextstep/ladder/view/OutputView.java +++ b/src/main/java/nextstep/ladder/view/OutputView.java @@ -1,5 +1,6 @@ package nextstep.ladder.view; +import engine.LinesCreator; import nextstep.ladder.domain.ExecuteResult; import nextstep.ladder.domain.LadderResult; import nextstep.ladder.domain.NextStepLines; @@ -18,16 +19,16 @@ public class OutputView { POINTS_LINE.put(false, outputLineFalse()); } - public void outputResult(ExecuteResult executeResult, NextStepLines nextStepLines, LadderResult ladderResult) { + public void outputResult(ExecuteResult executeResult, LinesCreator linesCreator, LadderResult ladderResult) { System.out.println(); - outputLadder(nextStepLines); + outputLadder(linesCreator); ouputExecuteResult(executeResult); } - private static void outputLadder(NextStepLines nextStepLines) { - nextStepLines.getLines().forEach(line -> { + private static void outputLadder(LinesCreator linesCreator) { + ((NextStepLines) linesCreator).getLines().forEach(line -> { line.getPoints().forEach(points -> System.out.print(POINTS_LINE.get(points))); System.out.println("|"); }); diff --git a/src/test/java/engine/LinesFactoryBeanTest.java b/src/test/java/engine/LinesFactoryBeanTest.java new file mode 100644 index 0000000000..3a9337f7b6 --- /dev/null +++ b/src/test/java/engine/LinesFactoryBeanTest.java @@ -0,0 +1,23 @@ +package engine; + +import factory.LinesFactoryBean; +import nextstep.ladder.domain.LadderExecutor; +import nextstep.ladder.domain.MachingResult; +import nextstep.ladder.domain.Participants; +import nextstep.ladder.strategy.TrueLineStrategy; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class LinesFactoryBeanTest { + + @Test + void createNextStepLadderFactory() { + LinesCreator linesCreator = LinesFactoryBean.createNextStepLadderFactory(3, 5, new TrueLineStrategy()); + Participants participants = new Participants("a,b,c"); + LadderExecutor ladderExecutor = new LadderExecutor(linesCreator, participants); + MachingResult machingResult = ladderExecutor.play(); + + assertThat(machingResult.getMachingResultMap()).hasSize(3); + } +} From 093974451ad4b6da4d6c4d438422db9abb15003c Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Thu, 19 Dec 2024 00:04:45 +0900 Subject: [PATCH 5/7] =?UTF-8?q?step4=20-=20all=EC=9D=84=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=96=88=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EA=B2=B0=EA=B3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nextstep/ladder/domain/LadderResult.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/nextstep/ladder/domain/LadderResult.java b/src/main/java/nextstep/ladder/domain/LadderResult.java index cd0bc1e1f6..7ef9cd2b66 100644 --- a/src/main/java/nextstep/ladder/domain/LadderResult.java +++ b/src/main/java/nextstep/ladder/domain/LadderResult.java @@ -25,6 +25,9 @@ public Map getPlayerToReward() { } public String getReward(String name) { + if (name.equals("all")) { + return ""; + } return playerToReward.get(new Participant(name)); } } From 73cec8327c6b8ca98fe4da7fd3ee31ca16499af8 Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Thu, 19 Dec 2024 00:30:43 +0900 Subject: [PATCH 6/7] =?UTF-8?q?step4=20-=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20-=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/factory/LinesFactoryBean.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/factory/LinesFactoryBean.java b/src/main/java/factory/LinesFactoryBean.java index f99e0f156c..f08d38d3c6 100644 --- a/src/main/java/factory/LinesFactoryBean.java +++ b/src/main/java/factory/LinesFactoryBean.java @@ -9,7 +9,7 @@ public class LinesFactoryBean { public static LinesCreator createNextStepLadderFactory(int size, int maxLadder, LineStrategy lineStrategy) { NextStepLines nextStepLines = new NextStepLines(); nextStepLines.generateLine(size, maxLadder, lineStrategy); - return new NextStepLines(); + return nextStepLines; } } From 0da356feb2185ee7145f70e75865ae9fb2210c49 Mon Sep 17 00:00:00 2001 From: kimsuyeondev Date: Thu, 19 Dec 2024 00:31:09 +0900 Subject: [PATCH 7/7] =?UTF-8?q?step4=20-=20=EB=A6=AC=ED=8C=A9=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20-=20=EA=B2=B0=EA=B3=BC=20=EC=B0=BE=EA=B8=B0=20all?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ladder/controller/LadderController.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/nextstep/ladder/controller/LadderController.java b/src/main/java/nextstep/ladder/controller/LadderController.java index 1644777861..1e216e934c 100644 --- a/src/main/java/nextstep/ladder/controller/LadderController.java +++ b/src/main/java/nextstep/ladder/controller/LadderController.java @@ -39,13 +39,23 @@ public void startLadder() { outputView.outputParticipants(participants); outputView.outputResult(executeResult, linesCreator, ladderResult); - String participant = inputView.inputParticipantResult(); - outputView.outputParticipantResult(ladderResult.getReward(participant)); - - participant = inputView.inputParticipantResult(); - outputView.outputParticipantResult(ladderResult.getReward(participant)); + inputOutputFindResult(ladderResult); outputView.outputParticipantAllResult(ladderResult); } + private void inputOutputFindResult(LadderResult ladderResult) { + String participant = inputOutputResult(ladderResult); + + if (!"all".equals(participant)) { + inputOutputResult(ladderResult); + } + } + + private String inputOutputResult(LadderResult ladderResult) { + String participant = inputView.inputParticipantResult(); + outputView.outputParticipantResult(ladderResult.getReward(participant)); + return participant; + } + }