X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=tests%2FUnit%2FModels%2FChannelTest.php;fp=tests%2FUnit%2FModels%2FChannelTest.php;h=a5bbb34f74dd7ccf5a5091043e75f39ab8813cd3;hb=7649d12f400f164dd06f6a45486221234052dbb6;hp=0000000000000000000000000000000000000000;hpb=60b20c057188f8965d02c170099aaf1d8ff4e3c6;p=alttp.git diff --git a/tests/Unit/Models/ChannelTest.php b/tests/Unit/Models/ChannelTest.php new file mode 100644 index 0000000..a5bbb34 --- /dev/null +++ b/tests/Unit/Models/ChannelTest.php @@ -0,0 +1,108 @@ +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)); + } + +}