123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- <?php
- /**
- * @package tests
- * @subpackage assertions
- */
- # ============================================================================ #
- # ASSERTIONS #
- # ============================================================================ #
-
- /**
- * assert_true
- *
- * @param string $value
- * @param string $message
- * @return boolean
- */
- function assert_true($value, $message = '<1> should be TRUE')
- {
- test_run_assertion();
- return assert('$value === TRUE; //'.$message);
- }
-
- function assert_false($value, $message = '<1> should be FALSE')
- {
- test_run_assertion();
- return assert('$value === FALSE; //'.$message);
- }
-
- function assert_null($value, $message = '<1> should be NULL')
- {
- test_run_assertion();
- return assert('$value === NULL; //'.$message);
- }
-
- function assert_not_null($value, $message = '<1> should not be NULL')
- {
- test_run_assertion();
- return assert('$value !== NULL; //'.$message);
- }
-
- function assert_empty($value, $message = '<1> should be empty')
- {
- test_run_assertion();
- return assert('empty($value); //'.$message);
- }
-
- function assert_not_empty($value, $message = '<1> should not be empty')
- {
- test_run_assertion();
- return assert('!empty($value); //'.$message);
- }
-
- function assert_equal($expected, $value, $message = '<1> should be equal to <2>')
- {
- test_run_assertion();
- return assert('$expected == $value; //'.$message);
- }
-
- function assert_not_equal($expected, $value, $message = '<1> should not equal to <2>')
- {
- test_run_assertion();
- return assert('$expected != $value; //'.$message);
- }
-
- function assert_identical($expected, $value, $message = '<1> should be identical to <2>')
- {
- test_run_assertion();
- return assert('$expected === $value; //'.$message);
- }
-
- function assert_not_identical($expected, $value, $message = '<1> should not be identical to <2>')
- {
- test_run_assertion();
- return assert('$expected !== $value; //'.$message);
- }
-
- function assert_match($pattern, $string, $message = '<2> expected to match regular expression <1>') {
- test_run_assertion();
- return assert('preg_match($pattern, $string); //'.$message);
- }
-
- function assert_no_match($pattern, $string, $message = '<2> expected to not match regular expression <1>') {
- test_run_assertion();
- return assert('!preg_match($pattern, $string); //'.$message);
- }
-
- function assert_type($type, $value, $message = '<1> is not of type <2>') {
- test_run_assertion();
- $predicate = 'is_' . strtolower(is_string($type) ? $type : gettype($type));
- return assert('$predicate($value); //'.$message);
- }
-
- function assert_instance_of($class, $object, $message = '<2> is not an instance of class <1>') {
- test_run_assertion();
- return assert('$object instanceof $class; //'.$message);
- }
-
- function assert_length_of($value, $length, $message = '<1> expected to be of length <2>') {
- test_run_assertion();
- $count = is_string($value) ? 'strlen' : 'count';
- return assert('$count($value) == $length; //'.$message);
- }
-
- function assert_trigger_error($callable, $args = array(), $message = '<1> should trigger an error') {
- test_run_assertion();
- $trigger_errors = count($GLOBALS["limonade"]["test_errors"]);
- set_error_handler("test_error_handler");
- $result = call_user_func_array($callable, $args);
- restore_error_handler();
- return assert('$trigger_errors < count($GLOBALS["limonade"]["test_errors"]); //'.$message);
- }
-
- # TODO add web browser assertions assert_http_get, assert_http_response... as in SimpleTest (http://www.simpletest.org/en/web_tester_documentation.html)
-
- function assert_header($response, $expected_name, $expected_value = null, $message = "expected header '%s' to be equal to '%s' but received '%s: %s'")
- {
- test_run_assertion();
- # see assert_header in http://github.com/fnando/voodoo-test/blob/f3b0994ef138a6ba94d5e7cef6c1fb1720797a86/lib/assertions.php
- $headers = preg_split("/^\s*$/ms", $response);
- //var_dump($headers);
- $headers = preg_replace("/\s*$/sm", "", $headers[0]);
- //var_dump($headers);
-
- $regex_header = str_replace("/", "\\/", $expected_name);
- $regex_header = str_replace(".", "\\.", $regex_header);
-
- $header = $expected_name;
-
- # from http://www.faqs.org/rfcs/rfc2616
- # Field names are case-insensitive
- if ($expected_value) {
- $regex = "/^{$regex_header}:(.*?)$/ism";
- $header .= ": {$expected_value}";
- } else {
- $regex = "/^{$regex_header}(:.*?)?$/ism";
- }
-
- $has_header = preg_match($regex, $headers, $matches);
- $sent_header = trim((string)$matches[1]);
-
-
- if(empty($sent_header))
- {
- if(is_null($expected_value))
- {
- $message = "expected header '%s' but header has not been sent";
- }
- else
- {
- $message = "expected header '%s' to be equal to '%s' but header has not been sent";
- }
-
- $message = sprintf($message, $expected_name, $expected_value);
- return assert("false; //".$message);
- }
- else if($expected_value)
- {
- $message = sprintf($message, $expected_name, $expected_value, $expected_name, $sent_header);
- return assert('$expected_value && $sent_header == $expected_value; //'.$message);
- }
- return assert("true; //");
- }
-
- function assert_status($response, $expected_status, $message = "expected status code to be equal to '%s' but received '%s'")
- {
- $lines = explode('\n', trim($response));
- if (preg_match('/HTTP\/(\d+\.\d+)\s+(\d+)/i', $lines[0], $matches))
- {
- $status = $matches[2];
- return assert('$expected_status == $status; //'.sprintf($message, $expected_status, $status));
- }
- return assert("false; //no status code returned in this response string");
- }
|