로또 번호를 자동으로 생성하는 기능을 테스트하다가, 생성한 값들이 범위내에 있는지 확인하는 메서드를 만들어했다.
Assertions.assertThat(isInRange(lotto)).isTrue();
}
private boolean isInRange(Lotto lotto) {
boolean allInRange = true;
List<Integer> pickedNumbers = lotto.getPickedNumbers();
for (Integer pickedNumber : pickedNumbers) {
if (pickedNumber < 1 || pickedNumber > 45) {
allInRange = false;
}
}
return allInRange;
}
테스트코드 내부에서 범위내에 있는지 확인하는 private 메서드를 만들어서 확인하면 되지 않을까 했지만, 요구사항 중에 indent가 2이상이면 안된다는 조건에도 어긋나고 코드 자체도 뭔가 너무 길어보인다.
Stream으로 줄여볼 수 있지 않을까 해서 범위내에 있는지 확인하는 메서드를 어떻게 만들까 찾아봤다.
Assertions.assertThat(lotto.getPickedNumbers().stream().allMatch(i -> i >= 1 && i <= 45)).isTrue();
스트림으로 구현을 하니 위에 길었던 코드가 한줄로 작성되었다. stream은 정말 메서드를 구현하게 쉽게 만들어주고, 한눈에 잘 알아볼 수 있게 만들어준다. 기회가 된다면 stream을 한번 제대로 공부해보고 싶다.