Merge "Added MediaWikiTestCase::assertTypeOrValue to facilitate common type checks"
authorDaniel Kinzler <daniel.kinzler@wikimedia.de>
Fri, 14 Sep 2012 10:08:44 +0000 (10:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 14 Sep 2012 10:08:44 +0000 (10:08 +0000)
1  2 
tests/phpunit/MediaWikiTestCase.php

@@@ -5,11 -5,6 +5,11 @@@ abstract class MediaWikiTestCase extend
        public $regex = '';
        public $runDisabled = false;
  
 +      /**
 +       * @var Array of TestUser
 +       */
 +      public static $users;
 +
        /**
         * @var DatabaseBase
         */
                );
        }
  
 +      /**
 +       * Put each HTML element on its own line and then equals() the results
 +       *
 +       * Use for nicely formatting of PHPUnit diff output when comparing very
 +       * simple HTML
 +       *
 +       * @since 1.20
 +       *
 +       * @param String $expected HTML on oneline
 +       * @param String $actual HTML on oneline
 +       * @param String $msg Optional message
 +       */
 +      protected function assertHTMLEquals( $expected, $actual, $msg='' ) {
 +              $expected = str_replace( '>', ">\n", $expected );
 +              $actual   = str_replace( '>', ">\n", $actual   );
 +
 +              $this->assertEquals( $expected, $actual, $msg );
 +      }
 +
        /**
         * Does an associative sort that works for objects.
         *
                }
        }
  
+       /**
+        * Asserts that the provided variable is of the specified
+        * internal type or equals the $value argument. This is useful
+        * for testing return types of functions that return a certain
+        * type or *value* when not set or on error.
+        *
+        * @since 1.20
+        *
+        * @param string $type
+        * @param mixed $actual
+        * @param mixed $value
+        * @param string $message
+        */
+       protected function assertTypeOrValue( $type, $actual, $value = false, $message = '' ) {
+               if ( $actual === $value ) {
+                       $this->assertTrue( true, $message );
+               }
+               else {
+                       $this->assertType( $type, $actual, $message );
+               }
+       }
+       /**
+        * Asserts the type of the provided value. This can be either
+        * in internal type such as boolean or integer, or a class or
+        * interface the value extends or implements.
+        *
+        * @since 1.20
+        *
+        * @param string $type
+        * @param mixed $actual
+        * @param string $message
+        */
+       protected function assertType( $type, $actual, $message = '' ) {
+               if ( is_object( $actual ) ) {
+                       $this->assertInstanceOf( $type, $actual, $message );
+               }
+               else {
+                       $this->assertInternalType( $type, $actual, $message );
+               }
+       }
  }