PHPUnit2
[ class tree: PHPUnit2 ] [ index: PHPUnit2 ] [ all elements ]

Source for file Assert.php

Documentation is available at Assert.php

  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | PEAR :: PHPUnit2                                                       |
  5. // +------------------------------------------------------------------------+
  6. // | Copyright (c) 2002-2004 Sebastian Bergmann <sb@sebastian-bergmann.de>. |
  7. // +------------------------------------------------------------------------+
  8. // | This source file is subject to version 3.00 of the PHP License,        |
  9. // | that is available at http://www.php.net/license/3_0.txt.               |
  10. // | If you did not receive a copy of the PHP license and are unable to     |
  11. // | obtain it through the world-wide-web, please send a note to            |
  12. // | license@php.net so we can mail you a copy immediately.                 |
  13. // +------------------------------------------------------------------------+
  14. //
  15. // $Id: Assert.php,v 1.5.2.1 2004/09/04 07:17:31 sebastian Exp $
  16. //
  17.  
  18. require_once 'PHPUnit2/Framework/AssertionFailedError.php';
  19. require_once 'PHPUnit2/Framework/ComparisonFailure.php';
  20.  
  21. /**
  22.  * A set of assert methods.
  23.  *
  24.  * @author      Sebastian Bergmann <sb@sebastian-bergmann.de>
  25.  * @copyright   Copyright &copy; 2002-2004 Sebastian Bergmann <sb@sebastian-bergmann.de>
  26.  * @license     http://www.php.net/license/3_0.txt The PHP License, Version 3.0
  27.  * @category    PHP
  28.  * @package     PHPUnit2
  29.  * @subpackage  Framework
  30.  * @static
  31.  */
  32.     // {{{ Static Members
  33.  
  34.     /**
  35.     * @var    boolean 
  36.     * @access private
  37.     * @static
  38.     */
  39.     private static $looselyTyped = false;
  40.  
  41.     // }}}
  42.     // {{{ protected function __construct()
  43.  
  44.     /**
  45.     * Protect constructor since it is a static only class.
  46.     *
  47.     * @access protected
  48.     */
  49.     protected function __construct({}
  50.  
  51.     // }}}
  52.     // {{{ public static function assertEquals($expected, $actual, $delta = 0, $message = '')
  53.  
  54.     /**
  55.     * Asserts that two variables are equal.
  56.     *
  57.     * @param  mixed  $expected 
  58.     * @param  mixed  $actual 
  59.     * @param  mixed  $delta 
  60.     * @param  string $message 
  61.     * @access public
  62.     * @static
  63.     */
  64.     public static function assertEquals($expected$actual$delta = 0$message ''{
  65.         if (is_null($expected&& is_null($actual)) {
  66.             return;
  67.         }
  68.  
  69.         if (is_object($expected)) {
  70.             if (!is_object($actual|| (serialize($expected!= serialize($actual))) {
  71.                 self::failNotEquals($expected$actual$message);
  72.             }
  73.  
  74.             return;
  75.         }
  76.  
  77.         if (is_array($expected)) {
  78.             if (!is_array($actual)) {
  79.                 self::failNotEquals($expected$actual$message);
  80.             }
  81.  
  82.             self::sortArrayRecursively($actual);
  83.             self::sortArrayRecursively($expected);
  84.  
  85.             if (self::$looselyTyped{
  86.                 $actual   = self::convertToString($actual);
  87.                 $expected = self::convertToString($expected);
  88.             }
  89.  
  90.             self::assertEquals(serialize($expected)serialize($actual)0$message);
  91.  
  92.             return;
  93.         }
  94.  
  95.         if ((is_double($expected|| is_float($expected)) &&
  96.             (is_double($actual)   || is_float($actual))) {
  97.             if (!(abs($expected $actual<= $delta)) {
  98.                 self::failNotEquals($expected$actual$message);
  99.             }
  100.  
  101.             return;
  102.         }
  103.  
  104.         if (self::$looselyTyped{
  105.             settype($actualgettype($expected));
  106.         }
  107.  
  108.         self::assertSame($expected$actual$message);
  109.     }
  110.  
  111.     // }}}
  112.     // {{{ public static function assertTrue($condition, $message = '')
  113.  
  114.     /**
  115.     * Asserts that a condition is true.
  116.     *
  117.     * @param  boolean $condition 
  118.     * @param  string  $message 
  119.     * @access public
  120.     * @static
  121.     */
  122.     public static function assertTrue($condition$message ''{
  123.         if (!$condition{
  124.             self::fail($message);
  125.         }
  126.     }
  127.  
  128.     // }}}
  129.     // {{{ public static function assertFalse($condition, $message = '')
  130.  
  131.     /**
  132.     * Asserts that a condition is false.
  133.     *
  134.     * @param  boolean  $condition 
  135.     * @param  string   $message 
  136.     * @access public
  137.     * @static
  138.     */
  139.     public static function assertFalse($condition$message ''{
  140.         self::assertTrue(!$condition$message);
  141.     }
  142.  
  143.     // }}}
  144.     // {{{ public static function assertNotNull($object, $message = '')
  145.  
  146.     /**
  147.     * Asserts that an object isn't null.
  148.     *
  149.     * @param  object $object 
  150.     * @param  string $message 
  151.     * @access public
  152.     * @static
  153.     */
  154.     public static function assertNotNull($object$message ''{
  155.         self::assertTrue($object !== null$message);
  156.     }
  157.  
  158.     // }}}
  159.     // {{{ public static function assertNull($object, $message = '')
  160.  
  161.     /**
  162.     * Asserts that an object is null.
  163.     *
  164.     * @param  object $object 
  165.     * @param  string $message 
  166.     * @access public
  167.     * @static
  168.     */
  169.     public static function assertNull($object$message ''{
  170.         self::assertTrue($object === null$message);
  171.     }
  172.  
  173.     // }}}
  174.     // {{{ public static function assertSame($expected, $actual, $message = '')
  175.  
  176.     /**
  177.     * Asserts that two objects refer to the same object.
  178.     *
  179.     * @param  object $object 
  180.     * @param  object $object 
  181.     * @param  string $message 
  182.     * @access public
  183.     * @static
  184.     */
  185.     public static function assertSame($expected$actual$message ''{
  186.         if ($expected !== $actual{
  187.             self::failNotSame($expected$actual$message);
  188.         }
  189.     }
  190.  
  191.     // }}}
  192.     // {{{ public static function assertNotSame($expected, $actual, $message = '')
  193.  
  194.     /**
  195.     * Asserts that two objects refer not to the same object.
  196.     *
  197.     * @param  object $object 
  198.     * @param  object $object 
  199.     * @param  string $message 
  200.     * @access public
  201.     * @static
  202.     */
  203.     public static function assertNotSame($expected$actual$message ''{
  204.         if ($expected === $actual{
  205.             self::failSame($message);
  206.         }
  207.     }
  208.  
  209.     // }}}
  210.     // {{{ public static function assertType($expected, $actual, $message = '')
  211.  
  212.     /**
  213.     * Asserts that a variable is of a given type.
  214.     *
  215.     * @param  string $expected 
  216.     * @param  mixed  $actual 
  217.     * @param  string $message 
  218.     * @access public
  219.     * @static
  220.     */
  221.  
  222.     public static function assertType($expected$actual$message ''{
  223.         if (is_object($actual)) {
  224.             $actual get_class($actual);
  225.         else {
  226.             $actual gettype($actual);
  227.         }
  228.  
  229.         if ($expected != $actual{
  230.             self::failNotEquals(
  231.               $expected,
  232.               $actual,
  233.               $message
  234.             );
  235.         }
  236.     }
  237.  
  238.     // }}}
  239.     // {{{ public static function assertRegExp($expected, $actual, $message = '')
  240.  
  241.     /**
  242.     * Asserts that a string matches a given
  243.     * regular expression.
  244.     *
  245.     * @param  string $expected 
  246.     * @param  string $actual 
  247.     * @param  string $message 
  248.     * @access public
  249.     * @static
  250.     */
  251.     public static function assertRegExp($expected$actual$message ''{
  252.         if (!preg_match($expected$actual)) {
  253.             self::failNotEquals($expected$actual$message);
  254.         }
  255.     }
  256.  
  257.     // }}}
  258.     // {{{ public static function fail($message = '')
  259.  
  260.     /**
  261.     * Fails a test with the given message.
  262.     *
  263.     * @param  string $message 
  264.     * @throws PHPUnit2_Framework_AssertionFailedError
  265.     * @access public
  266.     * @static
  267.     */
  268.     public static function fail($message ''{
  269.         throw new PHPUnit2_Framework_AssertionFailedError($message);
  270.     }
  271.  
  272.     // }}}
  273.     // {{{ public static function format($expected, $actual, $message)
  274.  
  275.     /**
  276.     * @param  mixed   $expected 
  277.     * @param  mixed   $actual 
  278.     * @param  string  $message 
  279.     * @access public
  280.     * @static
  281.     */
  282.     public static function format($expected$actual$message{
  283.         return sprintf(
  284.           '%s%sexpected: <%s> but was: <%s>',
  285.  
  286.           $message,
  287.           ($message != ''' ' '',
  288.           self::objectToString($expected),
  289.           self::objectToString($actual)
  290.         );
  291.     }
  292.  
  293.     // }}}
  294.     // {{{ public static function setLooselyTyped($looselyTyped)
  295.  
  296.     /**
  297.     * @param  boolean $looselyTyped 
  298.     * @access public
  299.     * @static
  300.     */
  301.     public static function setLooselyTyped($looselyTyped{
  302.         if (is_bool($looselyTyped)) {
  303.             self::$looselyTyped $looselyTyped;
  304.         }
  305.     }
  306.  
  307.     // }}}
  308.     // {{{ private static function convertToString($value)
  309.  
  310.     /**
  311.     * Converts a value to a string.
  312.     *
  313.     * @param  mixed   $value 
  314.     * @access private
  315.     * @static
  316.     */
  317.     private static function convertToString($value{
  318.         foreach ($value as $k => $v{
  319.             if (is_array($v)) {
  320.                 $value[$k= self::convertToString($value[$k]);
  321.             else if (is_object($v)) {
  322.                 $value[$k= self::objectToString($value[$k]);
  323.             else {
  324.                 settype($value[$k]'string');
  325.             }
  326.         }
  327.  
  328.         return $value;
  329.     }
  330.  
  331.     // }}}
  332.     // {{{ private static function failSame($message)
  333.  
  334.     /**
  335.     * @param  string  $message 
  336.     * @throws PHPUnit2_Framework_AssertionFailedError
  337.     * @access private
  338.     * @static
  339.     */
  340.     private static function failSame($message{
  341.         self::fail(
  342.           sprintf(
  343.             '%s%sexpected not same',
  344.  
  345.             $message,
  346.             ($message != ''' ' ''
  347.           )
  348.         );
  349.     }
  350.  
  351.     // }}}
  352.     // {{{ private static function failNotSame($expected, $actual, $message)
  353.  
  354.     /**
  355.     * @param  mixed   $expected 
  356.     * @param  mixed   $actual 
  357.     * @param  string  $message 
  358.     * @throws PHPUnit2_Framework_AssertionFailedError
  359.     * @access private
  360.     * @static
  361.     */
  362.     private static function failNotSame($expected$actual$message{
  363.         if (is_string($expected&& is_string($actual)) {
  364.             throw new PHPUnit2_Framework_ComparisonFailure($expected$actual$message);
  365.         }
  366.  
  367.         self::fail(
  368.           sprintf(
  369.             '%s%sexpected same: <%s> was not: <%s>',
  370.  
  371.             $message,
  372.             ($message != ''' ' '',
  373.             self::objectToString($expected),
  374.             self::objectToString($actual)
  375.           )
  376.         );
  377.     }
  378.  
  379.     // }}}
  380.     // {{{ private static function failNotEquals($expected, $actual, $message)
  381.  
  382.     /**
  383.     * @param  mixed   $expected 
  384.     * @param  mixed   $actual 
  385.     * @param  string  $message 
  386.     * @throws PHPUnit2_Framework_AssertionFailedError
  387.     * @access private
  388.     * @static
  389.     */
  390.     private static function failNotEquals($expected$actual$message{
  391.         self::fail(self::format($expected$actual$message));
  392.     }
  393.  
  394.     // }}}
  395.     // {{{ private static function objectToString($object)
  396.  
  397.     /**
  398.     * @param  mixed   $object 
  399.     * @return string 
  400.     * @access private
  401.     * @static
  402.     */
  403.     private static function objectToString($object{
  404.         if (is_array($object|| is_object($object)) {
  405.             $object serialize($object);
  406.         }
  407.  
  408.         return $object;
  409.     }
  410.  
  411.     // }}}
  412.     // {{{ private static function sortArrayRecursively(&$array) {
  413.  
  414.     /**
  415.     * Sorts an array recursively by its keys.
  416.     *
  417.     * @param  array $array 
  418.     * @access private
  419.     * @static
  420.     * @author Adam Maccabee Trachtenberg <adam@trachtenberg.com>
  421.     */
  422.     private static function sortArrayRecursively(&$array{
  423.         ksort($array);
  424.  
  425.         foreach($array as $k => $v{
  426.             if (is_array($v)) {
  427.                 self::sortArrayRecursively($array[$k]);
  428.             }
  429.         }  
  430.     }
  431.  
  432.     // }}}
  433. }
  434.  
  435. /*
  436.  * vim600:  et sw=2 ts=2 fdm=marker
  437.  * vim<600: et sw=2 ts=2
  438.  */
  439. ?>

Documentation generated on Mon, 11 Mar 2019 13:55:58 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.