2022-07-05 15:55:47 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace DNW\Skills\Tests\TrueSkill;
|
2010-08-28 22:05:41 -04:00
|
|
|
|
2022-07-05 15:33:34 +02:00
|
|
|
use DNW\Skills\Tests\TestCase;
|
|
|
|
use DNW\Skills\TrueSkill\DrawMargin;
|
2016-05-24 14:06:43 +02:00
|
|
|
|
|
|
|
class DrawMarginTest extends TestCase
|
2016-05-24 15:12:29 +02:00
|
|
|
{
|
2010-08-28 22:05:41 -04:00
|
|
|
const ERROR_TOLERANCE = 0.000001;
|
2016-05-24 15:12:29 +02:00
|
|
|
|
2023-08-01 11:26:38 +00:00
|
|
|
public function testGetDrawMarginFromDrawProbability(): void
|
2010-08-28 22:05:41 -04:00
|
|
|
{
|
|
|
|
$beta = 25.0 / 6.0;
|
|
|
|
// The expected values were compared against Ralf Herbrich's implementation in F#
|
|
|
|
$this->assertDrawMargin(0.10, $beta, 0.74046637542690541);
|
|
|
|
$this->assertDrawMargin(0.25, $beta, 1.87760059883033);
|
|
|
|
$this->assertDrawMargin(0.33, $beta, 2.5111010132487492);
|
|
|
|
}
|
|
|
|
|
2023-08-04 07:03:28 +00:00
|
|
|
private function assertDrawMargin(float $drawProbability, float $beta, float $expected): void
|
2010-08-28 22:05:41 -04:00
|
|
|
{
|
|
|
|
$actual = DrawMargin::getDrawMarginFromDrawProbability($drawProbability, $beta);
|
2022-07-05 15:46:45 +02:00
|
|
|
$this->assertEqualsWithDelta($expected, $actual, DrawMarginTest::ERROR_TOLERANCE);
|
2016-05-24 15:12:29 +02:00
|
|
|
}
|
2022-07-05 15:55:47 +02:00
|
|
|
}
|