You are here

class XliffFileLoaderTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/translation/Tests/Loader/XliffFileLoaderTest.php \Symfony\Component\Translation\Tests\Loader\XliffFileLoaderTest

Hierarchy

  • class \Symfony\Component\Translation\Tests\Loader\XliffFileLoaderTest extends \Symfony\Component\Translation\Tests\Loader\PHPUnit_Framework_TestCase

Expanded class hierarchy of XliffFileLoaderTest

File

vendor/symfony/translation/Tests/Loader/XliffFileLoaderTest.php, line 17

Namespace

Symfony\Component\Translation\Tests\Loader
View source
class XliffFileLoaderTest extends \PHPUnit_Framework_TestCase {
  public function testLoad() {
    $loader = new XliffFileLoader();
    $resource = __DIR__ . '/../fixtures/resources.xlf';
    $catalogue = $loader
      ->load($resource, 'en', 'domain1');
    $this
      ->assertEquals('en', $catalogue
      ->getLocale());
    $this
      ->assertEquals(array(
      new FileResource($resource),
    ), $catalogue
      ->getResources());
    $this
      ->assertSame(array(), libxml_get_errors());
    $this
      ->assertContainsOnly('string', $catalogue
      ->all('domain1'));
  }
  public function testLoadWithInternalErrorsEnabled() {
    libxml_use_internal_errors(true);
    $this
      ->assertSame(array(), libxml_get_errors());
    $loader = new XliffFileLoader();
    $resource = __DIR__ . '/../fixtures/resources.xlf';
    $catalogue = $loader
      ->load($resource, 'en', 'domain1');
    $this
      ->assertEquals('en', $catalogue
      ->getLocale());
    $this
      ->assertEquals(array(
      new FileResource($resource),
    ), $catalogue
      ->getResources());
    $this
      ->assertSame(array(), libxml_get_errors());
  }
  public function testLoadWithResname() {
    $loader = new XliffFileLoader();
    $catalogue = $loader
      ->load(__DIR__ . '/../fixtures/resname.xlf', 'en', 'domain1');
    $this
      ->assertEquals(array(
      'foo' => 'bar',
      'bar' => 'baz',
      'baz' => 'foo',
    ), $catalogue
      ->all('domain1'));
  }
  public function testIncompleteResource() {
    $loader = new XliffFileLoader();
    $catalogue = $loader
      ->load(__DIR__ . '/../fixtures/resources.xlf', 'en', 'domain1');
    $this
      ->assertEquals(array(
      'foo' => 'bar',
      'extra' => 'extra',
      'key' => '',
      'test' => 'with',
    ), $catalogue
      ->all('domain1'));
  }
  public function testEncoding() {
    if (!function_exists('iconv') && !function_exists('mb_convert_encoding')) {
      $this
        ->markTestSkipped('The iconv and mbstring extensions are not available.');
    }
    $loader = new XliffFileLoader();
    $catalogue = $loader
      ->load(__DIR__ . '/../fixtures/encoding.xlf', 'en', 'domain1');
    $this
      ->assertEquals(utf8_decode('föö'), $catalogue
      ->get('bar', 'domain1'));
    $this
      ->assertEquals(utf8_decode('bär'), $catalogue
      ->get('foo', 'domain1'));
    $this
      ->assertEquals(array(
      'notes' => array(
        array(
          'content' => utf8_decode('bäz'),
        ),
      ),
    ), $catalogue
      ->getMetadata('foo', 'domain1'));
  }

  /**
   * @expectedException \Symfony\Component\Translation\Exception\InvalidResourceException
   */
  public function testLoadInvalidResource() {
    $loader = new XliffFileLoader();
    $loader
      ->load(__DIR__ . '/../fixtures/resources.php', 'en', 'domain1');
  }

  /**
   * @expectedException \Symfony\Component\Translation\Exception\InvalidResourceException
   */
  public function testLoadResourceDoesNotValidate() {
    $loader = new XliffFileLoader();
    $loader
      ->load(__DIR__ . '/../fixtures/non-valid.xlf', 'en', 'domain1');
  }

  /**
   * @expectedException \Symfony\Component\Translation\Exception\NotFoundResourceException
   */
  public function testLoadNonExistingResource() {
    $loader = new XliffFileLoader();
    $resource = __DIR__ . '/../fixtures/non-existing.xlf';
    $loader
      ->load($resource, 'en', 'domain1');
  }

  /**
   * @expectedException \Symfony\Component\Translation\Exception\InvalidResourceException
   */
  public function testLoadThrowsAnExceptionIfFileNotLocal() {
    $loader = new XliffFileLoader();
    $resource = 'http://example.com/resources.xlf';
    $loader
      ->load($resource, 'en', 'domain1');
  }

  /**
   * @expectedException        \Symfony\Component\Translation\Exception\InvalidResourceException
   * @expectedExceptionMessage Document types are not allowed.
   */
  public function testDocTypeIsNotAllowed() {
    $loader = new XliffFileLoader();
    $loader
      ->load(__DIR__ . '/../fixtures/withdoctype.xlf', 'en', 'domain1');
  }
  public function testParseEmptyFile() {
    $loader = new XliffFileLoader();
    $resource = __DIR__ . '/../fixtures/empty.xlf';
    $this
      ->setExpectedException('Symfony\\Component\\Translation\\Exception\\InvalidResourceException', sprintf('Unable to load "%s":', $resource));
    $loader
      ->load($resource, 'en', 'domain1');
  }
  public function testLoadNotes() {
    $loader = new XliffFileLoader();
    $catalogue = $loader
      ->load(__DIR__ . '/../fixtures/withnote.xlf', 'en', 'domain1');
    $this
      ->assertEquals(array(
      'notes' => array(
        array(
          'priority' => 1,
          'content' => 'foo',
        ),
      ),
    ), $catalogue
      ->getMetadata('foo', 'domain1'));

    // message without target
    $this
      ->assertEquals(array(
      'notes' => array(
        array(
          'content' => 'bar',
          'from' => 'foo',
        ),
      ),
    ), $catalogue
      ->getMetadata('extra', 'domain1'));

    // message with empty target
    $this
      ->assertEquals(array(
      'notes' => array(
        array(
          'content' => 'baz',
        ),
        array(
          'priority' => 2,
          'from' => 'bar',
          'content' => 'qux',
        ),
      ),
    ), $catalogue
      ->getMetadata('key', 'domain1'));
  }

}

Members