원래 코드는 잘 동작합니다만,
https://steemit.com/kr/@kimdy/47saua
로직과 입출력이 섞여있어서 한번에 코드를 수정하기가 쉽지 않습니다.
실전에서는 이런 코드 개선을 해야할 필요성이 많습니다.
그러기 위해서는 우선 테스트 프로그램이 필요합니다.
아직은 프로그램이 함수로 떨어져 있지 않으므로,
Unit test 를 할 단계를 아니고 Black box Test / Acceptance Test 를 해야합니다.
asciinema 라는 도구를 사용해서 터미날 레코딩을 해 보았습니다.
좀 더 이해하기가 쉽겠지요?
여기까지 하면 거의 다 된 거나 다름 없습니다.
이후 숫자들이 중복되지 않아야 하므로,
int buffer[100];
int test_buffer(int upper) {
for ( int i = 1; i <= upper; i++) {
for ( int j = i+1; j <= upper; j++) {
if ( buffer[i] == buffer[j])
return 0;
}
}
return 1;
}
와 같은 테스트 문을 만들고,
결과 0, 1 에 따라서 Failure, Pass 를 출력하면 됩니다.
한번만 해서는 불안하다면, 테스트를 충분히 많이 하도록 스크립트를 작성하면 됩니다.
이제 안전하게 코드를 수정할 준비가 되었습니다.
진짜 다음번에는 마지막으로 asciinema 로 리팩토링을 하고 끝내야 할 것 같네요...
cool