guessing_type = 'gtbk'; $this->assertTrue($channel->isValidGuess('1')); $this->assertTrue($channel->isValidGuess('22')); $this->assertTrue($channel->isValidGuess('3 ')); $this->assertTrue($channel->isValidGuess('vier 4Head')); $this->assertTrue($channel->isValidGuess('Vier 4Head')); $this->assertTrue($channel->isValidGuess('roodyo1Gtbigkey')); $this->assertFalse($channel->isValidGuess('1:22:56')); $this->assertFalse($channel->isValidGuess('torch')); } public function test_guessing_scoring() { $channel = new Channel(); $channel->guessing_type = 'gtbk'; $channel->guessing_settings = [ 'gtbk' => [ 'points_exact_first' => 5, 'points_exact_other' => 4, 'points_close_first' => 3, 'points_close_other' => 2, 'points_close_max' => 5, ], ]; $this->assertEquals(5, $channel->scoreGuessing('3', '3', true)); $this->assertEquals(4, $channel->scoreGuessing('12', '12', false)); $this->assertEquals(3, $channel->scoreGuessing('15', '14', true)); $this->assertEquals(2, $channel->scoreGuessing('8', '6', false)); $this->assertEquals(0, $channel->scoreGuessing('7', '1', true)); $this->assertEquals(0, $channel->scoreGuessing('3', '22', false)); $this->assertEquals(5, $channel->scoreGuessing('2', 'roodyo1Gtbigkey', true)); $this->assertEquals(5, $channel->scoreGuessing('4', 'Vier 4Head', true)); $this->assertEquals(5, $channel->scoreGuessing('5', '5 ', true)); } public function test_guessing_winners() { $channel = new Channel(); $channel->guessing_type = 'gtbk'; $channel->guessing_settings = [ 'gtbk' => [ 'close_winners_message' => 'within {distance}: {names}', 'no_winners_message' => 'no winners', 'winners_message' => 'winners: {names}', ], ]; $this->assertEquals('no winners', $channel->listGuessingWinners([])); $winners = []; $winner = new GuessingWinner(); $winner->uname = 'Horstie'; $winner->guess = '3'; $winner->solution = '3'; $winner->score = 1; $winners[] = $winner; $this->assertEquals('winners: Horstie', $channel->listGuessingWinners($winners)); $winner = new GuessingWinner(); $winner->uname = 'Borstie'; $winner->guess = '3'; $winner->solution = '3'; $winner->score = 1; $winners[] = $winner; $channel->languages = ['de']; $this->assertEquals('winners: Horstie und Borstie', $channel->listGuessingWinners($winners)); $channel->languages = ['en']; $this->assertEquals('winners: Horstie and Borstie', $channel->listGuessingWinners($winners)); $winners[0]->guess = '1'; $winners[1]->guess = '5'; $channel->languages = ['de']; $this->assertEquals('within 2: Horstie und Borstie', $channel->listGuessingWinners($winners)); $channel->languages = ['en']; $this->assertEquals('within 2: Horstie and Borstie', $channel->listGuessingWinners($winners)); $channel->guessing_settings = [ 'gtbk' => [ 'no_winners_message' => 'no winners', 'winners_message' => 'winners: {names}', ], ]; $channel->languages = ['de']; $this->assertEquals('winners: Horstie und Borstie', $channel->listGuessingWinners($winners)); $channel->languages = ['en']; $this->assertEquals('winners: Horstie and Borstie', $channel->listGuessingWinners($winners)); } }