xref: /webtrees/tests/app/SurnameTradition/PaternalSurnameTraditionTest.php (revision 00b1984e374faddab4698e73088f0c964e529b65)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2019 webtrees development team
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18declare(strict_types=1);
19
20namespace Fisharebest\Webtrees\SurnameTradition;
21
22use Fisharebest\Webtrees\TestCase;
23
24/**
25 * Test harness for the class PaternalSurnameTradition
26 */
27class PaternalSurnameTraditionTest extends TestCase
28{
29    /** @var SurnameTraditionInterface */
30    private $surname_tradition;
31
32    /**
33     * Prepare the environment for these tests
34     *
35     * @return void
36     */
37    protected function setUp(): void
38    {
39        parent::setUp();
40
41        $this->surname_tradition = new PaternalSurnameTradition();
42    }
43
44    /**
45     * Test whether married surnames are used
46     *
47     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
48     *
49     * @return void
50     */
51    public function testMarriedSurnames(): void
52    {
53        $this->assertTrue($this->surname_tradition->hasMarriedNames());
54    }
55
56    /**
57     * Test whether surnames are used
58     *
59     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
60     *
61     * @return void
62     */
63    public function testSurnames(): void
64    {
65        $this->assertTrue($this->surname_tradition->hasSurnames());
66    }
67
68    /**
69     * Test new son names
70     *
71     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
72     *
73     * @return void
74     */
75    public function testNewSonNames(): void
76    {
77        $this->assertSame(
78            [
79                'NAME' => '/White/',
80                'SURN' => 'White',
81            ],
82            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'M')
83        );
84    }
85
86    /**
87     * Test new daughter names
88     *
89     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
90     *
91     * @return void
92     */
93    public function testNewDaughterNames(): void
94    {
95        $this->assertSame(
96            [
97                'NAME' => '/White/',
98                'SURN' => 'White',
99            ],
100            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'F')
101        );
102    }
103
104    /**
105     * Test new child names
106     *
107     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
108     *
109     * @return void
110     */
111    public function testNewChildNames(): void
112    {
113        $this->assertSame(
114            [
115                'NAME' => '/White/',
116                'SURN' => 'White',
117            ],
118            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'U')
119        );
120    }
121
122    /**
123     * Test new child names
124     *
125     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
126     *
127     * @return void
128     */
129    public function testNewChildNamesWithSpfx(): void
130    {
131        $this->assertSame(
132            [
133                'NAME' => '/de White/',
134                'SPFX' => 'de',
135                'SURN' => 'White',
136            ],
137            $this->surname_tradition->newChildNames('John /de White/', 'Mary /van Black/', 'U')
138        );
139    }
140
141    /**
142     * Test new child names
143     *
144     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
145     *
146     * @return void
147     */
148    public function testNewChildNamesWithMultipleSpfx(): void
149    {
150        $this->assertSame(
151            [
152                'NAME' => '/van der White/',
153                'SPFX' => 'van der',
154                'SURN' => 'White',
155            ],
156            $this->surname_tradition->newChildNames('John /van der White/', 'Mary /van Black/', 'U')
157        );
158    }
159
160    /**
161     * Test new child names
162     *
163     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
164     *
165     * @return void
166     */
167    public function testNewChildNamesWithDutchSpfx(): void
168    {
169        $this->assertSame(
170            [
171                'NAME' => '/\'t White/',
172                'SPFX' => '\'t',
173                'SURN' => 'White',
174            ],
175            $this->surname_tradition->newChildNames('John /\'t White/', 'Mary /van Black/', 'U')
176        );
177        $this->assertSame(
178            [
179                'NAME' => '/’t White/',
180                'SPFX' => '’t',
181                'SURN' => 'White',
182            ],
183            $this->surname_tradition->newChildNames('John /’t White/', 'Mary /van Black/', 'U')
184        );
185    }
186
187    /**
188     * Test new child names
189     *
190     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
191     *
192     * @return void
193     */
194    public function testNewChildNamesWithMultipleDutchSpfx(): void
195    {
196        $this->assertSame(
197            [
198                'NAME' => '/van \'t White/',
199                'SPFX' => 'van \'t',
200                'SURN' => 'White',
201            ],
202            $this->surname_tradition->newChildNames('John /van \'t White/', 'Mary /van Black/', 'U')
203        );
204        $this->assertSame(
205            [
206                'NAME' => '/van ’t White/',
207                'SPFX' => 'van ’t',
208                'SURN' => 'White',
209            ],
210            $this->surname_tradition->newChildNames('John /van ’t White/', 'Mary /van Black/', 'U')
211        );
212    }
213
214    /**
215     * Test new father names
216     *
217     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
218     *
219     * @return void
220     */
221    public function testNewFatherNames(): void
222    {
223        $this->assertSame(
224            [
225                'NAME' => '/White/',
226                'SURN' => 'White',
227            ],
228            $this->surname_tradition->newParentNames('John /White/', 'M')
229        );
230    }
231
232    /**
233     * Test new mother names
234     *
235     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
236     *
237     * @return void
238     */
239    public function testNewMotherNames(): void
240    {
241        $this->assertSame(
242            [
243                'NAME'   => '//',
244                '_MARNM' => '/White/',
245            ],
246            $this->surname_tradition->newParentNames('John /White/', 'F')
247        );
248    }
249
250    /**
251     * Test new parent names
252     *
253     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
254     *
255     * @return void
256     */
257    public function testNewParentNames(): void
258    {
259        $this->assertSame(
260            ['NAME' => '//'],
261            $this->surname_tradition->newParentNames('John /White/', 'U')
262        );
263    }
264
265    /**
266     * Test new husband names
267     *
268     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
269     *
270     * @return void
271     */
272    public function testNewHusbandNames(): void
273    {
274        $this->assertSame(
275            ['NAME' => '//'],
276            $this->surname_tradition->newSpouseNames('Mary /Black/', 'M')
277        );
278    }
279
280    /**
281     * Test new wife names
282     *
283     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
284     *
285     * @return void
286     */
287    public function testNewWifeNames(): void
288    {
289        $this->assertSame(
290            [
291                'NAME'   => '//',
292                '_MARNM' => '/White/',
293            ],
294            $this->surname_tradition->newSpouseNames('John /White/', 'F')
295        );
296    }
297
298    /**
299     * Test new wife names
300     *
301     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
302     *
303     * @return void
304     */
305    public function testNewWifeNamesWithSpfx(): void
306    {
307        $this->assertSame(
308            [
309                'NAME'   => '//',
310                '_MARNM' => '/van der White/',
311            ],
312            $this->surname_tradition->newSpouseNames('John /van der White/', 'F')
313        );
314    }
315
316    /**
317     * Test new spouse names
318     *
319     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
320     *
321     * @return void
322     */
323    public function testNewSpouseNames(): void
324    {
325        $this->assertSame(
326            ['NAME' => '//'],
327            $this->surname_tradition->newSpouseNames('Chris /Green/', 'U')
328        );
329    }
330}
331