import java.util.List;
public class LottoGameTest {
@Test
void rank1() {
LottoGame.start(
List.of(1, 2, 3, 4, 5, 6),
List.of(1, 2, 3, 4, 5, 6),
7
);
assertThat(rank).isEqualTo(1);
}
//...rank2, rank3...
}
public class LottoGame {
public static int start(final List<Integer> userLotto,
final List<Integer> winningLotto,
final int bonusNumber) {
//Test에 맞게 구현
int matchCount = 0;
for (final Integer lotto : userLotto) {
if (winningLotto.contains(lotto)) {
matchCount++;
}
}
if (matchCount == 6) {
return 1;
}
if (matchCount == 5 && userLotto.contains(bonusNumber)) {
return 2;
}
if (matchCount == 5) {
return 3;
}
//...꼴등까지...불편
}
}
import java.util.List;
public class LottoGameTest {
@Test
void duplicated() {
LottoGame.start(
List.of(1, 1, 1, 1, 1, 1),
List.of(1, 2, 3, 4, 5, 6),
7
);
assertThat(rank).isEqualTo(1);//???
}
@Test
void over() {
LottoGame.start(
List.of(1, 2, 3, 4, 5, 100),//???
List.of(1, 2, 3, 4, 5, 6),
7
);
assertThat(rank).isEqualTo(2);
}
}
해당 테스트를 통과하려면?
객체lottoNumber
를 새로 만들어줘야 겠다~!
enum
으로 구현matchCount
, isbonus
변수 생성LottoNumber
내부값은 lottoNumber
대신 value
로 명명raw
를 붙인다bonusNumber
대신 number
로 명명collect(Collectors.toSet())
Rank
에서 BiPredicate
사용