xref: /webtrees/tests/app/SurnameTradition/PaternalSurnameTraditionTest.php (revision 9b802b22a7b94d1d30e0433dd46fe641f3757505)
1323788f4SGreg Roach<?php
2323788f4SGreg Roach/**
3323788f4SGreg Roach * webtrees: online genealogy
48fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team
5323788f4SGreg Roach * This program is free software: you can redistribute it and/or modify
6323788f4SGreg Roach * it under the terms of the GNU General Public License as published by
7323788f4SGreg Roach * the Free Software Foundation, either version 3 of the License, or
8323788f4SGreg Roach * (at your option) any later version.
9323788f4SGreg Roach * This program is distributed in the hope that it will be useful,
10323788f4SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
11323788f4SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12323788f4SGreg Roach * GNU General Public License for more details.
13323788f4SGreg Roach * You should have received a copy of the GNU General Public License
14323788f4SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>.
15323788f4SGreg Roach */
16e7f56f2aSGreg Roachdeclare(strict_types=1);
17e7f56f2aSGreg Roach
1884e2cf4eSGreg Roachnamespace Fisharebest\Webtrees\SurnameTradition;
19c1010edaSGreg Roach
20323788f4SGreg Roach/**
21323788f4SGreg Roach * Test harness for the class PaternalSurnameTradition
22323788f4SGreg Roach */
2384e2cf4eSGreg Roachclass PaternalSurnameTraditionTest extends \Fisharebest\Webtrees\TestCase
24c1010edaSGreg Roach{
25323788f4SGreg Roach    /** @var SurnameTraditionInterface */
26323788f4SGreg Roach    private $surname_tradition;
27323788f4SGreg Roach
28323788f4SGreg Roach    /**
29323788f4SGreg Roach     * Prepare the environment for these tests
3052348eb8SGreg Roach     *
3152348eb8SGreg Roach     * @return void
32323788f4SGreg Roach     */
330115bc16SGreg Roach    protected function setUp()
34c1010edaSGreg Roach    {
350115bc16SGreg Roach        parent::setUp();
360115bc16SGreg Roach
37323788f4SGreg Roach        $this->surname_tradition = new PaternalSurnameTradition;
38323788f4SGreg Roach    }
39323788f4SGreg Roach
40323788f4SGreg Roach    /**
41323788f4SGreg Roach     * Test whether married surnames are used
4217d74f3aSGreg Roach     *
4315d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
4452348eb8SGreg Roach     *
4552348eb8SGreg Roach     * @return void
46323788f4SGreg Roach     */
47*9b802b22SGreg Roach    public function testMarriedSurnames(): void
48c1010edaSGreg Roach    {
49323788f4SGreg Roach        $this->assertSame(true, $this->surname_tradition->hasMarriedNames());
50323788f4SGreg Roach    }
51323788f4SGreg Roach
52323788f4SGreg Roach    /**
53c1ec7145SGreg Roach     * Test whether surnames are used
5417d74f3aSGreg Roach     *
5515d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
5652348eb8SGreg Roach     *
5752348eb8SGreg Roach     * @return void
58c1ec7145SGreg Roach     */
59*9b802b22SGreg Roach    public function testSurnames(): void
60c1010edaSGreg Roach    {
61c1ec7145SGreg Roach        $this->assertSame(true, $this->surname_tradition->hasSurnames());
62c1ec7145SGreg Roach    }
63c1ec7145SGreg Roach
64c1ec7145SGreg Roach    /**
65323788f4SGreg Roach     * Test new son names
6617d74f3aSGreg Roach     *
6715d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
6852348eb8SGreg Roach     *
6952348eb8SGreg Roach     * @return void
70323788f4SGreg Roach     */
71*9b802b22SGreg Roach    public function testNewSonNames(): void
72c1010edaSGreg Roach    {
73323788f4SGreg Roach        $this->assertSame(
74c1010edaSGreg Roach            [
75c1010edaSGreg Roach                'NAME' => '/White/',
76c1010edaSGreg Roach                'SURN' => 'White',
77c1010edaSGreg Roach            ],
78323788f4SGreg Roach            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'M')
79323788f4SGreg Roach        );
80323788f4SGreg Roach    }
81323788f4SGreg Roach
82323788f4SGreg Roach    /**
83323788f4SGreg Roach     * Test new daughter names
8417d74f3aSGreg Roach     *
8515d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
8652348eb8SGreg Roach     *
8752348eb8SGreg Roach     * @return void
88323788f4SGreg Roach     */
89*9b802b22SGreg Roach    public function testNewDaughterNames(): void
90c1010edaSGreg Roach    {
91323788f4SGreg Roach        $this->assertSame(
92c1010edaSGreg Roach            [
93c1010edaSGreg Roach                'NAME' => '/White/',
94c1010edaSGreg Roach                'SURN' => 'White',
95c1010edaSGreg Roach            ],
96323788f4SGreg Roach            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'F')
97323788f4SGreg Roach        );
98323788f4SGreg Roach    }
99323788f4SGreg Roach
100323788f4SGreg Roach    /**
101323788f4SGreg Roach     * Test new child names
10217d74f3aSGreg Roach     *
10315d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
10452348eb8SGreg Roach     *
10552348eb8SGreg Roach     * @return void
106323788f4SGreg Roach     */
107*9b802b22SGreg Roach    public function testNewChildNames(): void
108c1010edaSGreg Roach    {
109323788f4SGreg Roach        $this->assertSame(
110c1010edaSGreg Roach            [
111c1010edaSGreg Roach                'NAME' => '/White/',
112c1010edaSGreg Roach                'SURN' => 'White',
113c1010edaSGreg Roach            ],
114323788f4SGreg Roach            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'U')
115323788f4SGreg Roach        );
116323788f4SGreg Roach    }
117323788f4SGreg Roach
118323788f4SGreg Roach    /**
119323788f4SGreg Roach     * Test new child names
12017d74f3aSGreg Roach     *
12115d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
12252348eb8SGreg Roach     *
12352348eb8SGreg Roach     * @return void
124323788f4SGreg Roach     */
125*9b802b22SGreg Roach    public function testNewChildNamesWithSpfx(): void
126c1010edaSGreg Roach    {
127323788f4SGreg Roach        $this->assertSame(
128c1010edaSGreg Roach            [
129c1010edaSGreg Roach                'NAME' => '/de White/',
130c1010edaSGreg Roach                'SPFX' => 'de',
131c1010edaSGreg Roach                'SURN' => 'White',
132c1010edaSGreg Roach            ],
133323788f4SGreg Roach            $this->surname_tradition->newChildNames('John /de White/', 'Mary /van Black/', 'U')
134323788f4SGreg Roach        );
135323788f4SGreg Roach    }
136323788f4SGreg Roach
137323788f4SGreg Roach    /**
1388caf8226SGreg Roach     * Test new child names
1398caf8226SGreg Roach     *
14015d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
14152348eb8SGreg Roach     *
14252348eb8SGreg Roach     * @return void
1438caf8226SGreg Roach     */
144*9b802b22SGreg Roach    public function testNewChildNamesWithMultipleSpfx(): void
145c1010edaSGreg Roach    {
1468caf8226SGreg Roach        $this->assertSame(
147c1010edaSGreg Roach            [
148c1010edaSGreg Roach                'NAME' => '/van der White/',
149c1010edaSGreg Roach                'SPFX' => 'van der',
150c1010edaSGreg Roach                'SURN' => 'White',
151c1010edaSGreg Roach            ],
1528caf8226SGreg Roach            $this->surname_tradition->newChildNames('John /van der White/', 'Mary /van Black/', 'U')
1538caf8226SGreg Roach        );
1548caf8226SGreg Roach    }
1558caf8226SGreg Roach
1568caf8226SGreg Roach    /**
1579797fe2eSGreg Roach     * Test new child names
1589797fe2eSGreg Roach     *
15915d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
16052348eb8SGreg Roach     *
16152348eb8SGreg Roach     * @return void
1629797fe2eSGreg Roach     */
163*9b802b22SGreg Roach    public function testNewChildNamesWithDutchSpfx(): void
164c1010edaSGreg Roach    {
1659797fe2eSGreg Roach        $this->assertSame(
166c1010edaSGreg Roach            [
167c1010edaSGreg Roach                'NAME' => '/\'t White/',
168c1010edaSGreg Roach                'SPFX' => '\'t',
169c1010edaSGreg Roach                'SURN' => 'White',
170c1010edaSGreg Roach            ],
1719797fe2eSGreg Roach            $this->surname_tradition->newChildNames('John /\'t White/', 'Mary /van Black/', 'U')
1729797fe2eSGreg Roach        );
1739797fe2eSGreg Roach        $this->assertSame(
174c1010edaSGreg Roach            [
175c1010edaSGreg Roach                'NAME' => '/’t White/',
176c1010edaSGreg Roach                'SPFX' => '’t',
177c1010edaSGreg Roach                'SURN' => 'White',
178c1010edaSGreg Roach            ],
1799797fe2eSGreg Roach            $this->surname_tradition->newChildNames('John /’t White/', 'Mary /van Black/', 'U')
1809797fe2eSGreg Roach        );
1819797fe2eSGreg Roach    }
1829797fe2eSGreg Roach
1839797fe2eSGreg Roach    /**
1849797fe2eSGreg Roach     * Test new child names
1859797fe2eSGreg Roach     *
18615d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
18752348eb8SGreg Roach     *
18852348eb8SGreg Roach     * @return void
1899797fe2eSGreg Roach     */
190*9b802b22SGreg Roach    public function testNewChildNamesWithMultipleDutchSpfx(): void
191c1010edaSGreg Roach    {
1929797fe2eSGreg Roach        $this->assertSame(
193c1010edaSGreg Roach            [
194c1010edaSGreg Roach                'NAME' => '/van \'t White/',
195c1010edaSGreg Roach                'SPFX' => 'van \'t',
196c1010edaSGreg Roach                'SURN' => 'White',
197c1010edaSGreg Roach            ],
1989797fe2eSGreg Roach            $this->surname_tradition->newChildNames('John /van \'t White/', 'Mary /van Black/', 'U')
1999797fe2eSGreg Roach        );
2009797fe2eSGreg Roach        $this->assertSame(
201c1010edaSGreg Roach            [
202c1010edaSGreg Roach                'NAME' => '/van ’t White/',
203c1010edaSGreg Roach                'SPFX' => 'van ’t',
204c1010edaSGreg Roach                'SURN' => 'White',
205c1010edaSGreg Roach            ],
2069797fe2eSGreg Roach            $this->surname_tradition->newChildNames('John /van ’t White/', 'Mary /van Black/', 'U')
2079797fe2eSGreg Roach        );
2089797fe2eSGreg Roach    }
2099797fe2eSGreg Roach
2109797fe2eSGreg Roach    /**
211323788f4SGreg Roach     * Test new father names
21217d74f3aSGreg Roach     *
21315d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
21452348eb8SGreg Roach     *
21552348eb8SGreg Roach     * @return void
216323788f4SGreg Roach     */
217*9b802b22SGreg Roach    public function testNewFatherNames(): void
218c1010edaSGreg Roach    {
219323788f4SGreg Roach        $this->assertSame(
220c1010edaSGreg Roach            [
221c1010edaSGreg Roach                'NAME' => '/White/',
222c1010edaSGreg Roach                'SURN' => 'White',
223c1010edaSGreg Roach            ],
224323788f4SGreg Roach            $this->surname_tradition->newParentNames('John /White/', 'M')
225323788f4SGreg Roach        );
226323788f4SGreg Roach    }
227323788f4SGreg Roach
228323788f4SGreg Roach    /**
229323788f4SGreg Roach     * Test new mother names
23017d74f3aSGreg Roach     *
23115d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
23252348eb8SGreg Roach     *
23352348eb8SGreg Roach     * @return void
234323788f4SGreg Roach     */
235*9b802b22SGreg Roach    public function testNewMotherNames(): void
236c1010edaSGreg Roach    {
237323788f4SGreg Roach        $this->assertSame(
238c1010edaSGreg Roach            [
239c1010edaSGreg Roach                'NAME'   => '//',
240c1010edaSGreg Roach                '_MARNM' => '/White/',
241c1010edaSGreg Roach            ],
242323788f4SGreg Roach            $this->surname_tradition->newParentNames('John /White/', 'F')
243323788f4SGreg Roach        );
244323788f4SGreg Roach    }
245323788f4SGreg Roach
246323788f4SGreg Roach    /**
247323788f4SGreg Roach     * Test new parent names
24817d74f3aSGreg Roach     *
24915d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
25052348eb8SGreg Roach     *
25152348eb8SGreg Roach     * @return void
252323788f4SGreg Roach     */
253*9b802b22SGreg Roach    public function testNewParentNames(): void
254c1010edaSGreg Roach    {
255323788f4SGreg Roach        $this->assertSame(
25613abd6f3SGreg Roach            ['NAME' => '//'],
257323788f4SGreg Roach            $this->surname_tradition->newParentNames('John /White/', 'U')
258323788f4SGreg Roach        );
259323788f4SGreg Roach    }
260323788f4SGreg Roach
261323788f4SGreg Roach    /**
262323788f4SGreg Roach     * Test new husband names
26317d74f3aSGreg Roach     *
26415d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
26552348eb8SGreg Roach     *
26652348eb8SGreg Roach     * @return void
267323788f4SGreg Roach     */
268*9b802b22SGreg Roach    public function testNewHusbandNames(): void
269c1010edaSGreg Roach    {
270323788f4SGreg Roach        $this->assertSame(
27113abd6f3SGreg Roach            ['NAME' => '//'],
272323788f4SGreg Roach            $this->surname_tradition->newSpouseNames('Mary /Black/', 'M')
273323788f4SGreg Roach        );
274323788f4SGreg Roach    }
275323788f4SGreg Roach
276323788f4SGreg Roach    /**
277323788f4SGreg Roach     * Test new wife names
27817d74f3aSGreg Roach     *
27915d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
28052348eb8SGreg Roach     *
28152348eb8SGreg Roach     * @return void
282323788f4SGreg Roach     */
283*9b802b22SGreg Roach    public function testNewWifeNames(): void
284c1010edaSGreg Roach    {
285323788f4SGreg Roach        $this->assertSame(
286c1010edaSGreg Roach            [
287c1010edaSGreg Roach                'NAME'   => '//',
288c1010edaSGreg Roach                '_MARNM' => '/White/',
289c1010edaSGreg Roach            ],
290323788f4SGreg Roach            $this->surname_tradition->newSpouseNames('John /White/', 'F')
291323788f4SGreg Roach        );
292323788f4SGreg Roach    }
293323788f4SGreg Roach
294323788f4SGreg Roach    /**
2955b2de99fSGreg Roach     * Test new wife names
2965b2de99fSGreg Roach     *
29715d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
29852348eb8SGreg Roach     *
29952348eb8SGreg Roach     * @return void
3005b2de99fSGreg Roach     */
301*9b802b22SGreg Roach    public function testNewWifeNamesWithSpfx(): void
302c1010edaSGreg Roach    {
3035b2de99fSGreg Roach        $this->assertSame(
304c1010edaSGreg Roach            [
305c1010edaSGreg Roach                'NAME'   => '//',
306c1010edaSGreg Roach                '_MARNM' => '/van der White/',
307c1010edaSGreg Roach            ],
3085b2de99fSGreg Roach            $this->surname_tradition->newSpouseNames('John /van der White/', 'F')
3095b2de99fSGreg Roach        );
3105b2de99fSGreg Roach    }
3115b2de99fSGreg Roach
3125b2de99fSGreg Roach    /**
313323788f4SGreg Roach     * Test new spouse names
31417d74f3aSGreg Roach     *
31515d603e7SGreg Roach     * @covers \Fisharebest\Webtrees\SurnameTradition\PaternalSurnameTradition
31652348eb8SGreg Roach     *
31752348eb8SGreg Roach     * @return void
318323788f4SGreg Roach     */
319*9b802b22SGreg Roach    public function testNewSpouseNames(): void
320c1010edaSGreg Roach    {
321323788f4SGreg Roach        $this->assertSame(
32213abd6f3SGreg Roach            ['NAME' => '//'],
323323788f4SGreg Roach            $this->surname_tradition->newSpouseNames('Chris /Green/', 'U')
324323788f4SGreg Roach        );
325323788f4SGreg Roach    }
326323788f4SGreg Roach}
327