Skip to content

Commit

Permalink
refactor: dealer lose할 경우의 수 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
Gyuchool committed Mar 15, 2022
1 parent 10ec7f0 commit bee8566
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 53 deletions.
2 changes: 1 addition & 1 deletion src/main/java/blackJack/domain/PlayerResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static PlayerResult decision(Dealer dealer, Player player) {
}

private static boolean isLose(Dealer dealer, Player player) {
return dealer.isBust() || (player.isGreaterScoreThan(dealer) && !player.isBust());
return player.isBlackJack() || dealer.isBust() || (player.isGreaterScoreThan(dealer) && !player.isBust());
}

private static boolean isAllBlackJack(Dealer dealer, Player player) {
Expand Down
73 changes: 73 additions & 0 deletions src/test/java/blackJack/domain/PlayerResultTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package blackJack.domain;

import blackJack.domain.Card.Number;
import blackJack.domain.Card.*;
import blackJack.domain.User.Dealer;
import blackJack.domain.User.Player;
import blackJack.domain.utils.FixedCardFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class PlayerResultTest {
private CardFactory cardFactory;

@BeforeEach
public void setUp() {
cardFactory = new FixedCardFactory();
}

@Test
@DisplayName("플레이어의 카드 합이 21이 넘으면 플레이어가 패배한다.")
void PlayerIsLose_WhenOver21() {
Cards over21Cards = new Cards(Arrays.asList(
new Card(Shape.HEART, Number.JACK),
new Card(Shape.HEART, Number.TEN),
new Card(Shape.CLOVER, Number.TWO)));
Cards cards = new Cards(List.of(new Card(Shape.DIAMOND, Number.TEN), new Card(Shape.DIAMOND, Number.JACK)));
Player player = new Player("test", over21Cards);
Dealer dealer = new Dealer(cards);
dealer.hit(cardFactory);
dealer.hit(cardFactory);

PlayerResult actual = PlayerResult.decision(dealer, player);
PlayerResult expected = PlayerResult.LOSE;
assertThat(actual).isEqualTo(expected);
}

@Test
@DisplayName("플레이어의 카드 합이 21이하이며, 딜러보다 21에 가까울때 플레이어가 승리한다.")
void PlayerWinTest_WhenUnder21AndOverThanDealer() {
Cards playerCards = new Cards(Arrays.asList(
new Card(Shape.HEART, Number.JACK),
new Card(Shape.HEART, Number.TEN)));
Cards cards = new Cards(List.of(new Card(Shape.DIAMOND, Number.TEN), new Card(Shape.DIAMOND, Number.TWO)));
Player player = new Player("test", playerCards);
Dealer dealer = new Dealer(cards);
PlayerResult actual = PlayerResult.decision(dealer, player);
PlayerResult expected = PlayerResult.WIN;
assertThat(actual).isEqualTo(expected);
}

@Test
@DisplayName("딜러의 카드가 21을 넘으면 21이 안넘은 플레이어는 승리한다.")
void PlayerIsWinTest_WhenUnder21AndDealerOverThan21() {
Cards playerCards = new Cards(Arrays.asList(
new Card(Shape.HEART, Number.JACK),
new Card(Shape.HEART, Number.TEN)));
Cards dealerCards = new Cards(List.of(new Card(Shape.DIAMOND, Number.TEN), new Card(Shape.DIAMOND, Number.JACK),
new Card(Shape.CLOVER, Number.TEN)));
Player player = new Player("test", playerCards);
Dealer dealer = new Dealer(dealerCards);
dealer.hit(cardFactory);
dealer.hit(cardFactory);
PlayerResult actual = PlayerResult.decision(dealer, player);
PlayerResult expected = PlayerResult.WIN;
assertThat(actual).isEqualTo(expected);
}
}
53 changes: 1 addition & 52 deletions src/test/java/blackJack/domain/User/DealerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,19 @@

import blackJack.domain.Card.*;
import blackJack.domain.Card.Number;
import blackJack.domain.PlayerResult;
import blackJack.domain.utils.FixedCardFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class DealerTest {

private CardFactory cardFactory;

@BeforeEach
public void setUp(){
cardFactory = new FixedCardFactory();
Expand All @@ -39,54 +38,4 @@ void checkScoreWhenOver16Test() {
assertThat(dealer.canOneMoreCard()).isEqualTo(false);
}

@Test
@DisplayName("플레이어의 카드 합이 21이 넘으면 플레이어가 패배한다.")
void PlayerIsLose_WhenOver21() {
Cards over21Cards = new Cards(Arrays.asList(
new Card(Shape.HEART, Number.JACK),
new Card(Shape.HEART, Number.TEN),
new Card(Shape.CLOVER, Number.TWO)));
Cards cards = new Cards(List.of(new Card(Shape.DIAMOND, Number.TEN), new Card(Shape.DIAMOND, Number.JACK)));
Player player = new Player("test", over21Cards);
Dealer dealer = new Dealer(cards);
dealer.hit(cardFactory);
dealer.hit(cardFactory);

PlayerResult actual = PlayerResult.decision(dealer, player);
PlayerResult expected = PlayerResult.LOSE;
assertThat(actual).isEqualTo(expected);
}

@Test
@DisplayName("플레이어의 카드 합이 21이하이며, 딜러보다 21에 가까울때 플레이어가 승리한다.")
void PlayerWinTest_WhenUnder21AndOverThanDealer() {
Cards playerCards = new Cards(Arrays.asList(
new Card(Shape.HEART, Number.JACK),
new Card(Shape.HEART, Number.TEN)));
Cards cards = new Cards(List.of(new Card(Shape.DIAMOND, Number.TEN), new Card(Shape.DIAMOND, Number.TWO)));
Player player = new Player("test", playerCards);
Dealer dealer = new Dealer(cards);
PlayerResult actual = PlayerResult.decision(dealer, player);
PlayerResult expected = PlayerResult.WIN;
assertThat(actual).isEqualTo(expected);
}

@Test
@DisplayName("딜러의 카드가 21을 넘으면 21이 안넘은 플레이어는 승리한다.")
void PlayerIsWinTest_WhenUnder21AndDealerOverThan21() {
Cards playerCards = new Cards(Arrays.asList(
new Card(Shape.HEART, Number.JACK),
new Card(Shape.HEART, Number.TEN)));
Cards dealerCards = new Cards(List.of(new Card(Shape.DIAMOND, Number.TEN), new Card(Shape.DIAMOND, Number.JACK),
new Card(Shape.CLOVER, Number.TEN)));
Player player = new Player("test", playerCards);
Dealer dealer = new Dealer(dealerCards);
dealer.hit(cardFactory);
dealer.hit(cardFactory);
PlayerResult actual = PlayerResult.decision(dealer, player);
PlayerResult expected = PlayerResult.WIN;
assertThat(actual).isEqualTo(expected);
}


}

0 comments on commit bee8566

Please sign in to comment.