def setUp(self):
     self.solver = PokerSolver()
class PokerSolverTest(unittest.TestCase):
    def setUp(self):
        self.solver = PokerSolver()

    def test_solve_withSimilarHand(self):
        self.assertEquals(self.solver.solve("Black: 2H 3D 5S 9C KD  White: 2D 3H 5C 9S KH"), "tie")

    def test_solve_withHighCard(self):
        self.assertEquals(self.solver.solve("Black: 2H 3D 5S 9C AD  White: 2D 3H 5C 9S KH"), "Black")

    def test_solve_withOnePair(self):
        self.assertEquals(self.solver.solve("Black: 2H 2D 5S 9C KD  White: 2D 3H 5C 9S KH"), "Black")
        self.assertEquals(self.solver.solve("Black: 2H 3D 5S 9C KD  White: 2D 3H 5C 5S KH"), "White")
        self.assertEquals(self.solver.solve("Black: 2H 3D 5S KC KD  White: 2D 3H 9C 9S KH"), "Black")
        self.assertEquals(self.solver.solve("Black: 2H 3D 5S KC KD  White: 2D 3H 5C KS KH"), "tie")

    def test_solve_withTwoPair(self):
        self.assertEquals(self.solver.solve("Black: 2H 2D 5S 5C KD  White: 2D 3H 5C 9S KH"), "Black")
        self.assertEquals(self.solver.solve("Black: 2H 2D 5S 5C KD  White: 2D 3H 5C KS KH"), "White")
        self.assertEquals(self.solver.solve("Black: 2H 2D 5S 5C KD  White: 2D 5H 5C KS KH"), "White")
        self.assertEquals(self.solver.solve("Black: 2H 5D 5S KC KD  White: 2D 5H 5C KS KH"), "tie")

    def test_solve_withThreeOfAKind(self):
        self.assertEquals(self.solver.solve("Black: 2H 2D 2S 9C KD  White: 3D 3H 5C 9S KH"), "Black")
        self.assertEquals(self.solver.solve("Black: 2H 2D 2S 9C KD  White: 3D 3H 3C 9S KH"), "White")

    def test_solve_withStraight(self):
        self.assertEquals(self.solver.solve("Black: 2H 3D 4S 5C 6D  White: 2D 3H 5C 9S KH"), "Black")
        self.assertEquals(self.solver.solve("Black: 9H 6D 7S 8C 5D  White: 3D 4H 5C 6S 7H"), "Black")

    def test_solve_withFlush(self):
        self.assertEquals(self.solver.solve("Black: 2H 3D 4S 5C 6D  White: 2H 3H 5H 9H KH"), "White")
        self.assertEquals(self.solver.solve("Black: 2D 3D KD AD TD  White: 2H 3H QH JH KH"), "Black")

    def test_solve_withFullHouse(self):
        self.assertEquals(self.solver.solve("Black: 2H 2D 4S 4C 4D  White: 2H 3H 5H 6H 7H"), "Black")
        self.assertEquals(self.solver.solve("Black: 2H 2D 4S 4C 4D  White: 7H 7S 5H 5H 5H"), "White")
        self.assertEquals(self.solver.solve("Black: 2H 2D 4S 4C 4D  White: 7H 7S 3H 3H 3H"), "Black")
        self.assertEquals(self.solver.solve("Black: 7H 7D 4S 4C 4D  White: 2H 2S 4H 4H 4H"), "Black")

    def test_solve_withFourOfAKind(self):
        self.assertEquals(self.solver.solve("Black: 2H 2D 2S 2C KD  White: 3D 3H 5C 9S KH"), "Black")
        self.assertEquals(self.solver.solve("Black: 2H 2D 2S 2C KD  White: 3D 3H 3C 3S KH"), "White")
        self.assertEquals(self.solver.solve("Black: 2H 2D 2S 2C KD  White: 2D 2H 2C 2S AH"), "White")

    def test_solve_withStraightFlush(self):
        self.assertEquals(self.solver.solve("Black: 2H 3D 4S 5C 6D  White: 2H 3H 4H 5H 6H"), "White")
        self.assertEquals(self.solver.solve("Black: 7S 8S 9S TS JS  White: 2H 3H 4H 5H 6H"), "Black")

    def test_solve_withOtherName(self):
        self.assertEquals(self.solver.solve("Nicolas: 2H 3D 4S 5C 6D  Sebastien: 2H 3H 4H 5H 6H"), "Sebastien")

    def test_solve_withFalseCard(self):
        self.assertRaises(ValueError, self.solver.solve, "Black: 2H YD 2S 2C KD  White: 3D 3H 5C 9S KH")