<?php
/****************************************************************************
 * todoyu is published under the BSD License:
 * http://www.opensource.org/licenses/bsd-license.php
 *
 * Copyright (c) 2012, snowflake productions GmbH, Switzerland
 * All rights reserved.
 *
 * This script is part of the todoyu project.
 * The todoyu project is free software; you can redistribute it and/or modify
 * it under the terms of the BSD License.
 *
 * This script is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the BSD License
 * for more details.
 *
 * This copyright notice MUST APPEAR in all copies of the script.
 *****************************************************************************/

/**
 * [Description]
 *
 * @package		Todoyu
 * @subpackage	Core
 */
class TodoyuFunctionTest extends PHPUnit_Framework_TestCase {

	public function testIsFunctionReference() {
		$func1	= 'noFunc';
		$func2	= 55;
		$func3	= 'Tododyu:noFunc';
		$func4	= 'Todoyu::';
		$func5	= 'Todoyu::init';
		$func6	= 'strpos';

		$this->assertFalse( TodoyuFunction::isFunctionReference($func1) );
		$this->assertFalse( TodoyuFunction::isFunctionReference($func2) );
		$this->assertFalse( TodoyuFunction::isFunctionReference($func3) );
		$this->assertFalse( TodoyuFunction::isFunctionReference($func4) );
		$this->assertTrue( TodoyuFunction::isFunctionReference($func5) );
		$this->assertTrue( TodoyuFunction::isFunctionReference($func6) );
	}


	public function testCallUserFunction() {
		$func	= 'TodoyuFunctionTest::callTest';
		$res	= TodoyuFunction::callUserFunction($func, 'a', 'b');

		$this->assertEquals('ok', $res);
	}

	public function testCallUserFunctionArray() {
		$func	= 'TodoyuFunctionTest::callTest';
		$res	= TodoyuFunction::callUserFunctionArray($func, array('a', 'b'));

		$this->assertEquals('ok', $res);
	}

	public function callTest($a, $b) {
		if( $a === 'a' && $b === 'b' ) {
			return 'ok';
		} else {
			return 'error';
		}
	}

}

?>