<?php
class ExceptionTest extends PHPUnit_Framework_TestCase
{
public function testExceptions()
{
$ex = new \Punic\Exception('Test');
$this->assertSame(1, $ex->getCode());
$this->assertSame('Test', $ex->getMessage());
$ex = new \Punic\Exception\BadArgumentType('testValue', 'destination');
$this->assertSame(\Punic\Exception::BAD_ARGUMENT_TYPE, $ex->getCode());
$this->assertSame('testValue', $ex->getArgumentValue());
$this->assertSame('destination', $ex->getDestinationTypeDescription());
$this->assertSame("Can't convert 'testValue' to a destination", $ex->getMessage());
$ex = new \Punic\Exception\BadArgumentType(new \stdClass(), 'destination');
$this->assertSame("Can't convert stdClass to a destination", $ex->getMessage());
$ex = new \Punic\Exception\BadArgumentType(array(), 'destination');
$this->assertSame("Can't convert array to a destination", $ex->getMessage());
$ex = new \Punic\Exception\BadArgumentType(true, 'destination');
$this->assertSame("Can't convert TRUE to a destination", $ex->getMessage());
$ex = new \Punic\Exception\BadArgumentType(1, 'destination');
$this->assertSame("Can't convert 1 to a destination", $ex->getMessage());
$ex = new \Punic\Exception\BadArgumentType(1, 'destination');
$this->assertSame("Can't convert 1 to a destination", $ex->getMessage());
$ex = new \Punic\Exception\BadDataFileContents('filePath', 'fileContents');
$this->assertSame(\Punic\Exception::BAD_DATA_FILE_CONTENTS, $ex->getCode());
$this->assertSame('filePath', $ex->getDataFilePath());
$this->assertSame('fileContents', $ex->getDataFileContents());
$this->assertSame("The file 'filePath' contains malformed data", $ex->getMessage());
$ex = new \Punic\Exception\DataFileNotFound('fileId', 'it', 'en');
$this->assertSame(\Punic\Exception::DATA_FILE_NOT_FOUND, $ex->getCode());
$this->assertSame('fileId', $ex->getIdentifier());
$this->assertSame('it', $ex->getLocale());
$this->assertSame('en', $ex->getFallbackLocale());
$this->assertSame("Unable to find the data file 'fileId', neither for 'it' nor for 'en'", $ex->getMessage());
$ex = new \Punic\Exception\DataFileNotFound('fileId');
$this->assertSame("Unable to find the data file 'fileId'", $ex->getMessage());
$ex = new \Punic\Exception\DataFileNotFound('fileId', 'en', 'en');
$this->assertSame("Unable to find the data file 'fileId' for 'en'", $ex->getMessage());
$ex = new \Punic\Exception\DataFileNotReadable('filePath');
$this->assertSame(\Punic\Exception::DATA_FILE_NOT_READABLE, $ex->getCode());
$this->assertSame('filePath', $ex->getDataFilePath());
$this->assertSame("Unable to read from the data file 'filePath'", $ex->getMessage());
$ex = new \Punic\Exception\DataFolderNotFound('it', 'en');
$this->assertSame(\Punic\Exception::DATA_FOLDER_NOT_FOUND, $ex->getCode());
$this->assertSame('it', $ex->getLocale());
$this->assertSame('en', $ex->getFallbackLocale());
$this->assertSame("Unable to find the specified locale folder, neither for 'it' nor for 'en'", $ex->getMessage());
$ex = new \Punic\Exception\DataFolderNotFound('en', 'en');
$this->assertSame("Unable to find the specified locale folder for 'en'", $ex->getMessage());
$ex = new \Punic\Exception\InvalidDataFile('fileID');
$this->assertSame(\Punic\Exception::INVALID_DATAFILE, $ex->getCode());
$this->assertSame("'fileID' is not a valid data file identifier", $ex->getMessage());
$this->assertSame('fileID', $ex->getIdentifier());
$ex = new \Punic\Exception\InvalidLocale('xxxxx');
$this->assertSame(\Punic\Exception::INVALID_LOCALE, $ex->getCode());
$this->assertSame("'xxxxx' is not a valid locale identifier", $ex->getMessage());
$this->assertSame('xxxxx', $ex->getLocale());
$ex = new \Punic\Exception\InvalidLocale(array());
$this->assertSame("A valid locale should be a string, array received", $ex->getMessage());
$ex = new \Punic\Exception\NotImplemented('className::methodName');
$this->assertSame(\Punic\Exception::NOT_IMPLEMENTED, $ex->getCode());
$this->assertSame("className::methodName is not implemented", $ex->getMessage());
$this->assertSame('className::methodName', $ex->getFunction());
$ex = new \Punic\Exception\ValueNotInList(1, array(2, 3, 4));
$this->assertSame(\Punic\Exception::VALUE_NOT_IN_LIST, $ex->getCode());
$this->assertSame("'1' is not valid. Acceptable values are: '2', '3', '4'", $ex->getMessage());
$this->assertSame(1, $ex->getValue());
$this->assertSame(array(2, 3, 4), $ex->getAllowedValues());
}
}
|