Skip to content

Commit

Permalink
refactor : equals hashcode 제거 및 객체 생성관련 테스트 수정
Browse files Browse the repository at this point in the history
isEqualsTo() -> isInstanceOf() 로 변경
sort테스트 로직 수정
  • Loading branch information
Gomding committed Feb 17, 2021
1 parent 918dd2d commit c24df3b
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 137 deletions.
14 changes: 0 additions & 14 deletions src/main/java/lotto/domain/LottoTicket.java
Expand Up @@ -17,7 +17,6 @@ public LottoTicket(List<LottoNumber> lottoNumbers) {
validateEmptyTicket(lottoNumbers);
validateCount(lottoNumbers);
validateDuplicate(lottoNumbers);
Collections.sort(lottoNumbers); //이거 위치가 어디로 가야될지?
this.lottoNumbers = lottoNumbers;
}

Expand All @@ -44,17 +43,4 @@ private void validateCount(List<LottoNumber> lottoNumbers) {
}
throw new RuntimeException(COUNT_ERROR_MESSAGE);
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LottoTicket that = (LottoTicket) o;
return Objects.equals(lottoNumbers, that.lottoNumbers);
}

@Override
public int hashCode() {
return Objects.hash(lottoNumbers);
}
}
13 changes: 0 additions & 13 deletions src/main/java/lotto/domain/LottoTickets.java
Expand Up @@ -25,17 +25,4 @@ private void validateEmptyTickets(final List<LottoTicket> lottoTickets) {
throw new IllegalArgumentException(EMPTY_ERROR_MESSAGE);
}
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LottoTickets that = (LottoTickets) o;
return Objects.equals(lottoTickets, that.lottoTickets);
}

@Override
public int hashCode() {
return Objects.hash(lottoTickets);
}
}
37 changes: 9 additions & 28 deletions src/test/java/lotto/domain/LottoTicketTest.java
@@ -1,5 +1,6 @@
package lotto.domain;

import lotto.service.LottoTicketService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
Expand All @@ -25,17 +26,8 @@ public void createLottoTicketTest() {
new LottoNumber(5),
new LottoNumber(45)
);
List<LottoNumber> lottoNumbers2 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
LottoTicket lottoTicket = new LottoTicket(lottoNumbers1);

assertThat(lottoTicket).isEqualTo(new LottoTicket(lottoNumbers2));
assertThat(new LottoTicket(lottoNumbers1)).isInstanceOf(LottoTicket.class);
}

@ParameterizedTest(name = "Null은 생성자의 매개변수로 허용하지 않는다.")
Expand Down Expand Up @@ -103,26 +95,15 @@ public void numberCountLessThanSixThrowsExceptionTest() {
}).isInstanceOf(RuntimeException.class);
}

@Test
@Test // 정렬 테스트는 어떻게 하는게 좋을까요?
@DisplayName("로또 티켓 생성시 입력받은 List가 잘 정렬 되있는지 검사")
public void lottoTicketSortTest() {
List<LottoNumber> lottoNumbers = Arrays.asList(
new LottoNumber(3),
new LottoNumber(2),
new LottoNumber(5),
new LottoNumber(4),
new LottoNumber(1),
new LottoNumber(44)
);
LottoTicket lottoTicket = new LottoTicket(lottoNumbers);
LottoTicket lottoTicket = LottoTicketService.createLottoTicket();

assertThat(lottoTicket.getLottoNumbers()).isEqualTo(Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(44)
));
int number = 0;
for (LottoNumber lottoNumber : lottoTicket.getLottoNumbers()) {
assertThat(lottoNumber.getNumber() > number).isTrue();
number = lottoNumber.getNumber();
}
}
}
63 changes: 5 additions & 58 deletions src/test/java/lotto/domain/LottoTicketsTest.java
@@ -1,5 +1,6 @@
package lotto.domain;

import lotto.service.LottoTicketService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand All @@ -18,34 +19,10 @@ public class LottoTicketsTest {

@BeforeEach
public void initLottoTickets() {
List<LottoNumber> lottoNumbers1 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
List<LottoNumber> lottoNumbers2 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
List<LottoNumber> lottoNumbers3 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
lottoTickets = new LottoTickets(Arrays.asList(
new LottoTicket(lottoNumbers1),
new LottoTicket(lottoNumbers2),
new LottoTicket(lottoNumbers3)
LottoTicketService.createLottoTicket(),
LottoTicketService.createLottoTicket(),
LottoTicketService.createLottoTicket()
));
}

Expand All @@ -69,37 +46,7 @@ public void emptyParameterTest(List<LottoTicket> lottoTickets) {
@Test //이 코드를 좀 더 깔끔하게 쓰는법 혹시 없을까요?
@DisplayName("구매한 여러장의 로또 티켓들을 가진 객체를 생성한다.")
public void createLottoTicketsTest() {
List<LottoNumber> expectedLottoNumbers1 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
List<LottoNumber> expectedLottoNumbers2 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
List<LottoNumber> expectedLottoNumbers3 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
LottoTickets expectedLottoTickets = new LottoTickets(Arrays.asList(
new LottoTicket(expectedLottoNumbers1),
new LottoTicket(expectedLottoNumbers2),
new LottoTicket(expectedLottoNumbers3)
));

assertThat(lottoTickets).isEqualTo(expectedLottoTickets);
assertThat(lottoTickets).isInstanceOf(LottoTickets.class);
}

@Test
Expand Down
14 changes: 1 addition & 13 deletions src/test/java/lotto/domain/LottoWinnerTest.java
Expand Up @@ -27,19 +27,7 @@ public void createWinnerLottoTicketTest() {
LottoWinnerTicket lottoWinnerTicket = new LottoWinnerTicket(lottoWinnerNumbers);
LottoWinnerBonusNumber lottoWinnerBonusNumber = new LottoWinnerBonusNumber(9);

List<LottoNumber> expectedLottoWinnerNumbers = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
LottoWinnerTicket expectedLottoWinnerTicket = new LottoWinnerTicket(expectedLottoWinnerNumbers);
LottoWinnerBonusNumber expectedLottoWinnerBonusNumber = new LottoWinnerBonusNumber(9);

assertThat(new LottoWinner(lottoWinnerTicket, lottoWinnerBonusNumber))
.isEqualTo(new LottoWinner(expectedLottoWinnerTicket, expectedLottoWinnerBonusNumber));
assertThat(new LottoWinner(lottoWinnerTicket, lottoWinnerBonusNumber)).isInstanceOf(LottoWinner.class);
}

@ParameterizedTest(name = "Null은 생성자의 매개변수로 허용하지 않는다.")
Expand Down
13 changes: 2 additions & 11 deletions src/test/java/lotto/domain/LottoWinnerTicketTest.java
Expand Up @@ -14,25 +14,16 @@ public class LottoWinnerTicketTest {
@Test
@DisplayName("로또 티켓을 생성한다.")
public void createLottoTicketTest() {
List<LottoNumber> lottoWinnerNumbers1 = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
List<LottoNumber> lottoWinnerNumbers2 = Arrays.asList(
List<LottoNumber> lottoWinnerNumbers = Arrays.asList(
new LottoNumber(1),
new LottoNumber(2),
new LottoNumber(3),
new LottoNumber(4),
new LottoNumber(5),
new LottoNumber(45)
);
LottoWinnerTicket lottoWinnerTicket = new LottoWinnerTicket(lottoWinnerNumbers1);

assertThat(lottoWinnerTicket).isEqualTo(new LottoWinnerTicket(lottoWinnerNumbers2));
assertThat(new LottoWinnerTicket(lottoWinnerNumbers)).isInstanceOf(LottoWinnerTicket.class);
}

@Test
Expand Down

0 comments on commit c24df3b

Please sign in to comment.