annotate core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php @ 4:a9cd425dd02b

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:11:55 +0000
parents c75dbcec494b
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\Component\Gettext;
Chris@0 4
Chris@0 5 use Drupal\Component\Gettext\PoItem;
Chris@0 6 use Drupal\Component\Gettext\PoStreamWriter;
Chris@0 7 use org\bovigo\vfs\vfsStream;
Chris@0 8 use org\bovigo\vfs\vfsStreamFile;
Chris@0 9 use PHPUnit\Framework\TestCase;
Chris@0 10
Chris@0 11 /**
Chris@0 12 * @coversDefaultClass \Drupal\Component\Gettext\PoStreamWriter
Chris@0 13 * @group Gettext
Chris@0 14 */
Chris@0 15 class PoStreamWriterTest extends TestCase {
Chris@0 16
Chris@0 17 /**
Chris@0 18 * The PO writer object under test.
Chris@0 19 *
Chris@0 20 * @var \Drupal\Component\Gettext\PoStreamWriter
Chris@0 21 */
Chris@0 22 protected $poWriter;
Chris@0 23
Chris@0 24 /**
Chris@0 25 * The mock po file.
Chris@0 26 *
Chris@0 27 * @var \org\bovigo\vfs\vfsStreamFile
Chris@0 28 */
Chris@0 29 protected $poFile;
Chris@0 30
Chris@0 31 /**
Chris@0 32 * {@inheritdoc}
Chris@0 33 */
Chris@0 34 protected function setUp() {
Chris@0 35 parent::setUp();
Chris@0 36
Chris@0 37 $this->poWriter = new PoStreamWriter();
Chris@0 38
Chris@0 39 $root = vfsStream::setup();
Chris@0 40 $this->poFile = new vfsStreamFile('powriter.po');
Chris@0 41 $root->addChild($this->poFile);
Chris@0 42 }
Chris@0 43
Chris@0 44 /**
Chris@0 45 * @covers ::getURI
Chris@0 46 */
Chris@0 47 public function testGetUriException() {
Chris@0 48 if (method_exists($this, 'expectException')) {
Chris@0 49 $this->expectException(\Exception::class, 'No URI set.');
Chris@0 50 }
Chris@0 51 else {
Chris@0 52 $this->setExpectedException(\Exception::class, 'No URI set.');
Chris@0 53 }
Chris@0 54
Chris@0 55 $this->poWriter->getURI();
Chris@0 56 }
Chris@0 57
Chris@0 58 /**
Chris@0 59 * @covers ::writeItem
Chris@0 60 * @dataProvider providerWriteData
Chris@0 61 */
Chris@0 62 public function testWriteItem($poContent, $expected, $long) {
Chris@0 63 if ($long) {
Chris@0 64 if (method_exists($this, 'expectException')) {
Chris@0 65 $this->expectException(\Exception::class, 'Unable to write data:');
Chris@0 66 }
Chris@0 67 else {
Chris@0 68 $this->setExpectedException(\Exception::class, 'Unable to write data:');
Chris@0 69 }
Chris@0 70 }
Chris@0 71
Chris@0 72 // Limit the file system quota to make the write fail on long strings.
Chris@0 73 vfsStream::setQuota(10);
Chris@0 74
Chris@0 75 $this->poWriter->setURI($this->poFile->url());
Chris@0 76 $this->poWriter->open();
Chris@0 77
Chris@0 78 $poItem = $this->prophesize(PoItem::class);
Chris@0 79 $poItem->__toString()->willReturn($poContent);
Chris@0 80
Chris@0 81 $this->poWriter->writeItem($poItem->reveal());
Chris@0 82 $this->poWriter->close();
Chris@0 83 $this->assertEquals(file_get_contents($this->poFile->url()), $expected);
Chris@0 84 }
Chris@0 85
Chris@0 86 /**
Chris@0 87 * @return array
Chris@0 88 * - Content to write.
Chris@0 89 * - Written content.
Chris@0 90 * - Content longer than 10 bytes.
Chris@0 91 */
Chris@0 92 public function providerWriteData() {
Chris@0 93 return [
Chris@0 94 ['', '', FALSE],
Chris@0 95 ["\r\n", "\r\n", FALSE],
Chris@0 96 ['write this if you can', 'write this', TRUE],
Chris@0 97 ['éáíó>&', 'éáíó>&', FALSE],
Chris@0 98 ['éáíó>&<', 'éáíó>&', TRUE],
Chris@0 99 ['中文 890', '中文 890', FALSE],
Chris@0 100 ['中文 89012', '中文 890', TRUE],
Chris@0 101 ];
Chris@0 102 }
Chris@0 103
Chris@0 104 /**
Chris@0 105 * @covers ::close
Chris@0 106 */
Chris@0 107 public function testCloseException() {
Chris@0 108 if (method_exists($this, 'expectException')) {
Chris@0 109 $this->expectException(\Exception::class, 'Cannot close stream that is not open.');
Chris@0 110 }
Chris@0 111 else {
Chris@0 112 $this->setExpectedException(\Exception::class, 'Cannot close stream that is not open.');
Chris@0 113 }
Chris@0 114
Chris@0 115 $this->poWriter->close();
Chris@0 116 }
Chris@0 117
Chris@0 118 }