public function test_it_will_return_an_hand_that_matches_the_search_null_otherwise() { $handSearch = $this->prophesize(HandSearch::class); $handSearch->search(Argument::cetera())->willReturn(new Hand(...[])); $hand = new Hand(...StaticFixtures::straight()); $handSearch->search(Argument::which('getFaceValue', 3), Argument::cetera())->willReturn(new Hand(new Card(3, Suit::spades())))->shouldBeCalled(); $handSearch->search(Argument::which('getFaceValue', 4), Argument::cetera())->willReturn(new Hand(new Card(4, Suit::flowers())))->shouldBeCalled(); $handSearch->search(Argument::which('getFaceValue', 5), Argument::cetera())->willReturn(new Hand(new Card(5, Suit::spades())))->shouldBeCalled(); $handSearch->search(Argument::which('getFaceValue', 6), Argument::cetera())->willReturn(new Hand(new Card(6, Suit::spades())))->shouldBeCalled(); $handSearch->search(Argument::which('getFaceValue', 7), Argument::cetera())->willReturn(new Hand(new Card(7, Suit::spades())))->shouldBeCalled(); $handSearch->search(Argument::any(), Argument::cetera())->willReturn(null); $finder = new StraightFinder($handSearch->reveal()); $this->assertEquals($hand, $finder->find($hand)); }
public static function straight_actual_straight() { return [new Card(3, Suit::spades()), new Card(4, Suit::flowers()), new Card(5, Suit::spades()), new Card(6, Suit::spades()), new Card(7, Suit::spades())]; }
public static function three_of_a_kind_matching_pair() { return [new Card(2, Suit::spades()), new Card(2, Suit::flowers())]; }
public static function two_pairs_second_pair() { return [new Card(4, Suit::spades()), new Card(4, Suit::flowers())]; }