public function testCompareTo() { // standard win/loss $hand1 = new Hand(); $hand1->add(new Card(new Rank(5))); $hand1->add(new Card(new Rank(7))); $hand2 = new Hand(); $hand2->add(new Card(new Rank(9))); $hand2->add(new Card(new Rank(9))); $this->assertTrue($hand1->compareTo($hand2) == Hand::LOSE); $this->assertTrue($hand2->compareTo($hand1) == Hand::WIN); // with soft ace $hand1 = new Hand(); $hand1->add(new Card(new Rank(RANK::ACE))); $hand1->add(new Card(new Rank(8))); $hand2 = new Hand(); $hand2->add(new Card(new Rank(9))); $hand2->add(new Card(new Rank(9))); $this->assertTrue($hand1->compareTo($hand2) == Hand::WIN); $this->assertTrue($hand2->compareTo($hand1) == Hand::LOSE); // another with soft ace $hand1 = new Hand(); $hand1->add(new Card(new Rank(4))); $hand1->add(new Card(new Rank(RANK::QUEEN))); $hand1->add(new Card(new Rank(RANK::ACE))); $hand1->add(new Card(new Rank(3))); $hand2 = new Hand(); $hand2->add(new Card(new Rank(8))); $hand2->add(new Card(new Rank(3))); $hand2->add(new Card(new Rank(5))); $this->assertTrue($hand1->compareTo($hand2) == Hand::WIN); $this->assertTrue($hand2->compareTo($hand1) == Hand::LOSE); // push with soft ace $hand1 = new Hand(); $hand1->add(new Card(new Rank(4))); $hand1->add(new Card(new Rank(RANK::ACE))); $hand1->add(new Card(new Rank(3))); $hand2 = new Hand(); $hand2->add(new Card(new Rank(8))); $hand2->add(new Card(new Rank(3))); $hand2->add(new Card(new Rank(7))); $this->assertTrue($hand1->compareTo($hand2) == Hand::PUSH); $this->assertTrue($hand2->compareTo($hand1) == Hand::PUSH); // bust $hand1 = new Hand(); $hand1->add(new Card(new Rank(RANK::KING))); $hand1->add(new Card(new Rank(8))); $hand1->add(new Card(new Rank(RANK::KING))); $hand2 = new Hand(); $hand2->add(new Card(new Rank(9))); $hand2->add(new Card(new Rank(9))); $this->assertTrue($hand1->compareTo($hand2) == Hand::LOSE); $this->assertTrue($hand2->compareTo($hand1) == Hand::WIN); }