<?php

/**
 * Tests for the URI normalization routines used by the OpenID
 * library.
 *
 * PHP versions 4 and 5
 *
 * LICENSE: See the COPYING file included in this distribution.
 *
 * @package OpenID
 * @author JanRain, Inc. <openid@janrain.com>
 * @copyright 2005-2008 Janrain, Inc.
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
 */

require_once 'Auth/OpenID/URINorm.php';
require_once 'Tests/Auth/OpenID/TestUtil.php';

class Tests_Auth_OpenID_URINorm_TestCase extends PHPUnit_Framework_TestCase
{
	function __construct(
		$name, $uri, $expected)
	{

		$this->setName($name);
		$this->uri = $uri;
		$this->expected = $expected;
	}

	function runTest()
	{
		$actual = Auth_OpenID_urinorm($this->uri);
		$this->assertEquals($this->expected, $actual);
	}
}

class Tests_Auth_OpenID_URINorm extends PHPUnit_Framework_TestSuite
{
	function __construct($name)
	{
		$this->setName($name);
		$cases = $this->_readTestCases();
		foreach ($cases as $case) {
			list($name, $uri, $expected) = $case;
			$this->addTest(new Tests_Auth_OpenID_URINorm_TestCase($name, $uri, $expected));
		}
	}

	function _readTestCases()
	{
		$lines = Tests_Auth_OpenID_readlines('urinorm.txt');
		$cases = array();
		$case = array();
		for ($i = 0; $i < count($lines) && ($i + 3 <= count($lines)); $i += 4) {
			$name = trim($lines[$i]);
			$uri = trim($lines[$i + 1]);
			$expected = trim($lines[$i + 2]);
			if ($expected == 'fail') {
				$expected = null;
			}
			$cases[] = array($name, $uri, $expected);
		}

		return $cases;
	}
}

