Files
yii/tests/framework/utils/CFormatterTest.php
Carsten Brandt 027c1422de Fixes issue #1549 corrected CFormatter::sizeFormat
translations for sizeFormat changed to choice format.
improved number formatting
fixed translations
2012-11-28 17:05:19 +01:00

77 lines
2.8 KiB
PHP

<?php
class CFormatterTest extends CTestCase
{
/**
* Test formatting size numbers in bytes, kilobytes, ...
*/
public function testSizeFormat()
{
$formatter = new CFormatter();
Yii::app()->language = 'en';
$this->assertEquals('1 byte', $formatter->formatSize(1, true));
$this->assertEquals('10 bytes', $formatter->formatSize(10, true));
$this->assertEquals('1 kilobyte', $formatter->formatSize(1024, true));
$this->assertEquals('1.5 kilobytes', $formatter->formatSize(1536, true));
$this->assertEquals('1.51 kilobytes', $formatter->formatSize(1550, true));
$formatter->sizeFormat['decimals']=3;
$this->assertEquals('1.514 kilobytes', $formatter->formatSize(1550, true));
$formatter->sizeFormat['decimals']=4;
$this->assertEquals('1.5137 kilobytes', $formatter->formatSize(1550, true));
$this->assertEquals('1 B', $formatter->formatSize(1, false));
$this->assertEquals('10 B', $formatter->formatSize(10, false));
$this->assertEquals('1 KB', $formatter->formatSize(1024, false));
$this->assertEquals('1.5 KB', $formatter->formatSize(1536, false));
$this->assertEquals('1 byte', $formatter->formatSize(1, true));
$this->assertEquals('1 kilobyte', $formatter->formatSize(1024, true));
$this->assertEquals('1 megabyte', $formatter->formatSize(1024 * 1024, true));
$this->assertEquals('1 gigabyte', $formatter->formatSize(1024 * 1024 * 1024, true));
$this->assertEquals('1 terabyte', $formatter->formatSize(1024 * 1024 * 1024 * 1024, true));
Yii::app()->language = 'de';
$formatter->sizeFormat['decimalSeparator']=',';
$this->assertEquals('1 Byte', $formatter->formatSize(1, true));
$this->assertEquals('10 Byte', $formatter->formatSize(10, true));
$this->assertEquals('1 Kilobyte', $formatter->formatSize(1024, true));
$this->assertEquals('1,5 Kilobyte', $formatter->formatSize(1536, true));
}
public function languages()
{
return array(
array('cs'),
array('de'),
array('ja'),
array('kk'),
array('ru'),
array('sk'),
array('uk'),
);
}
/**
* This test is to check whether messages get actually translated to non-english
*
* @dataProvider languages
* @param $language
*/
public function testSizeFormatTranslation($language)
{
$formatter = new CFormatter();
Yii::app()->language = $language;
$this->assertNotEquals('1 byte', $formatter->formatSize(1, true));
$this->assertNotEquals('1 kilobyte', $formatter->formatSize(1024, true));
$this->assertNotEquals('1 megabyte', $formatter->formatSize(1024 * 1024, true));
$this->assertNotEquals('1 gigabyte', $formatter->formatSize(1024 * 1024 * 1024, true));
$this->assertNotEquals('1 terabyte', $formatter->formatSize(1024 * 1024 * 1024 * 1024, true));
// test sizeformat works with non integers
$formatter->sizeFormat['decimals']=4;
$this->assertNotEquals('1.5137 kilobytes', $formatter->formatSize(1550, true));
}
}