From a3f6fa91691ff9454fd16b2561d71063b9226e1c Mon Sep 17 00:00:00 2001 From: lylylylh Date: Sat, 21 Sep 2024 18:38:15 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- src/main/java/Ladder.java | 35 +++++++++++++++++++-- src/main/java/Position.java | 16 ++++++++++ src/test/java/LadderTest.java | 57 +++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 src/main/java/Position.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 8f86b33..da956e3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/src/main/java/Ladder.java b/src/main/java/Ladder.java index 0d2b070..fa95453 100644 --- a/src/main/java/Ladder.java +++ b/src/main/java/Ladder.java @@ -1,8 +1,37 @@ public class Ladder { - private final int[][] rows; + private final int[][] positions; - public Ladder(int row, int numberOfPerson) { - rows = new int[row][numberOfPerson]; + public Ladder(int height, int numberOfPerson) { + positions = new int[height][numberOfPerson]; + } + public void drawLine(Position pos, int direction) { + if(direction == -1){ + drawLineToLeft(pos); + } + if(direction == 1){ + drawLineToRight(pos); + } + } + public void drawLineToLeft(Position pos) { + if(pos.getCol() <= 0 || pos.getCol() > (positions[0].length-1)){ + throw new IllegalArgumentException("Index Error"); + } + positions[pos.getRow()][pos.getCol()] = -1; + positions[pos.getRow()][pos.getCol()-1] = 1; + } + public void drawLineToRight(Position pos) { + if(pos.getCol() < 0 || pos.getCol() >= (positions[0].length-1)){ + throw new IllegalArgumentException("Index Error"); + } + positions[pos.getRow()][pos.getCol()] = 1; + positions[pos.getRow()][pos.getCol()+1] = -1; + } + + public int run(int pos){ + for (int i = 0; i < positions.length; i++) { // height + pos += positions[i][pos]; + } + return pos; } } diff --git a/src/main/java/Position.java b/src/main/java/Position.java new file mode 100644 index 0000000..df450ff --- /dev/null +++ b/src/main/java/Position.java @@ -0,0 +1,16 @@ +public class Position { + + private int row, col; + + public Position(int row, int col) { + this.row = row; + this.col = col; + } + + public int getCol() { + return col; + } + public int getRow() { + return row; + } +} diff --git a/src/test/java/LadderTest.java b/src/test/java/LadderTest.java index 741a915..d4af425 100644 --- a/src/test/java/LadderTest.java +++ b/src/test/java/LadderTest.java @@ -1,5 +1,62 @@ +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; class LadderTest { + @Test + void Ladder_init() { + int height = 5, numberOfPerson = 5; + Ladder ladder = new Ladder(height, numberOfPerson); + assertThat(ladder).isNotNull(); + } + @Test + void OnePerson(){ + int height = 5, numberOfPerson = 1; + Ladder ladder = new Ladder(height, numberOfPerson); + + int result = ladder.run(0); + assertThat(result).isEqualTo(0); + } + @Test + void TwoPerson(){ + int height = 5, numberOfPerson = 2; + Ladder ladder = new Ladder(height, numberOfPerson); + ladder.drawLine(new Position(0, 0), 1); + ladder.drawLine(new Position(2, 1), -1); + ladder.drawLine(new Position(3, 1), -1); + + int result = ladder.run(0); + assertThat(result).isEqualTo(1); + } + + @Test + void ThreePerson(){ + int height = 5, numberOfPerson = 3; + Ladder ladder = new Ladder(height, numberOfPerson); + ladder.drawLine(new Position(0, 0), 1); + ladder.drawLine(new Position(1, 1), 1); + ladder.drawLine(new Position(2, 2), -1); + //ladder.drawLine(new Position(3, 1), -1); => 0 + + int result = ladder.run(0); + assertThat(result).isEqualTo(1); + } + @Test + void FivePerson(){ + int height = 5, numberOfPerson = 5; + Ladder ladder = new Ladder(height, numberOfPerson); + ladder.drawLine(new Position(0, 0), 1); + ladder.drawLine(new Position(1, 1), 1); + ladder.drawLine(new Position(2, 1), -1); + ladder.drawLine(new Position(2, 3), -1); + ladder.drawLine(new Position(3, 1), 1); + ladder.drawLine(new Position(3, 4), -1); + ladder.drawLine(new Position(4, 2), 1); + ladder.drawLine(new Position(4, 0), 1); + + int result = ladder.run(3); // 2 + assertThat(result).isEqualTo(0); // 1 + } } \ No newline at end of file From 80246e434c6151f2092fc35b42b08354bd3c98e5 Mon Sep 17 00:00:00 2001 From: lylylylh Date: Sat, 21 Sep 2024 18:42:46 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Exception=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Ladder.java | 23 +++++++++++++++++------ src/test/java/LadderTest.java | 30 ++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/main/java/Ladder.java b/src/main/java/Ladder.java index fa95453..a546062 100644 --- a/src/main/java/Ladder.java +++ b/src/main/java/Ladder.java @@ -14,20 +14,31 @@ public void drawLine(Position pos, int direction) { } } public void drawLineToLeft(Position pos) { - if(pos.getCol() <= 0 || pos.getCol() > (positions[0].length-1)){ - throw new IllegalArgumentException("Index Error"); - } + LeftLinePossible(pos); positions[pos.getRow()][pos.getCol()] = -1; positions[pos.getRow()][pos.getCol()-1] = 1; } public void drawLineToRight(Position pos) { + RightLinePossible(pos); + positions[pos.getRow()][pos.getCol()] = 1; + positions[pos.getRow()][pos.getCol()+1] = -1; + } + public void LeftLinePossible(Position pos) { + if(pos.getCol() <= 0 || pos.getCol() > (positions[0].length-1)){ + throw new IllegalArgumentException("Index Error"); + } + if(positions[pos.getRow()][pos.getCol()-1] != 0 || positions[pos.getRow()][pos.getCol()] != 0){ + throw new IllegalArgumentException("Over Max Length of Line Error"); + } + } + public void RightLinePossible(Position pos) { if(pos.getCol() < 0 || pos.getCol() >= (positions[0].length-1)){ throw new IllegalArgumentException("Index Error"); } - positions[pos.getRow()][pos.getCol()] = 1; - positions[pos.getRow()][pos.getCol()+1] = -1; + if(positions[pos.getRow()][pos.getCol()+1] != 0 || positions[pos.getRow()][pos.getCol()] != 0){ + throw new IllegalArgumentException("Over Max Length of Line Error"); + } } - public int run(int pos){ for (int i = 0; i < positions.length; i++) { // height pos += positions[i][pos]; diff --git a/src/test/java/LadderTest.java b/src/test/java/LadderTest.java index d4af425..a6b1141 100644 --- a/src/test/java/LadderTest.java +++ b/src/test/java/LadderTest.java @@ -56,6 +56,36 @@ void FivePerson(){ ladder.drawLine(new Position(4, 2), 1); ladder.drawLine(new Position(4, 0), 1); + int result = ladder.run(3); // 2 + assertThat(result).isEqualTo(0); // 1 + } + @Test + void IndexExceptionCode(){ + // => Test Fail : Index Error + int height = 5, numberOfPerson = 3; + Ladder ladder = new Ladder(height, numberOfPerson); + ladder.drawLine(new Position(0, 0), 1); + ladder.drawLine(new Position(1, 1), 1); + ladder.drawLine(new Position(2, 2), 1); + + int result = ladder.run(0); + assertThat(result).isEqualTo(1); + } + @Test + void MaxLengthExceptionCode(){ + // => Test Fail : Over Max Length of Line Error + int height = 5, numberOfPerson = 5; + Ladder ladder = new Ladder(height, numberOfPerson); + ladder.drawLine(new Position(0, 0), 1); + ladder.drawLine(new Position(1, 1), 1); + ladder.drawLine(new Position(2, 1), -1); + ladder.drawLine(new Position(2, 2), -1); + ladder.drawLine(new Position(2, 3), -1); + ladder.drawLine(new Position(3, 1), 1); + ladder.drawLine(new Position(3, 4), -1); + ladder.drawLine(new Position(4, 2), 1); + ladder.drawLine(new Position(4, 0), 1); + int result = ladder.run(3); // 2 assertThat(result).isEqualTo(0); // 1 }