-
Notifications
You must be signed in to change notification settings - Fork 74
[김성현] 연료 주입 및 블랙잭(1단계) #23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
kim-svadoz
wants to merge
183
commits into
next-step:kim-svadoz
Choose a base branch
from
kim-svadoz:step1
base: kim-svadoz
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 9 commits
Commits
Show all changes
183 commits
Select commit
Hold shift + click to select a range
cb02376
docs: 불필요한 empty 파일 삭제
damilog b97ac62
docs: 기능 README 작성
damilog d313574
feat: CarTest 구현
kim-svadoz 4da1ef3
feat: Car 추상 클래스 구현
kim-svadoz 4cedf61
feat: Controller 클래스 추가
kim-svadoz ccde597
Application 클래스 추가
kim-svadoz fce513d
feat: Car 추상 클래스의 구현체 구현
kim-svadoz 0a9a9ec
feat: View 클래스 추가
kim-svadoz 0e531c0
refactor: Car 추상 클래스에 constructor 생성하여 중복 제거
damilog 788ca21
refactor: Car 추상 클래스를 사용해 Avante, K5, Sonata 구현체 구현
damilog cbcc6a0
feat: 여행 거리를 입력받을 수 있는 InputView 구현
kim-svadoz 2425fc7
feat: main에서 Controller를 실행하도록 구현
kim-svadoz e2eddd1
feat: rent Application의 start() 추가
kim-svadoz 482793e
feat: RentCompany 클래스 factory method (create()) 추가
damilog 0573a5c
feat: Car Class에 이름을 반환하는 추상 메서드 추가
kim-svadoz e43744a
feat: 이름과 연료량을 Map으로 반환하는 기능 구현
kim-svadoz 1deb60b
fix: View에서 이동거리 반환 타입을 문자열에서 정수로 변경
kim-svadoz d8a753e
feat: RentCompany가 만든 report를 출력하는 기능 구현
kim-svadoz 6609962
feat: 사용자의 여행거리 입력을 받아 Report를 출력하는 기능 구현
kim-svadoz bc9021d
refactor: TRIP_MANAGER 문구 수정
damilog 769fba3
refactor: 불필요한 String.format 제거
damilog 04e2258
style: 불필요한 import 문 제거
damilog 9d57098
feat: RentCompany Test 추가
damilog 5285a06
docs: README 업데이트
damilog 71f7796
docs: 블랙잭 기능 요구사항 작성
kim-svadoz 38b9202
chore: rentcar 패키지 분리 및 기존 코드 이동
kim-svadoz 8d56730
chore: 블랙잭 패키지 분리 및 스켈레톤 구성
kim-svadoz 5fc6a94
feat: 게임에 참여할 사람의 이름을 입력받는 기능 구현
kim-svadoz b96f688
feat: Application class에서 main문 실행하도록 구현
kim-svadoz 3ab57d3
feat: GameController 생성 및 start() 구현
kim-svadoz dd5f319
refactor: splitPlayerName 바로 Return하도록 리팩터링
damilog f062dac
feat: Card Class 구현
damilog c30d1e8
feat: Player Class 구현
damilog 0062d44
feat: playerNames를 기준으로 Player 클래스 list를 생성하는 로직 구현
damilog 00e32f9
styles: 빠진 import문 추가
kim-svadoz c06cbc2
feat: Random 클래스로 bound 이하의 랜덤값을 추출하는 유틸 클래스 구현
kim-svadoz 0f4111b
feat: 카드 개별의 이름과 점수를 가지고 있는 enum Class 구현
kim-svadoz 1fd696b
feat: 전체 카드의 상태를 들고 있는 클래스 구현
kim-svadoz df6f0bf
feat: 딜러 클래스 추가
kim-svadoz d97b2c6
feat: Card 클래스 getter() 추가, 생성자 인자로 symbol 추가
kim-svadoz 68d9c1d
feat: Player 클래스 getter() 추가, addCard() 추가
kim-svadoz a2c4f92
feat: Controller에서 딜러를 생성하고 모두에게 2장씩 나눠주는 기능 구현
kim-svadoz 810d8a4
feat: getter() 추가
kim-svadoz 33e4137
fix: 맵에서 선택된 카드가 제거되지 않은 문제 해결
kim-svadoz 349996d
feat: 초기 배분한 카드와 카드상태를 출력하는 메서드 구현
kim-svadoz 492ab61
feat: 카드를 배분하고 난 뒤 메시지를 출력하는 컨트롤러 로직 구현
kim-svadoz 900c114
docs: Update README.md
kim-svadoz dafc7cc
feat: card가 담겨있는 map getter 구현
damilog 8d30a6d
feat: cardPack symbol test 추가
damilog 4dafdc9
feat: 심볼별 카드 수량을 체크하는 CardPack test 코드 구현
damilog 9774590
feat: 심볼별 카드 종류가 Enum CardType를 모두 포함하는지 확인하는 테스트 코드 구현
damilog 0e5e941
style: CardPack removeCard 관련 TODO 주석 추가
damilog ef0c462
feat: 딜러를 플레이어 리스트에 추가하여 게임 진행하도록 변경
kim-svadoz 9457616
feat: Player class에서 딜러인지 판별하는 상태 추가
kim-svadoz 70e688c
feat: 컨트롤러에서 딜러와 일반플레이어를 같은 리스트에 담아 게임 진행
kim-svadoz 212ff4f
feat: isDelear getter() 추가
kim-svadoz 176ee2f
feat: 게임을 진행하는 Dealer 클래스 구현
kim-svadoz ff55ccd
feat: InputView에서 플레이어가 y 또는 n을 선택하는 기능 구현
kim-svadoz b521d58
feat: OutputView에서 카드를 더 받겠냐는 메시지를 던지는 기능 구현
kim-svadoz c15d518
feat: 한명에게 카드를 분배하는 기능 구현
kim-svadoz 972447c
feat: Controller에서 Players만드는 메서드를 분리
kim-svadoz bca2a79
refactor: CardPack#removeCard() rename -> pickCard()
kim-svadoz 030bf46
feat: Player class 카드를 받고 점수를 추가하는 메서드 분리
kim-svadoz 90056e2
feat: 게임플레이어를 감싸는 일급컬렉션 생성
kim-svadoz d719731
fix: CardPack#pickCard 로직 변경
kim-svadoz cea8f93
feat: OutputView 딜러가 한장 더 받았다는 메시지 출력 기능 구현
kim-svadoz 86799b7
feat: Dealer Class 내부 메서드 로직 변경
kim-svadoz 8947cb3
feat: 일급컬렉션 생성으로 인한 Controller 로직 변경
kim-svadoz a3c0f07
fix: CardType의 Name을 수정
kim-svadoz 6974cd1
refactor: Stream 내부 구현 변수명 변경
kim-svadoz 81e21a8
feat: CardType에서 Ace를 위한 멤버변수 및 생성자 추가
kim-svadoz 53fa7a1
feat: Card 에서 Ace를 위한 멤버변수 및 생성자 추가
kim-svadoz 0c3361f
feat: Ace인 경우를 구분하여 카드팩을 생성
kim-svadoz be15ff6
fix: OutputView에서 제대로딘 카드이름을 출력하도록 수정
kim-svadoz 30a0189
refactor: 필요없는 파라미터 제거
kim-svadoz f93fbd4
feat: Player#addScore Ace인 경우 최선의 포인트를 선택하는 기능 구현
kim-svadoz 5858e73
styles: 메서드명 오탈자 수정으로 인한 변경
kim-svadoz 520b607
feat: OutputView에서 게임결과를 출력하는 기능 구현
kim-svadoz c49b06e
feat: Controller에서 gamePlayers를 받아 결과를 출력하도록 구현
kim-svadoz 44a0d82
refactor: 미사용 import문 제거
kim-svadoz 4006f75
feat: OutputView에서 게임결과 출력기능 구현
kim-svadoz bab3a01
feat: Controller에서 게임결과 출력하도록 구현
kim-svadoz c67556e
docs: Update README
kim-svadoz 22d41b5
feat: GamePlayers#makePlayers 단위테스트 로직 구현
kim-svadoz 446ef1d
feat: Dealer#initializeGame 단위테스트 로직 구현
kim-svadoz e1fdc0f
refactor: 사용하지 않는 print문 제거
kim-svadoz f11d6aa
refactor: 외부에서 사용않는 메서드는 private
kim-svadoz fe5a66b
feat: 단위테스트를 위해 Player에 score를 인자로 받는 생성자 추가
kim-svadoz c9a7ef7
feat: Player#Ace 에이스를 받았을 때 최선의 값을 더하는 로직 테스트 구현
kim-svadoz 87b93b3
feat: CardShuffler에서의 메서드 분리
kim-svadoz e4b0c93
feat: 카드팩에서 랜덤카드를 뽑을 때 재고가 있는 경우만 뽑아오는 기능 구현
kim-svadoz 9972ae7
feat: CardPack#pickCard 로직 수정
kim-svadoz db75b6f
02/17 00:02
kim-svadoz 8a2977d
styles: Controller에 final 키워드 부여
kim-svadoz 3ea2ca9
fix: ace의 개수를 세는 로직 수정
kim-svadoz b9adb4f
refactor: 중복되는 코드 변경
kim-svadoz 7cd211c
refactor: List<GamePlayer>를 담는 로직 변경
kim-svadoz 614e604
refactor: 게임 초기 2장씩 나눠주는 기능 로직 변경
kim-svadoz 6cdd78c
Merge pull request #1 from kim-svadoz/step1-temp
kim-svadoz f3dd988
docs: Update README
kim-svadoz 35dcfb3
chore: card 관련된 클래스는 card 패키지로 분리
kim-svadoz 2c53c7b
chore: 게임플레이어 관련 클래스는 gameplayer로 패키지 분리
kim-svadoz a7fe789
chore: 게임플레이어 리스트의 일급컬렉션을 gameplayer 패키지로 이동
kim-svadoz 64e08ab
styles: 필요없는 코드 제거 및 오타 수정
kim-svadoz 258454c
refactor: controller에서 최종 상태를 출력하는 메서드 분리
kim-svadoz 2944f07
feat: 불변이어야 하는 모든 필드에 final 부여
kim-svadoz 2f56aa6
refactor: 미사용 print문 제거
kim-svadoz 4f72ffe
feat: OutputView에서 특정 플레이어의 카드상태를 반환하는 메서드 구현
kim-svadoz e05f946
chore: 플레이어가 가진 카드의 일급컬렉션은 게임플레이어와 같은 패키지로 이동
kim-svadoz c1900ce
fix: Dealear#playGame() 인자를 GamePlayers 객체를 받도록 변경
kim-svadoz 5b875ca
fix: 게임플레이어와 딜러 간 메시지를 교환하는 방식으로 변경
kim-svadoz bf6984e
fix: CardPack의 인스턴스는 정적팩터리메서드로 생성
kim-svadoz a075f48
feat: Cards에서 카드의 총합 점수를 최선으로 계산하는 로직 변경
kim-svadoz 8e11872
refactor: 미사용 print문 제거
kim-svadoz c3d9a00
refactor: Controller에서 print구문 메서드 분리
kim-svadoz 48e9949
feat: OutputView에서 공통코드 메서드 분리
kim-svadoz f34a1c0
feat: OutputView에서 최종 승패 헤더 문구 출력 추가
kim-svadoz 9f3dfde
feat: String name의 원시값을 포장하는 클래스 구현
kim-svadoz 7ec5ea4
feat: List<Name>을 포장하는 일급컬렉션 클래스 구현
kim-svadoz 7aba82d
fix: 게임플레이어의 이름 상태를 원시값이 아닌 Name 클래스로 변경
kim-svadoz 0816dbb
feat: 이름을 사용하는 이외 로직에서도 포장된 이름 객체를 활용하도록 변경
kim-svadoz 66144aa
fix: GamePlayers의 생성방법을 정적팩토리메서드로 변경
kim-svadoz 19cb561
feat: CardPackTest 변경
kim-svadoz c1f0bfd
feat: DealerTest 내부 구현 로직 수정
kim-svadoz 24226e4
feat: PlayerTest 내부 구현 로직 변경
kim-svadoz 9caa918
refactor: GamePlayersTest 내부 구현 로직 변경
kim-svadoz d37b745
refactor: GamePlayer#getGameResult의 인자로 게임플레이어 객체를 받도록 변경
kim-svadoz 98a8e02
feat: 승패를 결정할 때 점수가 21을 초과한다면 패배 처리 로직 구현
kim-svadoz f62c760
feat: Names에서 중복된 이름을 검사하는 로직 추가
kim-svadoz dc27fa9
feat: 이름의 중복 검사를 위한 equals() and hashcode() 추가
kim-svadoz e2e3b6d
feat: Controller에서 이름 입력시 중복된 이름이라면 다시 시도하도록 구현
kim-svadoz 5f47bbe
refactor: 필요없는 구문 삭제
kim-svadoz d333559
refactor: BLACK_JACK 매직넘버를 21로 부여해 가독성 증대
kim-svadoz 95d67a3
feat: CardPackTest#remove 단위테스트 작성
kim-svadoz e7881a8
feat: NameTest 단위테스트 작성
kim-svadoz 1b2d2f9
feat: NamesTest 단위테스트 작성
kim-svadoz 6c7cb0c
feat: GamePlayer의 구현체 단위테스트 작성
kim-svadoz dcd2709
chore: 테스트 패키지 분리
kim-svadoz e157204
refactor: 미사용 import문 제거
kim-svadoz 9c5e2a4
feat: CardsTest#caculate() 단위테스트 작성
kim-svadoz e5e7553
docs: Update README
kim-svadoz 52a8b1e
refactor: CardPack#create > createWithShuffling로 네이밍
damilog a307ae7
styles: 변수, 메서드명 구체화하여 네이밍, 코드 포맷팅
damilog 3b23a3f
fix: RentCompany의 인스턴스는 생성자로 생성하도록 변경
kim-svadoz 0c94cbd
styles: 테스트 코드 파일 마지막에 개행문자 추가
kim-svadoz f1af70c
fix: RentCompany가 가지는 map을 일급컬렉션으로 래핑
kim-svadoz 248feb6
feat: 테스트를 위한 RentCompany 생성자 시그니처 추가
kim-svadoz bf78849
refactor: PlayerTest 에서 여러개의 검증을 동시에 확인할 경우 assertThat 사용
kim-svadoz 0e7f9a5
fix: 카드팩 생성자의 접근제어자는 private
kim-svadoz 3e8521b
refactor: CardPack의 매직넘버 제거 및 팩터리메서드 네이밍 create()로 변경
kim-svadoz 5056122
feat: DealerPlayer의 기본 생성자를 "딜러"라는 이름으로 만들도록 생성자 시그니처 추가
kim-svadoz a0aa83e
refactor: GamePlayers의 딜러와 플레이러를 stream()을 활용해 "딜러"라는 이름으로 구분해 객체,리스트 반환
kim-svadoz dc2977e
refactor: 딜러플레이어의 최종 결과를 카운트하는 로직 변경
kim-svadoz 6cdd436
fix: GamePlayer의 인자로 일급컬렉션이 아니라 게임플레이어의 리스틀를 받도록 수정
kim-svadoz fb105cc
refactor: 위의 변경으로 인한 로직 일부 수정
kim-svadoz 5c31940
refactor: OutputView에서 결과를 출력하는 메서드를 딜러와 플레이어 로직 각각 분리
kim-svadoz 2567ff0
refactor: rename Dealer -> BlackJackGame
kim-svadoz c86ac82
refactor: DealerPlayer#findWinnerCount stream() 내부 의미없는 filter 제거
kim-svadoz d07149f
refactor: DealerPlayer#findWinnerCount rename -> findWinCount
kim-svadoz 33d178c
feat: CardPack getter 추가
kim-svadoz ed64b73
fix: CardPack과 Gameplayers의 인스턴스를 팩토리메서드에서 생성자 초기화로 변경
kim-svadoz f6f71e1
feat: Controlle#print 메서드 분리
kim-svadoz d81a84f
feat: Dealer의 카드 추가 분배 화면로직을 도메인과 분류
kim-svadoz 726aca7
refactor: 변경사항으로 인한 테스트 코드 수정
kim-svadoz 3818a2f
refactor: rename DealerPlayer -> Dealer
kim-svadoz 857e174
feat: BlackGameTest 카드 분배후 남아있는 카드팩에 남아있는 카드 수 검증 테스트
kim-svadoz 57591ed
fix: CardPack#create 접근제어자 private로 변경
kim-svadoz 0350654
feat: CardPackTest 카드팩이 정상적으로 셔플되어지는지 검증 테스트
kim-svadoz 339c214
fix: InputView에서 처리하던 SplitName 로직을 Names가 가지도록 변경
kim-svadoz fb20edf
refactor: Cards#getBestSumWithAce 로직을 좀 더 가독성있게 변경
kim-svadoz d49b8fc
refactor: InputView의 매직넘버 처리
kim-svadoz fc179f6
chore: Cards의 위치를 Card 패키지로 이동
kim-svadoz 4e769a4
fix: 도메인에서 진행하던 게임진행프로세스를 컨트롤러로 옮겨서 도메인로직과 화면을 분리
kim-svadoz aab1025
refactor: 미사용 클래스 제거
kim-svadoz 22526cd
fix: 카드팩 인스턴스를 매번 생성하지 않도록 상수화 하고 shuffle 메서드를 분리
kim-svadoz 7254e35
fix: 카드팩을 반환할 때 new ArrayList<>()에 담아서 참조를 완전히 끊어버리도록 변경
kim-svadoz f4bddcf
refactor: 하나의 단위테스트에 여러개를 검증할 때는 assertAll을 활용하도록 변경
kim-svadoz b720860
feat: Card 값 비교를 위해 equals and hashcode 추가
kim-svadoz 144e58c
fix: CardPack#shuffle() 의 반환값을 void로 하고 클래스 필드값에 직접 주입
kim-svadoz bcb3124
feat: CardPack#shuffle 단위테스트 구현
kim-svadoz cb7b253
fix: Dealer#findWindCount 로직 에러 수정
kim-svadoz 32dcc56
fix: CardPack 생성자 로직 변경
kim-svadoz 816e608
fix: CardPackTest#shuffle 로직을 containsExactly로 변경
kim-svadoz File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -15,7 +15,7 @@ class CardPackTest { | |
| CardPack cardPack = new CardPack(); | ||
|
|
||
| //when | ||
| List<Card> cards = cardPack.getCardPack(); | ||
| List<Card> cards = cardPack.getCards(); | ||
|
|
||
| //then | ||
| assertThat(cards.size()).isEqualTo(52); | ||
|
|
@@ -30,22 +30,35 @@ class CardPackTest { | |
| cardPack.pick(); | ||
|
|
||
| //then | ||
| assertThat(cardPack.getCardPack().size()).isEqualTo(51); | ||
| assertThat(cardPack.getCards().size()).isEqualTo(51); | ||
| } | ||
|
|
||
| @Test | ||
| public void 카드가_정상적으로_셔플되어진다() { | ||
| public void 카드팩_생성초기_카드팩은_셔플되어지지_않은_상태다() { | ||
| //given | ||
| CardPack cardPack = new CardPack(); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 어떻게 하면 CardPack 에 대한 테스트를 제어하면서 테스트를 만들어 볼 수 있을까요? |
||
| List<Card> originCards = cardPack.getCards(); | ||
|
|
||
| //when | ||
| List<Card> originCards = new ArrayList<>(); | ||
| final List<Card> cards = new ArrayList<>(); | ||
| for (final CardSymbol symbol : CardSymbol.values()) { | ||
| Arrays.stream(CardType.values()) | ||
| .forEach(type -> originCards.add(new Card(symbol, type))); | ||
| .forEach(type -> cards.add(new Card(symbol, type))); | ||
| } | ||
|
|
||
| List<Card> shuffleCards = cardPack.getCardPack(); | ||
| //then | ||
| assertThat(originCards).containsExactly(cards.toArray(new Card[0])); | ||
| } | ||
|
|
||
| @Test | ||
| public void 카드가_정상적으로_셔플되어진다() { | ||
| //given | ||
| CardPack cardPack = new CardPack(); | ||
|
|
||
| //when | ||
| List<Card> originCards = cardPack.getCards(); | ||
| cardPack.shuffle(); | ||
| List<Card> shuffleCards = cardPack.getCards(); | ||
|
|
||
| //then | ||
| assertThat(originCards).doesNotContainSequence(shuffleCards.toArray(new Card[0])); | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
로직을 분기처리하여 카드 상태를 확인하는 것도 좋지만 로또에서 수동과 자동 로또를 어떻게 발급했는지 생각해보면 좋을 것 같아요~