package cards;

import static org.junit.Assert.*;

import org.junit.*;

public class PokerTest {

	Poker p;
	Hand h;
	
//----------------------------------------------------------

	@Before 
	public void setup()
	{
		p = new Poker();
		h = new Hand();
	}

//----------------------------------------------------------

	@Ignore @Test
	public void royalFlushTest() 
	{
		fail("Royal flush not yet written");
	}
	
//----------------------------------------------------------

	@Test
	public void nothingTest() 
	{
		h.clear();
		h.add(new Card("Ace", "Spades"));
		h.add(new Card("King", "Diamonds"));
		h.add(new Card("2", "Clubs"));
		h.add(new Card("5", "Spades"));
		h.add(new Card("3", "Hearts"));
		
		assertFalse(p.isOnePair(h));
		assertFalse(p.isFourOfAKind(h));
	}

//----------------------------------------------------------

	@Test
	public void fourOfAKindTest() 
	{
		h.clear();
		h.add(new Card("Ace", "Spades"));
		h.add(new Card("King", "Diamonds"));
		h.add(new Card("Ace", "Clubs"));
		h.add(new Card("Ace", "Diamonds"));
		h.add(new Card("Ace", "Hearts"));
		
		assertFalse(p.isOnePair(h));
		assertTrue(p.isFourOfAKind(h));
	}
	
//----------------------------------------------------------

	@Test
	public void onePairTest() 
	{
		h.clear();
		h.add(new Card("Ace", "Spades"));
		h.add(new Card("King", "Diamonds"));
		h.add(new Card("2", "Clubs"));
		h.add(new Card("2", "Spades"));
		h.add(new Card("3", "Hearts"));
		
		assertTrue(p.isOnePair(h));
		assertFalse(p.isFourOfAKind(h));
	}
	
	//----------------------------------------------------------

	@Test
	public void twoPairsTest() 
	{
		h.clear();
		h.add(new Card("10", "Diamonds"));
		h.add(new Card("King", "Diamonds"));
		h.add(new Card("10", "Clubs"));
		h.add(new Card("4", "Spades"));
		h.add(new Card("4", "Hearts"));
		
		assertFalse(p.isOnePair(h));
	}

}
