Projekt

Obecné

Profil

Stáhnout (3.69 KB) Statistiky
| Větev: | Tag: | Revize:
<?php

require_once APPPATH . '/libraries/variable_key_generators/Checksum_Variable_Key_Generator.php';

/**
* Test class for Parity_Variable_Key_Generator.
* Generated by PHPUnit on 2013-06-05 at 14:39:59.
*/
class Checksum_Variable_Key_GeneratorTest extends PHPUnit_Framework_TestCase {

/**
* @var Parity_Variable_Key_Generator
*/
protected $object;

/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp() {
$this->object = new Checksum_Variable_Key_Generator;
}

/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown() {
}

/**
* Test uniqe keys for member IDs
* @covers Parity_Variable_Key_Generator::generate
*/
public function testGenerate() {
$variable_symbols_bottom = array();
for ($i = 0; $i < 29999; $i++)
{
$vs = $this->object->generate(strval($i));
$variable_symbols_bottom[$vs] = true;
}
$this->assertEquals(count($variable_symbols_bottom), 29999);
$variable_symbols_top = array();
for ($i = 990000; $i < 999999; $i++)
{
$vs = $this->object->generate(strval($i));
$variable_symbols_top[$vs] = true;
}
$this->assertEquals(count($variable_symbols_top), 9999);
$variable_symbols_middle = array();
$seed = rand(30000, 269999);
for ($i = $seed; $i < $seed + 9999; $i++)
{
$vs = $this->object->generate(strval($i));
$variable_symbols_middle[$vs] = true;
}
$this->assertEquals(count($variable_symbols_middle), 9999);
$vs = array_merge($variable_symbols_bottom, $variable_symbols_middle, $variable_symbols_top);
$this->assertEquals(count($vs), 49997);
}

/**
* Tests one error check
* @covers Parity_Variable_Key_Generator::errorCheck
*/
public function testOneErrorCheck() {
$vs = $this->object->generate(rand(1, 999999));
// one error in variable symbol
for ($i = 0; $i < 10; $i++) // move error position
{
for ($j = 0; $j < 10; $j++) // change value
{
$bad_vs = $vs;
$bad_vs[$i] = strval($j);
// skip no error test
if ($bad_vs == $vs)
{
continue;
}
$result = $this->object->errorCheck($bad_vs);
$this->assertFalse($result);
}
}
}
/**
* Tests two error check
* @covers Parity_Variable_Key_Generator::errorCheck
*/
public function testTwoErrorsCheck() {
$vs = $this->object->generate(rand(1, 999999));
// two errors in variable symbol
for ($i = 0; $i < 10; $i++) // move first error position
{
for ($j = 0; $j < 10; $j++) // change first value
{
for ($k = $i+1; $k < 10; $k++) // move second error position
{
for ($l = 0; $l < 10; $l++) // change second value
{
$bad_vs = $vs;
$bad_vs[$i] = strval($j);
$bad_vs[$k] = strval($l);
// skip no error test
if ($bad_vs == $vs)
{
continue;
}

$result = $this->object->errorCheck($bad_vs);
$this->assertFalse($result);
}
}
}
}
}

/**
* Tests one error correction
* @covers Parity_Variable_Key_Generator::errorCorrection
*/
public function testOneErrorCorrection() {
$vs = $this->object->generate(rand(1, 999999));
// one error in variable symbol
for ($i = 0; $i < 10; $i++) // move error position
{
for ($j = 0; $j < 10; $j++) // change value
{
$bad_vs = $vs;
$bad_vs[$i] = strval($j);
// skip no error test
if ($bad_vs == $vs)
{
continue;
}
$result = $this->object->errorCorrection($bad_vs);
$this->assertTrue($result['status']);
$this->assertEquals($result['corrected_variable_key'], $vs);
}
}
}

}
    (1-1/1)