<?php 
use \Punic\Unit; 
 
class UnitTest extends PHPUnit_Framework_TestCase 
{ 
 
    public function providerFormat() 
    { 
        return array( 
            array( 
                '1 millisecond', 
                array(1, 'millisecond', 'long', 'en') 
            ), 
            array( 
                '1 millisecond', 
                array(1, 'duration/millisecond', 'long', 'en') 
            ), 
            array( 
                '2 milliseconds', 
                array(2, 'millisecond', 'long', 'en') 
            ), 
            array( 
                '0 milliseconds', 
                array(0, 'millisecond', 'long', 'en') 
            ), 
            array( 
                '0 milliseconde', 
                array(0, 'millisecond', 'long', 'fr') 
            ), 
            array( 
                '1 milliseconde', 
                array(1, 'millisecond', 'long', 'fr') 
            ), 
            array( 
                '2 millisecondes', 
                array(2, 'millisecond', 'long', 'fr') 
            ), 
            array( 
                '2 ms', 
                array(2, 'millisecond', 'short', 'en') 
            ), 
            array( 
                '2ms', 
                array(2, 'millisecond', 'narrow', 'en') 
            ), 
            array( 
                '0.2ms', 
                array(.2, 'millisecond', 'narrow', 'en') 
            ), 
            array( 
                '2.0ms', 
                array('2.0', 'millisecond', 'narrow', 'en') 
            ), 
            array( 
                '2.0 milliseconds', 
                array(2, 'millisecond', 'long,1', 'en') 
            ), 
            array( 
                '2.0 milliseconds', 
                array(2., 'millisecond', 'long,1', 'en') 
            ), 
            array( 
                '2.0 milliseconds', 
                array('2.', 'millisecond', 'long,1', 'en') 
            ), 
            array( 
                '2.0 milliseconds', 
                array('2.0123', 'millisecond', 'long,1', 'en') 
            ), 
            array( 
                '2.0 ms', 
                array('2.0123', 'millisecond', '1', 'en') 
            ), 
            array( 
                '2.0 ms', 
                array('2.0123', 'millisecond', 1, 'en') 
            ), 
            array( 
                '2,0 millisecondi', 
                array('2.0123', 'millisecond', 'long,1', 'it') 
            ), 
        ); 
    } 
 
    /** 
     * test format 
     * @dataProvider providerFormat 
     */ 
    public function testFormat($result, $parameters) 
    { 
        $this->assertSame( 
            $result, 
            Unit::format($parameters[0], $parameters[1], $parameters[2], $parameters[3]) 
        ); 
    } 
 
    public function testValueNotInListExceptionGetValue() 
    { 
        try { 
            Unit::format(2, 'milisecond', 'does-not-exist'); 
        } catch (\Punic\Exception\ValueNotInList $ex) { 
            $this->assertSame('does-not-exist', $ex->getValue()); 
            $this->assertSame(array('long', 'short', 'narrow'), $ex->getAllowedValues()); 
        } 
    } 
 
    public function testValueNotInListException() 
    { 
        $this->setExpectedException('\\Punic\\Exception\\ValueNotInList'); 
        Unit::format(2, 'milisecond', 'does-not-exist'); 
    } 
 
    public function testInvalidUnit() 
    { 
        $this->setExpectedException('\\Punic\\Exception\\ValueNotInList'); 
        Unit::format(2, 'invalid-unit'); 
    } 
 
} 
 
 |