# gitignore git 저장소에 저장
# 확장자를 반환하는 getFileExtenstion() 메서드 추가한다.
우선은 compile 에러가 발생하지 않기 위해서 코드 추가
# 확장자 검사하는 assertExtenstion() 메서드 추가
# 테스트를 통과하기 위해 임시로 하드코딩함.
# 원하는 파일이 MP4인지 AVI인지 구분하기 위해 Container 객체를 추가
# 확장자를 가져오는 부분은 container 객체에 위임함.
# enum 타입을 사용해 container 객체 구현함.
- 파일의 확장자를 결정짓는 것은 컨테이너 역할
# AVI 타입 새롭게 추가
# 파라미터 명 변경
- 이게 왜 mock으로 되어있었을까...프로덕트 코드인데..말이지
# AviOutFormat을 검증할 수 있는 테스트 추가
# 코드 리펙토링 중...
# 소스 리펙토링
- 추가로 transcodeWithOneMp4OutputFormat() 메소드명 변경
# 새롭게 추가된 MPEG4, MP3를 조건절에 추가한다.
# 기존에 mp4 확장자로 픽스 시킨 부분을 OutputFormat을 이용해서 파일의 확장자를 결정하도록 수정
# enum 타입을 추가로 등록한다.
# avi 파일 등록
# 한번에 한개의 변환 결과만을 생성하는 기능을 구현했지만 이제부터는 여러 형식의 변환결과를 생성해주는 기능을 구현하기 위한 실패 테스트 작성
# 테스트를 통과하기 위해 우선 FfmpegTranscoder의 getFileName() 메서드가 매번 서로 다른 파일 이름을 리턴해 주어야 한다.
변환된 결과 파일 이름의 경우 변환 시스템을 사용하는 곳에 따라 작명 규칙이 달라질 수 있을 것 같다. 그래서, 파일 이름을 생성하는 규칙을 NamingRule이라는 별도 인터페이스로 분리하고 FfmpegTranscoder는 NaminRule에 위임하도록 코드를 구성하는 게 좋다.
# 최초 테스트를 통과하기 위해 Mock객체를 사용했으나, DefaultNamingRule이라는 static 클랙스를 만드는게 좋을 것 같아서 리펙토링을 진행함. 다음과 같이 NamingRule 인터페이스에 이너클래스로 DefaultNamingRule 클래스를 정의했고, DEFAULT 상수가 값으로 DefaultNameRule 객체를 갖도록 작성했음.
# OutputFormat의 생성자는 컨테이너 정보와 코덱 정보를 함께 받고 있다. 하지만, 컨테이너의 기본 코덱을 사용할 수 있기 때문에 코덱 정보를 전달하지 않을 경우 컨테이너의 기본 코덱을 사용하도록 하는 것이 편리할 것 같다. 이를 위해 OutputFormat생성자에 코덱 정보를 전달하지 않는 테스트 코드를 작성