This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
lnkohana/system/tests/kohana/ExceptionTest.php
2013-04-22 14:09:50 +10:00

100 lines
2.6 KiB
PHP

<?php defined('SYSPATH') OR die('Kohana bootstrap needs to be included before tests run');
/**
* Tests Kohana Exception Class
*
* @group kohana
* @group kohana.core
* @group kohana.core.exception
*
* @package Kohana
* @category Tests
* @author Kohana Team
* @copyright (c) 2008-2012 Kohana Team
* @license http://kohanaframework.org/license
*/
class Kohana_ExceptionTest extends Unittest_TestCase
{
/**
* Provides test data for test_constructor()
*
* @return array
*/
public function provider_constructor()
{
return array(
array(array(''), '', 0),
array(array(':a'), ':a', 0),
array(array(':a', NULL), ':a', 0),
array(array(':a', array()), ':a', 0),
array(array(':a', array(':a' => 'b')), 'b', 0),
array(array(':a :b', array(':a' => 'c', ':b' => 'd')), 'c d', 0),
array(array(':a', NULL, 5), ':a', 5),
// #3358
array(array(':a', NULL, '3F000'), ':a', '3F000'),
// #3404
array(array(':a', NULL, '42S22'), ':a', '42S22'),
// #3927
array(array(':a', NULL, 'b'), ':a', 'b'),
// #4039
array(array(':a', NULL, '25P01'), ':a', '25P01'),
);
}
/**
* Tests Kohana_Kohana_Exception::__construct()
*
* @test
* @dataProvider provider_constructor
* @covers Kohana_Kohana_Exception::__construct
* @param array $arguments Arguments
* @param string $expected_message Value from getMessage()
* @param integer|string $expected_code Value from getCode()
*/
public function test_constructor($arguments, $expected_message, $expected_code)
{
switch (count($arguments))
{
case 1:
$exception = new Kohana_Exception(reset($arguments));
break;
case 2:
$exception = new Kohana_Exception(reset($arguments), next($arguments));
break;
default:
$exception = new Kohana_Exception(reset($arguments), next($arguments), next($arguments));
}
$this->assertSame($expected_code, $exception->getCode());
$this->assertSame($expected_message, $exception->getMessage());
}
/**
* Provides test data for test_text()
*
* @return array
*/
public function provider_text()
{
return array(
array(new Kohana_Exception('foobar'), $this->dirSeparator('Kohana_Exception [ 0 ]: foobar ~ SYSPATH/tests/kohana/ExceptionTest.php [ '.__LINE__.' ]')),
);
}
/**
* Tests Kohana_Exception::text()
*
* @test
* @dataProvider provider_text
* @covers Kohana_Exception::text
* @param object $exception exception to test
* @param string $expected expected output
*/
public function test_text($exception, $expected)
{
$this->assertEquals($expected, Kohana_Exception::text($exception));
}
}