PHP Classes

File: tests/full/StatTest.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   random_compat   tests/full/StatTest.php   Download  
File: tests/full/StatTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: random_compat
Provide random_bytes and random_int functions
Author: By
Last change:
Date: 6 years ago
Size: 1,413 bytes
 

Contents

Class file image Download
<?php

class StatTest extends PHPUnit_Framework_TestCase
{
   
/**
     * All possible values should be > 30% but less than 170%
     *
     * This also catches 0 and 1000
     */
   
public function testDistribution()
    {
       
$integers = array_fill(0, 100, 0);
        for (
$i = 0; $i < 10000; ++$i) {
            ++
$integers[random_int(0,99)];
        }
        for (
$i = 0; $i < 100; ++$i) {
           
$this->assertFalse($integers[$i] < 30);
           
$this->assertFalse($integers[$i] > 170);
        }
    }
   
   
/**
     * This should be between 55% and 75%, always
     */
   
public function testCoverage()
    {
       
$integers = array_fill(0, 2000, 0);
        for (
$i = 0; $i < 2000; ++$i) {
            ++
$integers[random_int(0,1999)];
        }
       
$coverage = 0;
        for (
$i = 0; $i < 2000; ++$i) {
            if (
$integers[$i] > 0) {
                ++
$coverage;
            }
        }
       
$this->assertTrue($coverage >= 1150);
       
$this->assertTrue($coverage <= 1350);
    }
   
    public function
testCompressionRatios()
    {
       
$some_bytes = random_bytes(65536);
       
$compressed = gzcompress($some_bytes, 9);
        if (
function_exists('mb_strlen')) {
           
$length = mb_strlen($compressed, '8bit');
        } else {
           
$length = strlen($compressed);
        }
       
$this->assertTrue($length >= 65000 && $length <= 67000);
    }
}