<?php 
use \Punic\Misc; 
 
class BrowserLocaleTest extends PHPUnit_Framework_TestCase 
{ 
    public function testBrowserLocales() 
    { 
        @putenv('HTTP_ACCEPT_LANGUAGE=en'); 
        $locales = Misc::getBrowserLocales(true); 
        $this->assertSame(array('en' => 1), $locales); 
        @putenv('HTTP_ACCEPT_LANGUAGE='); 
    } 
 
    public function testBrowserLocalesServer() 
    { 
        $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'en'; 
        $locales = Misc::getBrowserLocales(true); 
        $this->assertSame(array('en' => 1), $locales);         
    } 
 
    public function providerParseHttpAcceptLanguage() 
    { 
        return array( 
            array('helloworld', array()), 
            array('en', array('en' => 1)), 
            array('EN-invalidTerritoryCode', array('en' => 1)), 
            array('en_US', array('en-US' => 1)), 
            array('en_US-GB', array('en-US' => 1, 'en-GB' => 1)), 
            array('zh-hans', array('zh-Hans' => 1)), 
            array('zh-hans-invalid', array('zh-Hans' => 1)), 
            array('En-invalidTerritoryCode, zh-hAnS-invalidTerritoryCode', array('en' => 1, 'zh-Hans' => 1)), 
            array('en-us,en;q=0.8,es-cl;q=0.5,zh-cn;q=0.3', array('en-US' => 1, 'en' => 0.8, 'es-CL' => 0.5, 'zh-CN' => 0.3)), 
            array('helloworld,en-US;q=0.8,en;q=0.6,de-CH;q=0.4,de;q=0.2', array('en-US' => 0.8, 'en' => 0.6, 'de-CH' => 0.4, 'de' => 0.2)), 
            array(' it ;  q = 0.1 ', array('it' => 0.1)), 
        ); 
    } 
 
    /** 
     * @dataProvider providerParseHttpAcceptLanguage 
     */ 
    public function testParseHttpAcceptLanguage($httpAcceptLanguages, $expected) 
    { 
        $keys = array_keys($expected); 
        sort($keys); 
        $parsed = Misc::parseHttpAcceptLanguage($httpAcceptLanguages); 
        $parsedKeys = array_keys($parsed); 
        sort($parsedKeys); 
        $this->assertEquals($keys, $parsedKeys); 
        foreach ($keys as $key) { 
            $this->assertEquals($expected[$key], $parsed[$key]); 
        } 
    } 
} 
 
 |