- Added PHPUnit TestCase for custom assertions.
Dieser Commit ist enthalten in:
Ursprung
a2ac0b33e4
Commit
7df515daf7
2 geänderte Dateien mit 133 neuen und 0 gelöschten Zeilen
89
library/Msd/PHPUnit/Constraint/ArrayHasStructure.php
Normale Datei
89
library/Msd/PHPUnit/Constraint/ArrayHasStructure.php
Normale Datei
|
@ -0,0 +1,89 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is part of MySQLDumper released under the GNU/GPL 2 license
|
||||||
|
* http://www.mysqldumper.net
|
||||||
|
*
|
||||||
|
* @package MySQLDumper
|
||||||
|
* @subpackage PHPUnit_Constraint
|
||||||
|
* @version SVN: $Rev$
|
||||||
|
* @author $Author$
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* PHPUnit constraint to check an array for the given structure.
|
||||||
|
*
|
||||||
|
* @package MySQLDumper
|
||||||
|
* @subpackage Archive
|
||||||
|
*/
|
||||||
|
class Msd_PHPUnit_Constraint_ArrayHasStructure extends PHPUnit_Framework_Constraint
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Expected array structure.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $_structure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class constructor, sets the expected array structure.
|
||||||
|
*
|
||||||
|
* @param array $structure Array containing the expected array structure.
|
||||||
|
*
|
||||||
|
* @return Msd_PHPUnit_Constraint_ArrayHasStructure
|
||||||
|
*/
|
||||||
|
public function __construct($structure)
|
||||||
|
{
|
||||||
|
$this->_structure = $structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks an array against the expected structure.
|
||||||
|
*
|
||||||
|
* @param mixed $other Array to check.
|
||||||
|
* @param null $structure Expected structure (used fpr recursion).
|
||||||
|
*
|
||||||
|
* @return bool|int
|
||||||
|
*/
|
||||||
|
protected function matches($other, $structure = null)
|
||||||
|
{
|
||||||
|
if ($structure === null) {
|
||||||
|
$structure = $this->_structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
$isValid = true;
|
||||||
|
foreach ($structure as $key => $value) {
|
||||||
|
if (is_array($value)) {
|
||||||
|
$isValid = $isValid && isset($other[$key]);
|
||||||
|
if (isset($other[$key])) {
|
||||||
|
$isValid = $isValid & $this->matches($other[$key], $value);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$isValid = $isValid && isset($other[$value]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $isValid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a string representation of the object.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function toString()
|
||||||
|
{
|
||||||
|
return 'has the structure' . PHPUnit_Util_Type::export($this->_structure);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the failure message.
|
||||||
|
*
|
||||||
|
* @param mixed $other Checked array.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function failureDescription($other)
|
||||||
|
{
|
||||||
|
return 'an array ' . $this->toString();
|
||||||
|
}
|
||||||
|
}
|
44
library/Msd/PHPUnit/TestCase.php
Normale Datei
44
library/Msd/PHPUnit/TestCase.php
Normale Datei
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is part of MySQLDumper released under the GNU/GPL 2 license
|
||||||
|
* http://www.mysqldumper.net
|
||||||
|
*
|
||||||
|
* @package MySQLDumper
|
||||||
|
* @subpackage PHPUnit
|
||||||
|
* @version SVN: $Rev$
|
||||||
|
* @author $Author$
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Abstract class to extend PHPUnit tests with custom assertions.
|
||||||
|
*
|
||||||
|
* @package MySQLDumper
|
||||||
|
* @subpackage PHPUnit
|
||||||
|
*/
|
||||||
|
abstract class Msd_PHPUnit_TestCase extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Assertion to test that an array has at least a structure.
|
||||||
|
*
|
||||||
|
* @param array $structure Excepted structure of the array.
|
||||||
|
* @param array $array Array to test.
|
||||||
|
* @param string $message Additional information about the test.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function assertArrayHasStructure($structure, $array, $message = '')
|
||||||
|
{
|
||||||
|
self::assertThat($array, self::arrayHasStructure($structure, $message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the constraint for the assertion.
|
||||||
|
*
|
||||||
|
* @param array $structure Excepted structure of the array.
|
||||||
|
*
|
||||||
|
* @return Msd_PHPUnit_Constraint_ArrayHasStructure
|
||||||
|
*/
|
||||||
|
public static function arrayHasStructure($structure)
|
||||||
|
{
|
||||||
|
return new Msd_PHPUnit_Constraint_ArrayHasStructure($structure);
|
||||||
|
}
|
||||||
|
}
|
Laden …
In neuem Issue referenzieren