Вход Регистрация
Файл: gapps/vendor/fzaninotto/faker/test/Faker/Provider/BiasedTest.php
Строк: 84
<?php
namespace FakerTestProvider;

use 
FakerProviderBiased;
use 
FakerGenerator;

class 
BiasedTest extends PHPUnit_Framework_TestCase
{
    const 
MAX 10;
    const 
NUMBERS 25000;
    protected 
$generator;
    protected 
$results = array();
    
    protected function 
setUp()
    {
        
$this->generator = new Generator();
        
$this->generator->addProvider(new Biased($this->generator));

        
$this->results array_fill(1self::MAX0);
    }
    
    public function 
performFake($function)
    {
        for(
$i 0$i self::NUMBERS$i++) {
            
$this->results[$this->generator->biasedNumberBetween(1self::MAX$function)]++;
        }
    }
    
    public function 
testUnbiased()
    {
        
$this->performFake(array('FakerProviderBiased''unbiased'));

        
// assert that all numbers are near the expected unbiased value
        
foreach ($this->results as $number => $amount) {
            
// integral
            
$assumed = (self::MAX $number) - (self::MAX * ($number 1));
            
// calculate the fraction of the whole area
            
$assumed /= 1;
            
$this->assertGreaterThan(self::NUMBERS $assumed .95$amount"Value was more than 5 percent under the expected value");
            
$this->assertLessThan(self::NUMBERS $assumed 1.05$amount"Value was more than 5 percent over the expected value");
        }
    }
    
    public function 
testLinearHigh()
    {
        
$this->performFake(array('FakerProviderBiased''linearHigh'));

        foreach (
$this->results as $number => $amount) {
            
// integral
            
$assumed 0.5 pow(self::MAX $number2) - 0.5 pow(self::MAX * ($number 1), 2);
            
// calculate the fraction of the whole area
            
$assumed /= pow(12) * .5;
            
$this->assertGreaterThan(self::NUMBERS $assumed .9$amount"Value was more than 10 percent under the expected value");
            
$this->assertLessThan(self::NUMBERS $assumed 1.1$amount"Value was more than 10 percent over the expected value");
        }
    }
    
    public function 
testLinearLow()
    {
        
$this->performFake(array('FakerProviderBiased''linearLow'));

        foreach (
$this->results as $number => $amount) {
            
// integral
            
$assumed = -0.5 pow(self::MAX $number2) - -0.5 pow(self::MAX * ($number 1), 2);
            
// shift the graph up
            
$assumed += self::MAX;
            
// calculate the fraction of the whole area
            
$assumed /= pow(12) * .5;
            
$this->assertGreaterThan(self::NUMBERS $assumed .9$amount"Value was more than 10 percent under the expected value");
            
$this->assertLessThan(self::NUMBERS $assumed 1.1$amount"Value was more than 10 percent over the expected value");
        }
    }
}
Онлайн: 2
Реклама