<?php test_case("Router"); test_case_describe("Testing limonade router functions."); function before_each_test_in_router() { route_reset(); } function test_router_build_route() { assert_trigger_error('route_build', array('UNKOWN', '/', 'aaa')); /* testing route returned array */ $r = route_build("GET", "/index", 'get_index'); assert_equal($r["method"], "GET"); assert_equal($r["pattern"], "#^/index(?:/*?)?\$#i"); assert_empty($r["names"]); assert_equal($r["function"], "get_index"); /* testing very simple route with no parameters */ assert_match($r["pattern"], "/index"); assert_no_match($r["pattern"], "/other"); assert_no_match($r["pattern"], "/"); assert_no_match($r["pattern"], "/index/1"); /* testing empty route */ $r = route_build("GET", "/", 'get_index'); assert_match($r["pattern"], "/"); assert_match($r["pattern"], ""); assert_no_match($r["pattern"], "/test2"); $r = route_build("GET", "", 'get_index'); assert_match($r["pattern"], "/"); assert_match($r["pattern"], ""); assert_no_match($r["pattern"], "/test2");
/** * Displays and ending the current tests suite * * @return void */ function endtestcase() { $name = $GLOBALS["limonade"]["test_case_current"]; echo "## " . strtoupper($name) . "\n"; $desc = test_case_describe(); if (!is_null($desc)) { echo $desc . "\n"; } echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"; test_case_execute_current(); if (!is_null($name)) { $test = $GLOBALS["limonade"]["test_cases"][$name]; // closing previous test echo "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"; echo $test['failures'] > 0 ? test_cli_format("|FAILED!|", "red") : test_cli_format("|PASSED|", "green"); echo " Test case '{$name}' finished: "; echo count(test_case_all_func()) . " tests, "; echo " {$test['failures']} failures for {$test['assertions']} assertions.\n"; echo "-----------------------------------------------------------\n"; } $GLOBALS["limonade"]["test_case_current"] = null; }
<?php if (!defined('LIMONADE')) { $h = "HTTP/1.0 401 Unauthorized"; header($h); die($h); } // Security check test_case("Functional"); test_case_describe("Functional tests"); function before_each_test_in_functional() { env(null); } function test_functional_request() { $response = test_request(TESTS_DOC_ROOT . '01-hello_world.php', 'GET', true); //echo $response; assert_header($response, 'Content-type', 'text/html'); } end_test_case();
<?php test_case("Test"); test_case_describe("Testing test and assertions functions.\n" . "Must run first, before all other tests."); function before_each_test_in_test() { // echo "// test_before_test(): executed before each test\n"; global $val; $val = NULL; } function before_each_assert_in_test() { // echo "// test_before_test(): executed before each test\n"; global $val; $val = 10; } // fake function for test purpose function my_triggering_error_func($trigger) { if ($trigger) { trigger_error("Mmmm... error", E_USER_ERROR); } } // tests function test_test_simple_assertions() { assert_true(true); assert_false(false); assert_equal("aaa", "aaa"); assert_not_equal("aaas", "aaa"); }
<?php test_case("Output"); test_case_describe("Testing limonade output functions."); if (!defined('URL_FOR_OUTPUT_TEST')) { define('URL_FOR_OUTPUT_TEST', TESTS_DOC_ROOT . '02-outputs.php'); } function before_each_test_in_output() { env(null); option('encoding', 'utf-8'); } function test_output_layout() { } function test_output_render() { $lorem = "Lorem ipsum dolor sit amet."; $q_lorem = preg_quote($lorem); # Testing standard rendering with sprint string assert_equal(render($lorem), $lorem); assert_equal(render($lorem, null, array('unused')), $lorem); assert_equal(render("Lorem %s dolor sit amet.", null, array('ipsum')), $lorem); assert_equal(render("Lorem %s dolor sit amet.", null, array('var1' => 'ipsum')), $lorem); $response = test_request(URL_FOR_OUTPUT_TEST . '/render0', 'GET'); assert_equal($response, $lorem); $response = test_request(URL_FOR_OUTPUT_TEST . '/render1', 'GET'); assert_equal($response, $lorem); # Testing rendering with a view (inline function case) $view = '_test_output_html_hello_world'; $html = render($view);
<?php if (!defined('LIMONADE')) { $h = "HTTP/1.0 401 Unauthorized"; header($h); die($h); } // Security check test_case("File"); test_case_describe("Testing limonade file functions."); function before_each_test_in_file() { } function test_file_mime_type() { $mimes = mime_type(); assert_true(is_array($mimes)); assert_not_empty($mimes); assert_empty(mime_type('')); assert_null(mime_type('unknown_extension')); assert_equal(mime_type('txt'), 'text/plain'); assert_equal(mime_type('TXT'), 'text/plain'); assert_equal(mime_type('jpg'), 'image/jpeg'); assert_equal(mime_type('JPG'), 'image/jpeg'); } function test_file_extension() { assert_equal(file_extension('my_file'), ''); assert_equal(file_extension('my_file.txt'), 'txt'); assert_equal(file_extension('my_file.html.php'), 'php'); assert_equal(file_extension('my_file.JPG'), 'JPG');
<?php if (!defined('LIMONADE')) { $h = "HTTP/1.0 401 Unauthorized"; header($h); die($h); } // Security check test_case("HTTP"); test_case_describe("Testing limonade HTTP utils functions."); function test_http_response_status_code() { $response = test_request(TESTS_DOC_ROOT . '02-outputs.php/render0', 'GET', true); assert_match("/HTTP\\/1\\./", $response); assert_status($response, 200); } function test_http_ua_accepts() { $env = env(); $env['SERVER']['HTTP_ACCEPT'] = null; assert_true(http_ua_accepts('text/plain')); $env['SERVER']['HTTP_ACCEPT'] = 'text/html'; assert_true(http_ua_accepts('html')); $env['SERVER']['HTTP_ACCEPT'] = 'text/*; application/json'; assert_true(http_ua_accepts('html')); assert_true(http_ua_accepts('text/html')); assert_true(http_ua_accepts('text/plain')); assert_true(http_ua_accepts('application/json')); assert_false(http_ua_accepts('image/png')); assert_false(http_ua_accepts('png')); assert_true(defined('TESTS_DOC_ROOT'), "Undefined 'TESTS_DOC_ROOT' constant");
<?php if(!defined('LIMONADE')){$h="HTTP/1.0 401 Unauthorized";header($h);die($h);}// Security check test_case("Main"); test_case_describe("Testing limonade main functions."); function before_each_test_in_main() { env(null); } function test_main_option() { assert_true(is_array(option())); assert_true(is_array(option(null))); assert_empty(option()); $my_first_option = option('my_first_option'); assert_true(empty($my_first_option)); assert_not_equal(option('my_first_option', 'my first value'), 123); assert_true(is_string(option('my_first_option'))); assert_equal(option('my_first_option'), 'my first value'); assert_equal(option('my_first_option'), 'my first value'); assert_true(is_array(option('my_first_option', 123, 456))); $my_first_option = option('my_first_option'); assert_equal($my_first_option[0], 123); assert_equal($my_first_option[1], 456); } function test_main_params() { assert_empty(params());
<?php test_case("Request"); test_case_describe("Testing limonade request functions."); function before_each_test_in_request() { env(null); } function test_request_methods() { $m = request_methods(); assert_length_of($m, 5); } function test_request_method_is_allowed() { assert_true(request_method_is_allowed("GET")); assert_true(request_method_is_allowed("get")); assert_true(request_method_is_allowed("POST")); assert_true(request_method_is_allowed("PUT")); assert_true(request_method_is_allowed("DELETE")); assert_true(request_method_is_allowed("HEAD")); } function test_request_method() { $env = env(); $env['SERVER']['REQUEST_METHOD'] = null; assert_trigger_error("request_method"); $methods = request_methods(); foreach ($methods as $method) { $env['SERVER']['REQUEST_METHOD'] = $method; assert_equal(request_method($env), $method);
/** * Displays and ending the current tests suite. * * @return void */ function end_test_case() { $name = $GLOBALS['limonade']['test_case_current']; echo '## ' . strtoupper($name) . "\n"; $desc = test_case_describe(); if (!is_null($desc)) { echo $desc . "\n"; } echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"; test_case_execute_current(); if (!is_null($name)) { $test = $GLOBALS['limonade']['test_cases'][$name]; // closing previous test echo "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"; echo $test['failures'] > 0 ? test_cli_format('|FAILED!|', 'red') : test_cli_format('|PASSED|', 'green'); echo " Test case '{$name}' finished: "; echo count(test_case_all_func()) . ' tests, '; echo " {$test['failures']} failures for {$test['assertions']} assertions.\n"; echo "-----------------------------------------------------------\n"; } $GLOBALS['limonade']['test_case_current'] = null; }