UnitTestCase.php 3.14 KB
Newer Older
1 2 3 4
<?php
class UnitTestCase
{
    protected $_passed = 0;
5

6
    protected $_failed = 0;
7

8 9 10 11 12 13 14 15 16 17 18
    protected $_messages = array();

    public function assertEqual($value, $value2)
    {
        if ($value == $value2) {
            $this->_passed++;
        } else {
            $seperator = "<br>";
            if(PHP_SAPI === "cli"){
                $seperator = "\n";
             }
19 20 21 22 23 24
            if(is_array($value)){
                $value = var_export($value, true);
             }
            if(is_array($value2)){
                $value2 = var_export($value2, true);
            }
25

26
            $message = "$seperator Value1: $value $seperator != $seperator Value2: $value2 $seperator";
27

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
            $this->_fail($message);
        }
    }

    public function assertIdentical($value, $value2)
    {
        if ($value === $value2) {
            $this->_passed++;
        } else {
            $this->_fail();
        }
    }

    public function assertNotEqual($value, $value2)
    {
        if ($value != $value2) {
            $this->_passed++;
        } else {
            $this->_fail();
        }
    }
    public function assertTrue($expr)
    {
        if ($expr) {
            $this->_passed++;
        } else {
            $this->_fail();
        }
    }
    public function assertFalse($expr)
    {
        if ( ! $expr) {
            $this->_passed++;
        } else {
            $this->_fail();
        }
    }
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

    public function assertNull($expr)
    {
        if (is_null($expr)) {
            $this->pass();
        } else {
            $this->fail();
        }
    }

    public function assertNotNull($expr)
    {
        if (is_null($expr)) {
            $this->fail();
        } else {
            $this->pass();
        }
    }

    public function pass()
85 86 87 88 89
    {
        $this->_passed++;
    }
    public function fail($message = "")
    {
90
        $this->_fail($message);
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
    }
    public function _fail($message = "")
    {
        $trace = debug_backtrace();
        array_shift($trace);


        foreach ($trace as $stack) {
            if (substr($stack['function'], 0, 4) === 'test') {
                $class = new ReflectionClass($stack['class']);

                if ( ! isset($line)) {
                    $line = $stack['line'];
                }

                $errorMessage = $class->getName() . ' : method ' . $stack['function'] . ' failed on line ' . $line;
                $this->_messages[] =  $errorMessage . " " . $message;
                break;
            }
            $line = $stack['line'];
        }
        $this->_failed++;
    }
114
    public function run(DoctrineTest_Reporter $reporter = null, $filter = null)
115 116 117 118 119
    {
        foreach (get_class_methods($this) as $method) {
            if (substr($method, 0, 4) === 'test') {
                $this->setUp();
                $this->$method();
120
                $this->tearDown();
121 122 123
            }
        }
    }
124 125 126 127
    
    public function setUp() {}
    public function tearDown() {}
    
128
    public function getMessages()
129 130 131 132 133 134 135 136 137 138 139 140
    {
        return $this->_messages;
    }
    public function getFailCount()
    {
        return $this->_failed;
    }
    public function getPassCount()
    {
        return $this->_passed;
    }
}