forked from php-gettext/Gettext
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHeadersTest.php
More file actions
108 lines (83 loc) · 3.3 KB
/
HeadersTest.php
File metadata and controls
108 lines (83 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
declare(strict_types = 1);
namespace Gettext\Tests;
use Gettext\Headers;
use InvalidArgumentException;
use PHPUnit\Framework\TestCase;
class HeadersTest extends TestCase
{
public function testHeaders(): void
{
$headers = new Headers();
$this->assertSame([], $headers->jsonSerialize());
$this->assertCount(0, $headers);
$headers->set('foo', 'bar');
$this->assertSame(['foo' => 'bar'], $headers->jsonSerialize());
$this->assertCount(1, $headers);
$this->assertSame('bar', $headers->get('foo'));
$headers->set('foo', 'bar2');
$this->assertSame(['foo' => 'bar2'], $headers->jsonSerialize());
$this->assertCount(1, $headers);
$this->assertSame('bar2', $headers->get('foo'));
$headers->set('foo2', 'bar2');
$this->assertSame(['foo' => 'bar2', 'foo2' => 'bar2'], $headers->jsonSerialize());
$this->assertCount(2, $headers);
$this->assertSame('bar2', $headers->get('foo2'));
$headers->delete('foo2');
$this->assertCount(1, $headers);
$headers->clear();
$this->assertCount(0, $headers);
}
public function testDomain(): void
{
$headers = new Headers();
$headers->setDomain('foo');
$this->assertCount(1, $headers);
$this->assertSame('X-Domain', Headers::HEADER_DOMAIN);
$this->assertSame('foo', $headers->get(Headers::HEADER_DOMAIN));
$this->assertSame('foo', $headers->getDomain());
}
public function testLanguage(): void
{
$headers = new Headers();
$headers->setLanguage('gl_ES');
$this->assertCount(1, $headers);
$this->assertSame('Language', Headers::HEADER_LANGUAGE);
$this->assertSame('gl_ES', $headers->get(Headers::HEADER_LANGUAGE));
$this->assertSame('gl_ES', $headers->getLanguage());
}
public function testInvalidLanguage(): void
{
$this->expectException(InvalidArgumentException::class);
$headers = new Headers();
$headers->setPluralForm(1, 'foo');
}
public function testPluralForm(): void
{
$headers = new Headers();
$headers->setPluralForm(2, '(n=1)');
$this->assertCount(1, $headers);
$this->assertSame('Plural-Forms', Headers::HEADER_PLURAL);
$this->assertSame('nplurals=2; plural=(n=1);', $headers->get(Headers::HEADER_PLURAL));
$this->assertSame([2, '(n=1)'], $headers->getPluralForm());
}
public function testMergeHeaders(): void
{
$headers1 = new Headers(['X-Domain' => 'foo', 'Language' => 'gl_ES']);
$headers2 = new Headers(['Translator' => 'Oscar Otero', 'Language' => 'ru']);
$merged = $headers1->mergeWith($headers2);
$this->assertCount(3, $merged);
$this->assertSame('foo', $merged->get('X-Domain'));
$this->assertSame('Oscar Otero', $merged->get('Translator'));
$this->assertSame('ru', $merged->get('Language'));
$this->assertNotSame($merged, $headers1);
$this->assertNotSame($merged, $headers2);
}
public function testCreateFromState(): void
{
$state = ['headers' => ['X-Domain' => 'foo']];
$headers = Headers::__set_state($state);
$this->assertCount(1, $headers);
$this->assertSame('foo', $headers->get('X-Domain'));
}
}