From 40b66539e27e73aa411ca9a3e11ee5cba2090c5b Mon Sep 17 00:00:00 2001 From: younggyulee Date: Thu, 4 Jun 2020 20:33:07 +0900 Subject: [PATCH 1/3] Practiced the 1 stage Java test. --- src/main/java/SetCollection.java | 8 ++++ src/main/java/StringPs.java | 15 +++++++ src/test/java/SetCollectionTest.java | 58 ++++++++++++++++++++++++++++ src/test/java/StringTest.java | 44 +++++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 src/main/java/SetCollection.java create mode 100644 src/main/java/StringPs.java create mode 100644 src/test/java/SetCollectionTest.java create mode 100644 src/test/java/StringTest.java diff --git a/src/main/java/SetCollection.java b/src/main/java/SetCollection.java new file mode 100644 index 0000000..9cd1027 --- /dev/null +++ b/src/main/java/SetCollection.java @@ -0,0 +1,8 @@ +import java.util.Set; + +public class SetCollection { + public Integer getNumbersSize(Set numbers) { + return numbers.size(); + } + +} diff --git a/src/main/java/StringPs.java b/src/main/java/StringPs.java new file mode 100644 index 0000000..53b1e89 --- /dev/null +++ b/src/main/java/StringPs.java @@ -0,0 +1,15 @@ +public class StringPs { + + public String[] stringSplit(String s) { + String[] arr = s.split(","); + return arr; + } + + public String stringSub(String s) { + return s.substring(1,4); + } + + public String stringCharAt(int i, String abc) { + return Character.toString(abc.charAt(i)); + } +} diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java new file mode 100644 index 0000000..8a3c267 --- /dev/null +++ b/src/test/java/SetCollectionTest.java @@ -0,0 +1,58 @@ +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.HashSet; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class SetCollectionTest { + private Set numbers; + + @BeforeEach + void setUp() { + numbers = new HashSet<>(); + numbers.add(1); + numbers.add(1); + numbers.add(2); + numbers.add(3); + } + + @DisplayName("Hash 사이즈 검사 테스트") + @Test + public void testCheckSizeTest() { + SetCollection checkSize = new SetCollection(); + Integer result = checkSize.getNumbersSize(this.numbers); + assertEquals(3, result); + } + + @DisplayName("Hash안에 포함되어있는지 검사 테스트") + @Test + public void contains() { + assertThat(numbers.contains(1)).isTrue(); + assertThat(numbers.contains(2)).isTrue(); + assertThat(numbers.contains(3)).isTrue(); + } + + @DisplayName("중복된 메소드 제거 테스") + @ParameterizedTest + @ValueSource(ints= {1, 2, 3}) + public void testContaionsTrueTes트t(int number) { + assertTrue(numbers.contains(number)); + } + + @DisplayName("포함된 값이 없으면 false 반환하는 테스트") + @ParameterizedTest + @CsvSource(value= {"1:true", "2:true", "3:true", "4:false", "5:false"}, delimiter = ':') + public void testContaionsTest(int input,boolean expected) { + boolean result = numbers.contains(input); + assertEquals(expected, result); + } + } \ No newline at end of file diff --git a/src/test/java/StringTest.java b/src/test/java/StringTest.java new file mode 100644 index 0000000..45907c5 --- /dev/null +++ b/src/test/java/StringTest.java @@ -0,0 +1,44 @@ +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class StringTest { + + @DisplayName("배열의 숫자값들을트 ,을 기준으로 분리하는 테스트") + @Test + public void testSplitStringTest() { + String[] arr = {"1","2"}; + StringPs splitString = new StringPs(); + String[] result1 = splitString.stringSplit("1,2"); + assertArrayEquals(arr,result1); + String[] arr2 = {"1"}; + String[] result2 = splitString.stringSplit("1"); + assertArrayEquals(arr2,result2); + } + + @DisplayName("()를 제거하는 테스트") + @Test + public void testSubStringTest() { + String str = "1,2"; + StringPs removeString = new StringPs(); + String result = removeString.stringSub("(1,2)"); + assertEquals(str, result); + } + + @DisplayName("문자를 가져올때 위치값을 벗어나면 메세지가 발생하는 부분에 대한 테스트") + @Test + public void testCharAtStringTest() { + String str = "b"; + StringPs charAtString = new StringPs(); + String result = charAtString.stringCharAt(1,"abc"); + assertEquals(str,result); + assertThatThrownBy(() -> { + charAtString.stringCharAt(50,"abc"); + }).isInstanceOf(IndexOutOfBoundsException.class).hasMessageContaining("String index out of range:"); + } + +} From 9ec4af31967e021f0cc6e1f6a1b85bd19c974703 Mon Sep 17 00:00:00 2001 From: younggyulee Date: Sun, 7 Jun 2020 23:05:18 +0900 Subject: [PATCH 2/3] Practiced the 2 stage Java Calculate test. --- src/main/java/calculator/Calculator.java | 89 ++++++++++++++++++++ src/main/java/calculator/Computation.java | 20 +++++ src/test/java/SetCollectionTest.java | 1 - src/test/java/calculator/CalculatorTest.java | 76 +++++++++++++++++ 4 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 src/main/java/calculator/Calculator.java create mode 100644 src/main/java/calculator/Computation.java create mode 100644 src/test/java/calculator/CalculatorTest.java diff --git a/src/main/java/calculator/Calculator.java b/src/main/java/calculator/Calculator.java new file mode 100644 index 0000000..5cb1f3b --- /dev/null +++ b/src/main/java/calculator/Calculator.java @@ -0,0 +1,89 @@ +package calculator; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; + +import static java.lang.Integer.parseInt; + +public class Calculator { + + public int getNumber(String s) { + String[] arr = s.split(" "); + ArrayList arrayList = new ArrayList<>(Arrays.asList(arr)); + if(arrayList.size() == 1) { + return Integer.parseInt(arrayList.get(0)); + } + while (arrayList.size() > 0) { + + if(arrayList.get(1).equals("+")) { + int number = addNumber(arrayList.get(0), arrayList.get(2)); + + for(int i =0; i<3; i++ ) { + arrayList.remove(0); + } + arrayList.add(0,Integer.toString(number)); + } + + if(arrayList.size()==1){ + return Integer.parseInt(arrayList.get(0)); + } + + if(arrayList.get(1).equals("-")) { + int number = subTractionNumber(arrayList.get(0), arrayList.get(2)); + + for(int i =0; i<3; i++ ) { + arrayList.remove(0); + } + arrayList.add(0,Integer.toString(number)); + } + + if(arrayList.size()==1){ + return Integer.parseInt(arrayList.get(0)); + } + + if(arrayList.get(1).equals("*")) { + int number = multiplicationNumber(arrayList.get(0), arrayList.get(2)); + + for(int i =0; i<3; i++ ) { + arrayList.remove(0); + } + arrayList.add(0,Integer.toString(number)); + } + + if(arrayList.size()==1){ + return Integer.parseInt(arrayList.get(0)); + } + + if(arrayList.get(1).equals("/")) { + int number = divideNumber(arrayList.get(0), arrayList.get(2)); + + for(int i =0; i<3; i++ ) { + arrayList.remove(0); + } + arrayList.add(0,Integer.toString(number)); + } + + if(arrayList.size()==1){ + return Integer.parseInt(arrayList.get(0)); + } + } + return Integer.parseInt(arrayList.get(0)); + } + + public int addNumber(String s, String b) { + return Integer.parseInt(s) + Integer.parseInt(b); + } + + public int subTractionNumber(String s, String b) { + return Integer.parseInt(s) - Integer.parseInt(b); + } + + public int divideNumber(String s, String b) { + return Integer.parseInt(s) / Integer.parseInt(b); + } + + public int multiplicationNumber(String s, String b) { + return Integer.parseInt(s) * Integer.parseInt(b); + } +} \ No newline at end of file diff --git a/src/main/java/calculator/Computation.java b/src/main/java/calculator/Computation.java new file mode 100644 index 0000000..34691f2 --- /dev/null +++ b/src/main/java/calculator/Computation.java @@ -0,0 +1,20 @@ +package calculator; + +public class Computation { + + public int addNumber(String s, String b) { + return Integer.parseInt(s) + Integer.parseInt(b); + } + + public int subTractionNumber(String s, String b) { + return Integer.parseInt(s) - Integer.parseInt(b); + } + + public int divideNumber(String s, String b) { + return Integer.parseInt(s) / Integer.parseInt(b); + } + + public int multiplicationNumber(String s, String b) { + return Integer.parseInt(s) * Integer.parseInt(b); + } +} diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java index 8a3c267..1c5aef9 100644 --- a/src/test/java/SetCollectionTest.java +++ b/src/test/java/SetCollectionTest.java @@ -1,4 +1,3 @@ -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/calculator/CalculatorTest.java b/src/test/java/calculator/CalculatorTest.java new file mode 100644 index 0000000..0bf2ccf --- /dev/null +++ b/src/test/java/calculator/CalculatorTest.java @@ -0,0 +1,76 @@ +package calculator; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CalculatorTest { + private Calculator calculator; + + @BeforeEach + void setUp() { + calculator = new Calculator(); + } + @DisplayName("계산기") + @ParameterizedTest + @CsvSource(value = {"2 + 3 * 4 / 2 :10","1:1", "0 * 10 * 11 + 3 :3"}, delimiter = ':') + public void testCalculator(String input, int result) { + assertThat(calculator.getNumber(input)).isEqualTo(result); + } + + @DisplayName("계산기의 합을 테스트한다.") + @Test + public void testAddCalculator() { + Calculator addTest = new Calculator(); + int result = addTest.addNumber("2","3"); + assertEquals(5,result); + } + + @DisplayName("계산기의 뺄셈을 테스트한다.") + @Test + public void testSubtractionCalculator() { + Calculator subTractionTest = new Calculator(); + int result = subTractionTest.subTractionNumber("4","3"); + assertEquals(1,result); + } + + @DisplayName("계산기의 나눗셈을 테스트한다.") + @Test + public void testDivideCalculator() { + Calculator divideTest = new Calculator(); + int result = divideTest.divideNumber("4","2"); + assertEquals(2,result); + } + + @DisplayName("계산기의 셈을 테스트한다.") + @Test + public void testMultiplicationCalculator() { + Calculator multiplication = new Calculator(); + int result = multiplication.multiplicationNumber("4","3"); + assertEquals(12,result); + } + + @DisplayName("not Null") + @Test + public void testNotnull() { + assertThatIllegalArgumentException().isThrownBy(() -> { + calculator.getNumber("null"); + }); + } + + @DisplayName("not Null") + @Test + public void testNotContribution() { + assertThatIllegalArgumentException().isThrownBy(() -> { + calculator.getNumber("!"); + }); + } + +} From dac1523c1ac11c21ee3f6234398900d23823a35d Mon Sep 17 00:00:00 2001 From: younggyulee Date: Tue, 9 Jun 2020 11:42:50 +0900 Subject: [PATCH 3/3] Practiced the 2 stage java test --- src/main/java/racing/InputView.java | 20 ++++++++ src/main/java/racing/README.md | 6 +++ src/main/java/racing/RacingCar.java | 20 ++++++++ src/main/java/racing/RacingCars.java | 24 ++++++++++ src/main/java/racing/RacingGame.java | 22 +++++++++ src/main/java/racing/RandomGenerator.java | 10 ++++ src/main/java/racing/ResultView.java | 15 ++++++ src/test/java/SetCollectionTest.java | 2 +- src/test/java/calculator/CalculatorTest.java | 1 + src/test/java/racing/RacingGameTest.java | 49 ++++++++++++++++++++ 10 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racing/InputView.java create mode 100644 src/main/java/racing/README.md create mode 100644 src/main/java/racing/RacingCar.java create mode 100644 src/main/java/racing/RacingCars.java create mode 100644 src/main/java/racing/RacingGame.java create mode 100644 src/main/java/racing/RandomGenerator.java create mode 100644 src/main/java/racing/ResultView.java create mode 100644 src/test/java/racing/RacingGameTest.java diff --git a/src/main/java/racing/InputView.java b/src/main/java/racing/InputView.java new file mode 100644 index 0000000..62e18b2 --- /dev/null +++ b/src/main/java/racing/InputView.java @@ -0,0 +1,20 @@ +package racing; + +import java.util.Scanner; + +public class InputView { + + Scanner scanner = new Scanner(System.in); + + public int askCarCount() { + System.out.printf("자동차 대수는 몇 대 인가요?"); + int carCount = scanner.nextInt(); + return carCount; + } + + public int askMoveCount() { + System.out.printf("시도할 회수는 몇 회 인가요?"); + int moveCount = scanner.nextInt(); + return moveCount; + } +} diff --git a/src/main/java/racing/README.md b/src/main/java/racing/README.md new file mode 100644 index 0000000..18bdded --- /dev/null +++ b/src/main/java/racing/README.md @@ -0,0 +1,6 @@ + 1. 초간단 자동차 경주 게임을 구현한다. + 2. 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다. + 3. 사용자는 몇 대의 자동차로 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다. + 4. 전진하는 조건은 0에서 9 사이에서 random 값을 구한후 random 값이 4 이상일 경우이다. + 자동차의 상태를 화면에 출력한다. 어느 시점에 출력할 것인지를 대한 제약은 없다. + diff --git a/src/main/java/racing/RacingCar.java b/src/main/java/racing/RacingCar.java new file mode 100644 index 0000000..a2a7fee --- /dev/null +++ b/src/main/java/racing/RacingCar.java @@ -0,0 +1,20 @@ +package racing; + +import java.util.Random; + +public class RacingCar { + private int count; + + public RacingCar(int count) { + this.count = count; + } + + public void move(int count) { + if (count >= 4) { + this.count +=1; + } + } + public int getCount() { + return this.count; + } +} diff --git a/src/main/java/racing/RacingCars.java b/src/main/java/racing/RacingCars.java new file mode 100644 index 0000000..b0672ea --- /dev/null +++ b/src/main/java/racing/RacingCars.java @@ -0,0 +1,24 @@ +package racing; + +import java.util.ArrayList; + +public class RacingCars { + private ArrayList cars = new ArrayList<>(); + + public void addRacingCar(int count) { + for(int i =0; i getCars() {return cars;} +} diff --git a/src/main/java/racing/RacingGame.java b/src/main/java/racing/RacingGame.java new file mode 100644 index 0000000..78dd01b --- /dev/null +++ b/src/main/java/racing/RacingGame.java @@ -0,0 +1,22 @@ +package racing; + +import java.util.Scanner; + +public class RacingGame { + final static private RacingCars cars = new RacingCars(); + + public static void main(String[] args) { + + InputView inputView = new InputView(); + + + cars.addRacingCar(inputView.askCarCount()); + + int count = inputView.askMoveCount(); + + for(int i =1; i<=count; i++) { + cars.selectMoveCount(); + ResultView.viewMovingCar(cars.getCars(),i); + } + } +} diff --git a/src/main/java/racing/RandomGenerator.java b/src/main/java/racing/RandomGenerator.java new file mode 100644 index 0000000..644c0cb --- /dev/null +++ b/src/main/java/racing/RandomGenerator.java @@ -0,0 +1,10 @@ +package racing; + +import java.util.Random; + +public class RandomGenerator { + public int get() { + Random random = new Random(); + return Math.abs(random.nextInt()) % 9; + } +} diff --git a/src/main/java/racing/ResultView.java b/src/main/java/racing/ResultView.java new file mode 100644 index 0000000..23a8f51 --- /dev/null +++ b/src/main/java/racing/ResultView.java @@ -0,0 +1,15 @@ +package racing; + +import java.util.ArrayList; + +public class ResultView { + public static void viewMovingCar(ArrayList cars, int count) { + for(RacingCar car : cars) { + for(int i =0; i result = racingCars.getCars(); + assertEquals(number, result.size()); + } + + @DisplayName("레이싱카가 제대로 움직이는지 확인하는 테스트") + @Test + public void testMoveTest() { + car.move(6); + assertEquals(1,car.getCount()); + car.move(7); + assertEquals(2,car.getCount()); + car.move(3); + assertEquals(2,car.getCount()); + } + + +}