다이아몬드 카타는 문자 하나를 입력으로 받아 다이아몬드 모양으로 출력해요. 문자를 하나 주면 'A'로 시작하고, 주어진 문자가 가장 넓은 지점에 오는 다이아몬드를 출력해요.
다음 예시에서 공백은 · 문자로 표시했어요.
'A'에 대한 다이아몬드:
A
'C'에 대한 다이아몬드:
··A··
·B·B·
C···C
·B·B·
··A··
'E'에 대한 다이아몬드:
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
이 연습 문제의 테스트는 평소 접하는 테스트와 달라요. 보통 테스트는 주어진 입력에 대해 출력이 기대하는 값과 일치하는지 확인해요. 이것을 _값 기반 테스트_라고 해요. 하지만 이 연습 문제는 _속성 기반 테스트_를 사용해요. 속성 기반 테스트에서는 여러 입력에 대해 출력이 특정 속성을 가지는지 확인해요. 속성 기반 테스트와 값 기반 테스트를 구분하는 두 가지 중요한 차이는 다음과 같아요:
이 연습 문제에서 테스트는 모두 코드가 만들어야 하는 다이아몬드 모양의 속성을 검증해요. 게다가 모든 테스트는 테스트하는 속성이 모든 유효한 입력 문자('A'부터 'Z'까지)에 대해 성립하는지 확인해요.
속성 기반 테스트를 하기 위해, 이 연습 문제의 테스트는 FsCheck와 FsCheck.Xunit 패키지를 활용해요. FsCheck에 대해 더 알아보려면 프레임워크 문서를 여기에서 볼 수 있어요.
속성 기반 테스트에 대해 더 알고 싶다면 이 글을 참고해요.
Exercism에 가입하고 C# 트랙을 개념 62개연습 문제 178개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.