xref: /webtrees/tests/app/SurnameTradition/MatrilinealSurnameTraditionTest.php (revision 99125a335d0be11b975e213c69fc4ede0c5303f1)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2021 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 <https://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 MatrilinenalSurnameTradition
26 */
27class MatrilinealSurnameTraditionTest extends TestCase
28{
29    private SurnameTraditionInterface $surname_tradition;
30
31    /**
32     * Prepare the environment for these tests
33     *
34     * @return void
35     */
36    protected function setUp(): void
37    {
38        parent::setUp();
39
40        $this->surname_tradition = new MatrilinealSurnameTradition();
41    }
42
43    /**
44     * Test whether married surnames are used
45     *
46     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
47     *
48     * @return void
49     */
50    public function testMarriedSurnames(): void
51    {
52        self::assertFalse($this->surname_tradition->hasMarriedNames());
53    }
54
55    /**
56     * Test whether surnames are used
57     *
58     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
59     *
60     * @return void
61     */
62    public function testSurnames(): void
63    {
64        self::assertTrue($this->surname_tradition->hasSurnames());
65    }
66
67    /**
68     * Test new son names
69     *
70     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
71     *
72     * @return void
73     */
74    public function testNewSonNames(): void
75    {
76        self::assertSame(
77            [
78                'NAME' => '/Black/',
79                'SURN' => 'Black',
80            ],
81            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'M')
82        );
83    }
84
85    /**
86     * Test new daughter names
87     *
88     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
89     *
90     * @return void
91     */
92    public function testNewDaughterNames(): void
93    {
94        self::assertSame(
95            [
96                'NAME' => '/Black/',
97                'SURN' => 'Black',
98            ],
99            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'F')
100        );
101    }
102
103    /**
104     * Test new child names
105     *
106     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
107     *
108     * @return void
109     */
110    public function testNewChildNames(): void
111    {
112        self::assertSame(
113            [
114                'NAME' => '/Black/',
115                'SURN' => 'Black',
116            ],
117            $this->surname_tradition->newChildNames('John /White/', 'Mary /Black/', 'U')
118        );
119    }
120
121    /**
122     * Test new child names
123     *
124     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
125     *
126     * @return void
127     */
128    public function testNewChildNamesWithSpfx(): void
129    {
130        self::assertSame(
131            [
132                'NAME' => '/van Black/',
133                'SPFX' => 'van',
134                'SURN' => 'Black',
135            ],
136            $this->surname_tradition->newChildNames('John /de White/', 'Mary /van Black/', 'U')
137        );
138    }
139
140    /**
141     * Test new child names
142     *
143     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
144     *
145     * @return void
146     */
147    public function testNewChildNamesWithNoParentsNames(): void
148    {
149        self::assertSame(
150            ['NAME' => '//'],
151            $this->surname_tradition->newChildNames('', '', 'U')
152        );
153    }
154
155    /**
156     * Test new father names
157     *
158     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
159     *
160     * @return void
161     */
162    public function testNewFatherNames(): void
163    {
164        self::assertSame(
165            ['NAME' => '//'],
166            $this->surname_tradition->newParentNames('John /White/', 'M')
167        );
168    }
169
170    /**
171     * Test new mother names
172     *
173     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
174     *
175     * @return void
176     */
177    public function testNewMotherNames(): void
178    {
179        self::assertSame(
180            [
181                'NAME' => '/White/',
182                'SURN' => 'White',
183            ],
184            $this->surname_tradition->newParentNames('John /White/', 'F')
185        );
186    }
187
188    /**
189     * Test new parent names
190     *
191     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
192     *
193     * @return void
194     */
195    public function testNewParentNames(): void
196    {
197        self::assertSame(
198            ['NAME' => '//'],
199            $this->surname_tradition->newParentNames('John /White/', 'U')
200        );
201    }
202
203    /**
204     * Test new husband names
205     *
206     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
207     *
208     * @return void
209     */
210    public function testNewHusbandNames(): void
211    {
212        self::assertSame(
213            ['NAME' => '//'],
214            $this->surname_tradition->newSpouseNames('Mary /Black/', 'M')
215        );
216    }
217
218    /**
219     * Test new wife names
220     *
221     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
222     *
223     * @return void
224     */
225    public function testNewWifeNames(): void
226    {
227        self::assertSame(
228            ['NAME' => '//'],
229            $this->surname_tradition->newSpouseNames('John /White/', 'F')
230        );
231    }
232
233    /**
234     * Test new spouse names
235     *
236     * @covers \Fisharebest\Webtrees\SurnameTradition\MatrilinealSurnameTradition
237     *
238     * @return void
239     */
240    public function testNewSpouseNames(): void
241    {
242        self::assertSame(
243            ['NAME' => '//'],
244            $this->surname_tradition->newSpouseNames('Chris /Green/', 'U')
245        );
246    }
247}
248