1<?php
2
3namespace Gettext\Tests;
4
5use Gettext\Translation;
6use Gettext\Translations;
7
8class TranslationTest extends AbstractTest
9{
10    public function testReferences()
11    {
12        $translations = static::get('phpcode/input', 'PhpCode');
13        $translation = $translations->find(null, 'text 10 with plural');
14
15        $this->assertInstanceOf('Gettext\\Translation', $translation);
16
17        $references = $translation->getReferences();
18
19        $this->assertCount(1, $references);
20        $this->assertTrue($translation->hasReferences());
21        $this->assertEquals(static::asset('phpcode/input.php'), $references[0][0]);
22        $this->assertEquals(19, $references[0][1]);
23
24        $translation->deleteReferences();
25        $this->assertCount(0, $translation->getReferences());
26    }
27
28    public function testNoReferences()
29    {
30        $po = static::get('phpcode/input', 'PhpCode')->toPoString(['noLocation' => true]);
31        $translations = Translations::fromPoString($po);
32        $translation = $translations->find(null, 'text 10 with plural');
33
34        $this->assertInstanceOf('Gettext\\Translation', $translation);
35
36        $references = $translation->getReferences();
37
38        $this->assertCount(0, $references);
39        $this->assertFalse($translation->hasReferences());
40    }
41
42    public function testPlurals()
43    {
44        $translations = static::get('phpcode/input', 'PhpCode');
45        $translation = $translations->find(null, 'text 10 with plural');
46
47        $this->assertTrue($translation->hasPlural());
48        $this->assertTrue($translation->is('', 'text 10 with plural'));
49
50        $translation = $translations->find(null, 'text 2');
51
52        $this->assertFalse($translation->hasPlural());
53
54        $translation->setPluralTranslations(['texts 2']);
55
56        $pluralTranslations = $translation->getPluralTranslations();
57        $this->assertCount(1, $pluralTranslations);
58        $this->assertEquals('texts 2', $pluralTranslations[0]);
59    }
60
61    public function testMerge()
62    {
63        $one = new Translation(null, '1 child');
64        $two = new Translation(null, '1 child');
65        $two->setTranslation('1 fillo');
66
67        $one->mergeWith($two);
68
69        $this->assertEquals('1 child', $one->getOriginal());
70        $this->assertEquals('1 fillo', $one->getTranslation());
71    }
72}
73